From 770546269b5481dbf9cc2e811586504a4540ba03 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 16:38:36 -0700 Subject: [PATCH 001/143] feat(wallet-integration): server and API (#362) * feat(wallet-integration): implement server and API * feat(wallet-integration): add a few tests to server. Needs more * refactor(wallet-integration): just use call_data, remove data types * feat(wallet-integration): add frontend type for flexible serving * feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method * refactor(wallet-integration): move to module with pop-cli crate * feat(wallet-integration): server-side error handling, update port to 9090 * refactor(wallet-integration): restructure server for easier use in thread * fix(wallet-integration): remove invalid fn `finish` * docs(wallet-integration): inline comments * test(wallet-integration): unit tests for wallet-integration server. Add new frontend type * feat(wallet-integration): two new routes: error and terminate * refactor(wallet-integration): consistent comments, remove unnecessary code in tests * feat: add TransactionData::new * refactor(wallet-integration: shutdown channel error handling, terminate helper, take_error and TranscationData::new tests * chore: clippy warning --- Cargo.lock | 141 +++++- Cargo.toml | 4 + crates/pop-cli/Cargo.toml | 5 + crates/pop-cli/src/main.rs | 1 + crates/pop-cli/src/wallet_integration.rs | 537 +++++++++++++++++++++++ 5 files changed, 678 insertions(+), 10 deletions(-) create mode 100644 crates/pop-cli/src/wallet_integration.rs diff --git a/Cargo.lock b/Cargo.lock index 1313b0cb..120b6aec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -571,6 +571,61 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tower 0.5.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "backoff" version = "0.4.0" @@ -2678,6 +2733,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.9.4" @@ -2854,7 +2915,7 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", + "tower 0.4.13", "tower-service", "tracing", ] @@ -3367,7 +3428,7 @@ dependencies = [ "serde_json", "thiserror", "tokio", - "tower", + "tower 0.4.13", "tracing", "url", ] @@ -3493,8 +3554,8 @@ dependencies = [ "tokio", "tokio-tungstenite", "tokio-util", - "tower", - "tower-http", + "tower 0.4.13", + "tower-http 0.4.4", "tracing", ] @@ -3862,6 +3923,12 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "memchr" version = "2.7.4" @@ -4667,10 +4734,11 @@ dependencies = [ [[package]] name = "pop-cli" -version = "0.4.0" +version = "0.5.0" dependencies = [ "anyhow", "assert_cmd", + "axum", "clap", "cliclack", "console", @@ -4685,6 +4753,7 @@ dependencies = [ "pop-telemetry", "predicates", "reqwest 0.12.7", + "serde", "serde_json", "sp-core", "sp-weights", @@ -4692,12 +4761,13 @@ dependencies = [ "strum_macros 0.26.4", "tempfile", "tokio", + "tower-http 0.6.2", "url", ] [[package]] name = "pop-common" -version = "0.4.0" +version = "0.5.0" dependencies = [ "anyhow", "cargo_toml", @@ -4722,7 +4792,7 @@ dependencies = [ [[package]] name = "pop-contracts" -version = "0.4.0" +version = "0.5.0" dependencies = [ "anyhow", "contract-build", @@ -4751,7 +4821,7 @@ dependencies = [ [[package]] name = "pop-parachains" -version = "0.4.0" +version = "0.5.0" dependencies = [ "anyhow", "askama", @@ -4780,7 +4850,7 @@ dependencies = [ [[package]] name = "pop-telemetry" -version = "0.4.0" +version = "0.5.0" dependencies = [ "dirs", "env_logger", @@ -5944,6 +6014,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + [[package]] name = "serde_repr" version = "0.1.19" @@ -7391,6 +7471,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-http" version = "0.4.4" @@ -7404,7 +7500,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "http-range-header", + "http-range-header 0.3.1", "mime", "pin-project-lite", "tower-layer", @@ -7412,6 +7508,31 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" +dependencies = [ + "bitflags 2.6.0", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "http-range-header 0.4.2", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-layer" version = "0.3.3" diff --git a/Cargo.toml b/Cargo.toml index 30f4ac63..1e03f107 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,3 +71,7 @@ console = "0.15" os_info = { version = "3", default-features = false } strum = "0.26" strum_macros = "0.26" + +# wallet-integration +axum = "0.7.9" +tower-http = "0.6.2" diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index c9761b64..4f3ab59a 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -18,6 +18,7 @@ duct.workspace = true env_logger.workspace = true os_info.workspace = true reqwest.workspace = true +serde = { workspace = true, version = "1.0", features = ["derive"] } serde_json.workspace = true tempfile.workspace = true tokio.workspace = true @@ -46,6 +47,10 @@ pop-telemetry = { path = "../pop-telemetry", version = "0.5.0", optional = true # common pop-common = { path = "../pop-common", version = "0.5.0" } +# wallet-integration +axum.workspace = true +tower-http = { workspace = true, features = ["fs"] } + [dev-dependencies] assert_cmd.workspace = true predicates.workspace = true diff --git a/crates/pop-cli/src/main.rs b/crates/pop-cli/src/main.rs index 9a41fd7c..f8e3504e 100644 --- a/crates/pop-cli/src/main.rs +++ b/crates/pop-cli/src/main.rs @@ -19,6 +19,7 @@ mod cli; mod commands; mod common; mod style; +mod wallet_integration; #[tokio::main] async fn main() -> Result<()> { diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs new file mode 100644 index 00000000..2d7c4cdf --- /dev/null +++ b/crates/pop-cli/src/wallet_integration.rs @@ -0,0 +1,537 @@ +use axum::{ + response::Html, + routing::{get, post}, + Router, +}; +use serde::Serialize; +use std::{path::PathBuf, sync::Arc}; +use tokio::{ + sync::{oneshot, Mutex}, + task::JoinHandle, +}; +use tower_http::services::ServeDir; + +/// Make frontend sourcing more flexible by allowing a custom route +/// to be defined. +pub trait Frontend { + fn serve_content(&self) -> Router; +} + +/// Transaction payload to be sent to frontend for signing. +#[derive(Serialize, Debug)] +#[cfg_attr(test, derive(serde::Deserialize, Clone))] +pub struct TransactionData { + chain_rpc: String, + call_data: Vec, +} + +impl TransactionData { + pub fn new(chain_rpc: String, call_data: Vec) -> Self { + Self { chain_rpc, call_data } + } +} + +/// Shared state between routes. Serves two purposes: +/// - Maintains a channel to signal shutdown to the main app. +/// - Stores the signed payload received from the wallet. +#[derive(Default)] +pub struct StateHandler { + /// Channel to signal shutdown to the main app. + shutdown_tx: Option>, + /// Received from UI. + pub signed_payload: Option, + /// Holds a single error message. + /// Only method for consuming error removes (takes) it from state. + error: Option, +} + +/// Manages the wallet integration for secure signing of transactions. +pub struct WalletIntegrationManager { + /// Shared state between routes. + pub state: Arc>, + /// Node rpc address. + pub rpc_url: String, + /// Web server task handle. + pub task_handle: JoinHandle>, +} + +impl WalletIntegrationManager { + /// Launches a server for hosting the wallet integration. Server launched in separate task. + /// Uses default address of 127.0.0.1:9090. + /// # Arguments + /// * `frontend`: A frontend with custom route to serve content. + /// * `payload`: Payload to be sent to the frontend for signing. + /// + /// # Returns + /// A `WalletIntegrationManager` instance, with access to the state and task handle for the + /// server. + pub fn new(frontend: F, payload: TransactionData) -> Self { + Self::new_with_address(frontend, payload, "127.0.0.1:9090") + } + + /// Same as `new`, but allows specifying the address to bind to. + pub fn new_with_address(frontend: F, payload: TransactionData, rpc: &str) -> Self { + // Channel to signal shutdown. + let (tx, rx) = oneshot::channel(); + + let state = Arc::new(Mutex::new(StateHandler { + shutdown_tx: Some(tx), + signed_payload: None, + error: None, + })); + + let payload = Arc::new(payload); + + let app = Router::new() + .route("/payload", get(routes::get_payload_handler).with_state(payload)) + .route("/submit", post(routes::submit_handler).with_state(state.clone())) + .route("/error", post(routes::error_handler).with_state(state.clone())) + .route("/terminate", post(routes::terminate_handler).with_state(state.clone())) + .merge(frontend.serve_content()); // Custom route for serving frontend. + + let rpc_owned = rpc.to_string(); + + // Will shut down when the signed payload is received. + let task_handle = tokio::spawn(async move { + let listener = tokio::net::TcpListener::bind(&rpc_owned) + .await + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", rpc_owned, e))?; + + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; + Ok(()) + }); + + Self { state, rpc_url: rpc.to_string(), task_handle } + } + + /// Signals the wallet integration server to shut down. + pub async fn terminate(&mut self) -> anyhow::Result<()> { + terminate_helper(&self.state).await + } + + /// Checks if the server task is still running. + pub fn is_running(&self) -> bool { + !self.task_handle.is_finished() + } + + /// Takes the error from the state if it exists. + pub async fn take_error(&mut self) -> Option { + self.state.lock().await.error.take() + } +} + +mod routes { + use super::{terminate_helper, Arc, Mutex, StateHandler, TransactionData}; + use anyhow::Error; + use axum::{ + extract::State, + http::StatusCode, + response::{IntoResponse, Response}, + Json, + }; + use serde_json::json; + + pub(super) struct ApiError(Error); + + impl From for ApiError { + fn from(err: Error) -> Self { + ApiError(err) + } + } + + // Implementing IntoResponse for ApiError allows us to return it directly from a route handler. + impl IntoResponse for ApiError { + fn into_response(self) -> Response { + let body = json!({ + "error": self.0.to_string(), + }); + (StatusCode::INTERNAL_SERVER_ERROR, Json(body)).into_response() + } + } + + /// Responds with the serialized JSON data for signing. + pub(super) async fn get_payload_handler( + State(payload): State>, + ) -> Result, ApiError> { + // Error should never occur. + let json_payload = serde_json::to_value(&*payload) + .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; + Ok(Json(json_payload)) + } + + /// Receives the signed payload from the wallet. + /// Will signal for shutdown on success. + pub(super) async fn submit_handler( + State(state): State>>, + Json(payload): Json, + ) -> Result, ApiError> { + // Signal shutdown. + let res = terminate_helper(&state).await; + + let mut state_locked = state.lock().await; + state_locked.signed_payload = Some(payload); + + res?; + + // Graceful shutdown ensures response is sent before shutdown. + Ok(Json(json!({"status": "success"}))) + } + + /// Receives an error message from the wallet. + pub(super) async fn error_handler( + State(state): State>>, + Json(error): Json, + ) { + let mut state = state.lock().await; + state.error = Some(error); + } + + /// Allows the server to be terminated from the frontend. + pub(super) async fn terminate_handler( + State(state): State>>, + ) -> Result<(), ApiError> { + Ok(terminate_helper(&state).await?) + } +} + +async fn terminate_helper(handle: &Arc>) -> anyhow::Result<()> { + if let Some(shutdown_tx) = handle.lock().await.shutdown_tx.take() { + shutdown_tx + .send(()) + .map_err(|_| anyhow::anyhow!("Failed to send shutdown signal"))?; + } + Ok(()) +} + +/// Serves static files from a directory. +pub struct FrontendFromDir { + content: PathBuf, +} +impl FrontendFromDir { + pub fn new(content: PathBuf) -> Self { + Self { content } + } +} + +impl Frontend for FrontendFromDir { + fn serve_content(&self) -> Router { + Router::new().nest_service("/", ServeDir::new(self.content.clone())) + } +} + +/// Serves a hard-coded HTML string as the frontend. +pub struct FrontendFromString { + content: String, +} + +impl FrontendFromString { + pub fn new(content: String) -> Self { + Self { content } + } +} + +impl Frontend for FrontendFromString { + fn serve_content(&self) -> Router { + let content = self.content.clone(); + Router::new().route("/", get(move || async { Html(content) })) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use serde_json::json; + + const TEST_HTML: &str = "Hello, world!"; + + // Wait for server to launch. + async fn wait() { + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; + } + + fn default_payload() -> TransactionData { + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] } + } + + #[tokio::test] + async fn new_works() { + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); + + assert_eq!(wim.rpc_url, "127.0.0.1:9090"); + assert_eq!(wim.is_running(), true); + assert!(wim.state.lock().await.shutdown_tx.is_some()); + assert!(wim.state.lock().await.signed_payload.is_none()); + + // Terminate the server and make sure result is ok. + wim.terminate().await.expect("Termination should not fail."); + assert!(wim.task_handle.await.is_ok()); + } + + #[test] + fn new_transaction_data_works() { + let chain_rpc = "localhost:9944".to_string(); + let call_data = vec![1, 2, 3]; + let transaction_data = TransactionData::new(chain_rpc.clone(), call_data.clone()); + + assert_eq!(transaction_data.chain_rpc, chain_rpc); + assert_eq!(transaction_data.call_data, call_data); + } + + #[tokio::test] + async fn take_error_works() { + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); + + assert_eq!(wim.take_error().await, None); + + let error = "An error occurred".to_string(); + wim.state.lock().await.error = Some(error.clone()); + + let taken_error = wim.take_error().await; + assert_eq!(taken_error, Some(error)); + } + + #[tokio::test] + async fn payload_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9091"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); + wait().await; + + let addr = format!("http://{}", wim.rpc_url); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); + assert_eq!(actual_payload.call_data, expected_payload.call_data); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn submit_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9092"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + let addr = format!("http://{}", wim.rpc_url); + let response = reqwest::Client::new() + .post(&format!("{}/submit", addr)) + .json(&"0xDEADBEEF") + .send() + .await + .expect("Failed to submit payload") + .json::() + .await + .expect("Failed to parse JSON response"); + + assert_eq!(response, json!({"status": "success"})); + assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + assert_eq!(wim.is_running(), false); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn error_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9093"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + let addr = format!("http://{}", wim.rpc_url); + let response = reqwest::Client::new() + .post(&format!("{}/error", addr)) + .json(&"an error occurred") + .send() + .await + .expect("Failed to submit error") + .text() + .await + .expect("Failed to parse response"); + + // no response expected + assert_eq!(response.len(), 0); + assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); + assert_eq!(wim.is_running(), true); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn terminate_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9094"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + let addr = format!("http://{}", wim.rpc_url); + let response = reqwest::Client::new() + .post(&format!("{}/terminate", addr)) + .send() + .await + .expect("Failed to terminate") + .text() + .await + .expect("Failed to parse response"); + + // No response expected. + assert_eq!(response.len(), 0); + assert_eq!(wim.is_running(), false); + + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn wallet_terminate_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9095"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + + assert_eq!(wim.is_running(), true); + wim.terminate().await.expect("Termination should not fail"); + wait().await; + assert_eq!(wim.is_running(), false); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_string_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9096"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + let actual_content = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_content, TEST_HTML); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_dir_works() { + use std::fs; + use tempfile::tempdir; + + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9097"; + + let temp_dir = tempdir().expect("Failed to create temp directory"); + let index_file_path = temp_dir.path().join("index.html"); + + let test_html = "Hello, world from Directory!"; + fs::write(&index_file_path, test_html).expect("Failed to write index.html"); + + let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + let actual_content = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_content, test_html); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn large_payload_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9098"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; + + let expected_payload = TransactionData { + chain_rpc: "localhost:9944".to_string(), + call_data: call_data_5mb.clone(), + }; + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); + wait().await; + + let addr = format!("http://{}", wim.rpc_url); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); + assert_eq!(actual_payload.call_data, call_data_5mb); + + wim.terminate().await.expect("Termination should not fail."); + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn new_with_conflicting_address_fails() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9099"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + assert_eq!(wim.is_running(), true); + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let wim_conflict = + WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + assert_eq!(wim_conflict.is_running(), false); + let task_result = wim_conflict.task_handle.await.unwrap(); + match task_result { + Err(e) => assert!(e + .to_string() + .starts_with(&format!("Failed to bind to {}: Address already in use", addr))), + Ok(_) => panic!("Expected error, but task succeeded"), + } + } +} From c0c9cd8498e9135587f2424c86e604d4e43ba6c6 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 13:36:16 -0700 Subject: [PATCH 002/143] feat(up-contract): get call data for upload-only and pass to wallet integration -- PoC --- Cargo.lock | 8 --- Cargo.toml | 7 ++- crates/pop-cli/src/commands/up/contract.rs | 55 ++++++++++++++++- crates/pop-contracts/src/lib.rs | 4 +- crates/pop-contracts/src/up.rs | 69 +++++++++++++++++++++- 5 files changed, 128 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 120b6aec..6b6d99db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1264,8 +1264,6 @@ checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" [[package]] name = "contract-build" version = "5.0.0-alpha" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d12277cde43657b5a7a36c9bb6e9ecf12b757234a867f9f38ce78d386a328281" dependencies = [ "anyhow", "blake2", @@ -1305,8 +1303,6 @@ dependencies = [ [[package]] name = "contract-extrinsics" version = "5.0.0-alpha" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7cd6c946b411dc175da09825bc0b041503eabca8347cefbf40eb346e035efc" dependencies = [ "anyhow", "blake2", @@ -1338,8 +1334,6 @@ dependencies = [ [[package]] name = "contract-metadata" version = "5.0.0-alpha" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc0718fc46a399688c032f2141a3abafa0eb42041e3d6880390069ca4700fca" dependencies = [ "anyhow", "impl-serde", @@ -1352,8 +1346,6 @@ dependencies = [ [[package]] name = "contract-transcode" version = "5.0.0-alpha" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671e0dff122f02fff592b7f32aa59b1886352939945cba487ee10f6367f13a75" dependencies = [ "anyhow", "base58", diff --git a/Cargo.toml b/Cargo.toml index 1e03f107..3c11af0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,8 +48,11 @@ subxt = "0.37.0" ink_env = "5.0.0" sp-core = "31" sp-weights = "30" -contract-build = "5.0.0-alpha" -contract-extrinsics = "5.0.0-alpha" +# TODO: upstream cargo-contract changes +#contract-build = "5.0.0-alpha" +contract-build = { path = "/Users/peter/dev/use-ink/cargo-contract/crates/build" } +#contract-extrinsics = "5.0.0-alpha" +contract-extrinsics = { path = "/Users/peter/dev/use-ink/cargo-contract/crates/extrinsics" } heck = "0.5.0" # parachains diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 7b3a2603..b0f7d4b0 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -4,13 +4,14 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::contracts::check_contracts_node_and_prompt, style::style, + wallet_integration::TransactionData, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner}; use console::{Emoji, Style}; use pop_common::manifest::from_path; use pop_contracts::{ - build_smart_contract, dry_run_gas_estimate_instantiate, dry_run_upload, + build_smart_contract, dry_run_gas_estimate_instantiate, dry_run_upload, get_upload_payload, instantiate_smart_contract, is_chain_alive, parse_hex_bytes, run_contracts_node, set_up_deployment, set_up_upload, upload_smart_contract, UpOpts, Verbosity, }; @@ -64,6 +65,9 @@ pub struct UpContractCommand { /// - with a password "//Alice///SECRET_PASSWORD" #[clap(name = "suri", long, short, default_value = "//Alice")] suri: String, + /// Use your browser wallet to sign a transaction. + #[clap(name = "use-wallet", long, default_value = "false")] + use_wallet: bool, /// Perform a dry-run via RPC to estimate the gas usage. This does not submit a transaction. #[clap(long)] dry_run: bool, @@ -163,7 +167,32 @@ impl UpContractCommand { None }; + // TODO: **** Start of Wallet Integration + use crate::wallet_integration::{DefaultFrontend, WalletIntegrationManager}; + let ui = DefaultFrontend::new(PathBuf::from( + "/Users/peter/dev/r0gue/react-teleport-example/dist", + )); + if self.use_wallet { + let call_data = if self.upload_only { + let call_data = get_upload_payload(self.clone().into()).await?; + call_data + } else { + }; + + let transaction_data = TransactionData::new(self.url.to_string(), call_data); + let mut wallet = WalletIntegrationManager::new(ui, transaction_data); + let server = wallet.run().await?; + + // TODO: instantiate + } + + // TODO: ***** End of Wallet Integration + // Check for upload only. + // TODO: Option 1 for wallet integration + // TODO: checks if dry-run in function + // TODO: this is an upload only. Piece #1 of pop up + // TODO: server can be terminated on return here if self.upload_only { let result = self.upload_contract().await; Self::terminate_node(process)?; @@ -179,6 +208,7 @@ impl UpContractCommand { } // Otherwise instantiate. + // TODO: does not deploy, just setup let instantiate_exec = match set_up_deployment(UpOpts { path: self.path.clone(), constructor: self.constructor.clone(), @@ -206,6 +236,7 @@ impl UpContractCommand { } else { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); + // TODO: Option 2 for wallet integration. Requires signer info match dry_run_gas_estimate_instantiate(&instantiate_exec).await { Ok(w) => { spinner.stop(format!("Gas limit estimate: {:?}", w)); @@ -221,6 +252,7 @@ impl UpContractCommand { }; // Finally upload and instantiate. + // TODO: option 3 for wallet integration if !self.dry_run { let spinner = spinner(); spinner.start("Uploading and instantiating the contract..."); @@ -352,6 +384,7 @@ mod tests { use super::*; use duct::cmd; use std::fs::{self, File}; + use subxt::{tx::SubmittableExtrinsic, OnlineClient, PolkadotConfig}; use url::Url; #[test] @@ -369,6 +402,7 @@ mod tests { dry_run: false, upload_only: false, skip_confirm: false, + use_wallet: false, }; let opts: UpOpts = command.into(); assert_eq!( @@ -408,4 +442,23 @@ mod tests { assert!(has_contract_been_built(Some(&path.join(name)))); Ok(()) } + + #[tokio::test] + async fn submit_subxt() { + let api = OnlineClient::::new().await.unwrap(); + + // Build a balance transfer extrinsic. + + // Create partial tx, ready to be signed. + + let signed_payload = "45028400d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d012e10751f1ad230e492e7925a66d693e8281017bd1adfcf906796805334fff66f2c337ab364132128c0a6e11754a039670cbe51b2da2240073585d800bdb3a78815030000000a03001cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c0700e8764817"; + + let hex_encoded = hex::decode(signed_payload).unwrap(); + println!("{:?}", hex::decode(hex_encoded.clone())); + + let tx = SubmittableExtrinsic::from_bytes(api, hex_encoded); + + // Submit it. + tx.submit_and_watch().await.unwrap().wait_for_finalized_success().await; + } } diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 1d558de3..19d6d290 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,7 @@ pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; pub use up::{ - dry_run_gas_estimate_instantiate, dry_run_upload, instantiate_smart_contract, - set_up_deployment, set_up_upload, upload_smart_contract, UpOpts, + dry_run_gas_estimate_instantiate, dry_run_upload, get_contract_code, get_upload_payload, + instantiate_smart_contract, set_up_deployment, set_up_upload, upload_smart_contract, UpOpts, }; pub use utils::signer::parse_hex_bytes; diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 93a2742e..372b0dcc 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -14,11 +14,14 @@ use ink_env::{DefaultEnvironment, Environment}; use sp_core::Bytes; use sp_weights::Weight; use std::{fmt::Write, path::PathBuf}; -use subxt::PolkadotConfig as DefaultConfig; +use subxt::{ + ext::scale_encode::EncodeAsType, tx::Payload, utils::to_hex, PolkadotConfig as DefaultConfig, + SubstrateConfig, +}; use subxt_signer::sr25519::Keypair; /// Attributes for the `up` command -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct UpOpts { /// Path to the contract build directory. pub path: Option, @@ -93,9 +96,50 @@ pub async fn set_up_upload( let upload_exec: UploadExec = UploadCommandBuilder::new(extrinsic_opts).done().await?; + Ok(upload_exec) } +pub async fn get_upload_payload(up_opts: UpOpts) -> anyhow::Result> { + let code = get_contract_code(up_opts.clone()).await?; + + let storage_deposit_limit: Option = None; + let upload_code = contract_extrinsics::extrinsic_calls::UploadCode::new( + code, + storage_deposit_limit, + contract_extrinsics::upload::Determinism::Enforced, + ); + + let rpc_client = subxt::backend::rpc::RpcClient::from_url(up_opts.url.as_str()).await?; + let client = subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let call_data = upload_code.build(); + let mut encoded_data = Vec::::new(); + // TODO: error + call_data + .encode_call_data_to(&client.metadata(), &mut encoded_data) + .expect("failed to encoded"); + Ok(encoded_data) +} + +// TODO, don't need full up_opts +pub async fn get_contract_code(up_opts: UpOpts) -> anyhow::Result { + let manifest_path = get_manifest_path(up_opts.path.as_deref())?; + + let signer = create_signer(&up_opts.suri)?; + let extrinsic_opts = + ExtrinsicOptsBuilder::::new(signer) + .manifest_path(Some(manifest_path)) + .done(); + let artifacts = extrinsic_opts.contract_artifacts()?; + + let artifacts_path = artifacts.artifact_path().to_path_buf(); + let code = artifacts.code.ok_or_else(|| { + anyhow::anyhow!("Contract code not found from artifact file {}", artifacts_path.display()) + })?; + Ok(code) +} + /// Estimate the gas required for instantiating a contract without modifying the state of the /// blockchain. /// @@ -219,6 +263,7 @@ mod tests { templates::Contract, }; use anyhow::Result; + use reqwest::get; use std::{env, fs, process::Command}; use url::Url; @@ -282,6 +327,26 @@ mod tests { Ok(()) } + #[tokio::test] + async fn get_payload_works() -> Result<()> { + let temp_dir = generate_smart_contract_test_environment()?; + mock_build_process(temp_dir.path().join("testing"))?; + let up_opts = UpOpts { + path: Some(temp_dir.path().join("testing")), + constructor: "new".to_string(), + args: ["false".to_string()].to_vec(), + value: "1000".to_string(), + gas_limit: None, + proof_size: None, + salt: None, + url: Url::parse(CONTRACTS_NETWORK_URL)?, + suri: "//Alice".to_string(), + }; + let call_data = get_upload_payload(up_opts).await?; + // println!("{:?}", call_data); + Ok(()) + } + #[tokio::test] async fn dry_run_gas_estimate_instantiate_works() -> Result<()> { let temp_dir = generate_smart_contract_test_environment()?; From 546350154ea693692079690ad0019687fb151ad5 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 15:56:19 -0700 Subject: [PATCH 003/143] feat(up-contract): get call data for instantiate and pass to wallet integration -- PoC --- crates/pop-cli/src/commands/up/contract.rs | 41 ++++++- crates/pop-contracts/src/lib.rs | 5 +- crates/pop-contracts/src/up.rs | 119 ++++++++++++++++++++- 3 files changed, 155 insertions(+), 10 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index b0f7d4b0..4652c683 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -11,9 +11,10 @@ use cliclack::{confirm, log, log::error, spinner}; use console::{Emoji, Style}; use pop_common::manifest::from_path; use pop_contracts::{ - build_smart_contract, dry_run_gas_estimate_instantiate, dry_run_upload, get_upload_payload, - instantiate_smart_contract, is_chain_alive, parse_hex_bytes, run_contracts_node, - set_up_deployment, set_up_upload, upload_smart_contract, UpOpts, Verbosity, + build_smart_contract, dry_run_gas_estimate_instantiate, dry_run_upload, + get_instantiate_payload, get_upload_payload, instantiate_smart_contract, is_chain_alive, + parse_hex_bytes, run_contracts_node, set_up_deployment, set_up_upload, upload_smart_contract, + UpOpts, Verbosity, }; use sp_core::Bytes; use sp_weights::Weight; @@ -177,6 +178,40 @@ impl UpContractCommand { let call_data = get_upload_payload(self.clone().into()).await?; call_data } else { + // Otherwise instantiate. + // does not deploy, just setup + // TODO: DRY + let instantiate_exec = match set_up_deployment(UpOpts { + path: self.path.clone(), + constructor: self.constructor.clone(), + args: self.args.clone(), + value: self.value.clone(), + gas_limit: self.gas_limit, + proof_size: self.proof_size, + salt: self.salt.clone(), + url: self.url.clone(), + suri: self.suri.clone(), + }) + .await + { + Ok(i) => i, + Err(e) => { + error(format!("An error occurred instantiating the contract: {e}"))?; + Self::terminate_node(process)?; + Cli.outro_cancel(FAILED)?; + return Ok(()); + }, + }; + + // TODO: note on weight_limit. We will need to do a dry-run in the UI then + // update the data with the weight limit. + let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { + Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) + } else { + Weight::from_parts(0, 0) + }; + let call_data = get_instantiate_payload(instantiate_exec, weight_limit).await?; + call_data }; let transaction_data = TransactionData::new(self.url.to_string(), call_data); diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 19d6d290..b37125e2 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,8 @@ pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; pub use up::{ - dry_run_gas_estimate_instantiate, dry_run_upload, get_contract_code, get_upload_payload, - instantiate_smart_contract, set_up_deployment, set_up_upload, upload_smart_contract, UpOpts, + dry_run_gas_estimate_instantiate, dry_run_upload, get_contract_code, get_instantiate_payload, + get_upload_payload, instantiate_smart_contract, set_up_deployment, set_up_upload, + upload_smart_contract, UpOpts, }; pub use utils::signer::parse_hex_bytes; diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 372b0dcc..44f85297 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -7,13 +7,17 @@ use crate::{ }, }; use contract_extrinsics::{ + extrinsic_calls::{Instantiate, InstantiateWithCode}, BalanceVariant, ErrorVariant, ExtrinsicOptsBuilder, InstantiateCommandBuilder, InstantiateExec, TokenMetadata, UploadCommandBuilder, UploadExec, }; use ink_env::{DefaultEnvironment, Environment}; use sp_core::Bytes; use sp_weights::Weight; -use std::{fmt::Write, path::PathBuf}; +use std::{ + fmt::Write, + path::{Path, PathBuf}, +}; use subxt::{ ext::scale_encode::EncodeAsType, tx::Payload, utils::to_hex, PolkadotConfig as DefaultConfig, SubstrateConfig, @@ -101,7 +105,7 @@ pub async fn set_up_upload( } pub async fn get_upload_payload(up_opts: UpOpts) -> anyhow::Result> { - let code = get_contract_code(up_opts.clone()).await?; + let code = get_contract_code(up_opts.path.as_ref()).await?; let storage_deposit_limit: Option = None; let upload_code = contract_extrinsics::extrinsic_calls::UploadCode::new( @@ -110,6 +114,7 @@ pub async fn get_upload_payload(up_opts: UpOpts) -> anyhow::Result> { contract_extrinsics::upload::Determinism::Enforced, ); + // TODO: should not be here let rpc_client = subxt::backend::rpc::RpcClient::from_url(up_opts.url.as_str()).await?; let client = subxt::OnlineClient::::from_rpc_client(rpc_client).await?; @@ -122,11 +127,50 @@ pub async fn get_upload_payload(up_opts: UpOpts) -> anyhow::Result> { Ok(encoded_data) } +pub async fn get_instantiate_payload( + instantiate_exec: InstantiateExec, + gas_limit: Weight, +) -> anyhow::Result> { + // let code = get_contract_code(instantiate_exec.opts().manifest_path()).await?; + + let storage_deposit_limit: Option = None; + let mut encoded_data = Vec::::new(); + match instantiate_exec.args().code() { + contract_extrinsics::Code::Upload(code) => InstantiateWithCode::new( + instantiate_exec.args().value(), + gas_limit, + storage_deposit_limit, + // TODO: revisit if expensive clone is necessary + code.clone(), + instantiate_exec.args().data().into(), + instantiate_exec.args().salt().into(), + ) + .build() + .encode_call_data_to(&instantiate_exec.client().metadata(), &mut encoded_data), + contract_extrinsics::Code::Existing(hash) => Instantiate::new( + instantiate_exec.args().value(), + gas_limit, + storage_deposit_limit, + hash.clone(), + instantiate_exec.args().data().into(), + instantiate_exec.args().salt().into(), + ) + .build() + .encode_call_data_to(&instantiate_exec.client().metadata(), &mut encoded_data), + } + .expect("encoding failed"); // TODO: error + + Ok(encoded_data) +} + // TODO, don't need full up_opts -pub async fn get_contract_code(up_opts: UpOpts) -> anyhow::Result { - let manifest_path = get_manifest_path(up_opts.path.as_deref())?; +pub async fn get_contract_code( + path: Option<&PathBuf>, +) -> anyhow::Result { + let manifest_path = get_manifest_path(path.map(|p| p as &Path))?; - let signer = create_signer(&up_opts.suri)?; + // TODO: signer doesn't matter here + let signer = create_signer("//Alice")?; let extrinsic_opts = ExtrinsicOptsBuilder::::new(signer) .manifest_path(Some(manifest_path)) @@ -478,4 +522,69 @@ mod tests { Ok(()) } + + #[tokio::test] + async fn get_instantiate_payload_works() -> Result<()> { + const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; + let temp_dir = generate_smart_contract_test_environment()?; + mock_build_process(temp_dir.path().join("testing"))?; + + let cache = temp_dir.path().join(""); + + let binary = contracts_node_generator(cache.clone(), None).await?; + binary.source(false, &(), true).await?; + let process = run_contracts_node(binary.path(), None).await?; + + let upload_exec = set_up_upload(UpOpts { + path: Some(temp_dir.path().join("testing")), + constructor: "new".to_string(), + args: [].to_vec(), + value: "1000".to_string(), + gas_limit: None, + proof_size: None, + salt: None, + url: Url::parse(LOCALHOST_URL)?, + suri: "//Alice".to_string(), + }) + .await?; + + // Only upload a Smart Contract + let upload_result = upload_smart_contract(&upload_exec).await?; + assert!(!upload_result.starts_with("0x0x")); + assert!(upload_result.starts_with("0x")); + //Error when Smart Contract has been already uploaded + assert!(matches!( + upload_smart_contract(&upload_exec).await, + Err(Error::UploadContractError(..)) + )); + + // Instantiate a Smart Contract + let instantiate_exec = set_up_deployment(UpOpts { + path: Some(temp_dir.path().join("testing")), + constructor: "new".to_string(), + args: ["false".to_string()].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + salt: Some(Bytes::from(vec![0x00])), + url: Url::parse(LOCALHOST_URL)?, + suri: "//Alice".to_string(), + }) + .await?; + // First gas estimation + let weight = dry_run_gas_estimate_instantiate(&instantiate_exec).await?; + assert!(weight.ref_time() > 0); + assert!(weight.proof_size() > 0); + + let call_data = get_instantiate_payload(instantiate_exec, weight).await?; + println!("{:?}", to_hex(call_data)); + + //Stop the process contracts-node + Command::new("kill") + .args(["-s", "TERM", &process.id().to_string()]) + .spawn()? + .wait()?; + + Ok(()) + } } From 2b45cf90520945bef4f56b7167ff0f80ace53c9b Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 19:14:48 -0700 Subject: [PATCH 004/143] feat(up-contract): run server and pass call_data for signing -- PoC --- crates/pop-cli/src/commands/up/contract.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 4652c683..ac669ea8 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -215,9 +215,24 @@ impl UpContractCommand { }; let transaction_data = TransactionData::new(self.url.to_string(), call_data); + // starts server let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - let server = wallet.run().await?; + log::info(format!("Wallet signing portal started at http://{}", wallet.addr)); + log::info("Waiting for signature... Press Ctrl+C to terminate early."); + loop { + if !wallet.is_running() { + wallet.finish().await?; + break; + } + + let state = wallet.state.lock().await; + + if state.signed_payload.is_some() { + log::warning(format!("Payload signed: {:?}", state.signed_payload))?; + break; + } + } // TODO: instantiate } From e051c91d0495b5dea0e94fbdff59c8c7f6064a7e Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 21:32:45 -0700 Subject: [PATCH 005/143] feat(up-contract): submit signed payload to node --- crates/pop-cli/src/commands/up/contract.rs | 19 ++++++++++++++----- crates/pop-contracts/src/lib.rs | 2 +- crates/pop-contracts/src/up.rs | 21 ++++++++++++++++++--- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index ac669ea8..d7c5be1b 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -13,8 +13,8 @@ use pop_common::manifest::from_path; use pop_contracts::{ build_smart_contract, dry_run_gas_estimate_instantiate, dry_run_upload, get_instantiate_payload, get_upload_payload, instantiate_smart_contract, is_chain_alive, - parse_hex_bytes, run_contracts_node, set_up_deployment, set_up_upload, upload_smart_contract, - UpOpts, Verbosity, + parse_hex_bytes, run_contracts_node, set_up_deployment, set_up_upload, submit_signed_payload, + upload_smart_contract, UpOpts, Verbosity, }; use sp_core::Bytes; use sp_weights::Weight; @@ -170,6 +170,7 @@ impl UpContractCommand { // TODO: **** Start of Wallet Integration use crate::wallet_integration::{DefaultFrontend, WalletIntegrationManager}; + // TODO: using default frontend with local path let ui = DefaultFrontend::new(PathBuf::from( "/Users/peter/dev/r0gue/react-teleport-example/dist", )); @@ -178,7 +179,6 @@ impl UpContractCommand { let call_data = get_upload_payload(self.clone().into()).await?; call_data } else { - // Otherwise instantiate. // does not deploy, just setup // TODO: DRY let instantiate_exec = match set_up_deployment(UpOpts { @@ -222,7 +222,7 @@ impl UpContractCommand { log::info("Waiting for signature... Press Ctrl+C to terminate early."); loop { if !wallet.is_running() { - wallet.finish().await?; + wallet.task_handle.await?; break; } @@ -233,7 +233,16 @@ impl UpContractCommand { break; } } - // TODO: instantiate + + let maybe_payload = wallet.state.lock().await.signed_payload.clone(); + if let Some(payload) = maybe_payload { + log::info("Submitting signed payload...")?; + submit_signed_payload(self.url.as_str(), payload).await?; + log::info("Submitted")?; + } + + Self::terminate_node(process)?; + return Ok(()) } // TODO: ***** End of Wallet Integration diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index b37125e2..fe4621e0 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -22,6 +22,6 @@ pub use test::{test_e2e_smart_contract, test_smart_contract}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_smart_contract, set_up_deployment, set_up_upload, - upload_smart_contract, UpOpts, + submit_signed_payload, upload_smart_contract, UpOpts, }; pub use utils::signer::parse_hex_bytes; diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 44f85297..a4dd6539 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -12,15 +12,17 @@ use contract_extrinsics::{ TokenMetadata, UploadCommandBuilder, UploadExec, }; use ink_env::{DefaultEnvironment, Environment}; -use sp_core::Bytes; +use sp_core::{bytes::from_hex, Bytes}; use sp_weights::Weight; use std::{ fmt::Write, path::{Path, PathBuf}, }; use subxt::{ - ext::scale_encode::EncodeAsType, tx::Payload, utils::to_hex, PolkadotConfig as DefaultConfig, - SubstrateConfig, + ext::scale_encode::EncodeAsType, + tx::{Payload, SubmittableExtrinsic}, + utils::to_hex, + PolkadotConfig as DefaultConfig, SubstrateConfig, }; use subxt_signer::sr25519::Keypair; @@ -184,6 +186,19 @@ pub async fn get_contract_code( Ok(code) } +pub async fn submit_signed_payload(url: &str, payload: String) -> anyhow::Result<()> { + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let hex_encoded = from_hex(&payload)?; + + let tx = SubmittableExtrinsic::from_bytes(client, hex_encoded); + + tx.submit_and_watch().await?; + + Ok(()) +} + /// Estimate the gas required for instantiating a contract without modifying the state of the /// blockchain. /// From 6b994528ce5ace79febd11414cc4106acdeebc11 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 18:15:16 -0700 Subject: [PATCH 006/143] fix(up-contract): update to FrontendFromDir type --- crates/pop-cli/src/commands/up/contract.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index d7c5be1b..a75d261e 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -169,9 +169,9 @@ impl UpContractCommand { }; // TODO: **** Start of Wallet Integration - use crate::wallet_integration::{DefaultFrontend, WalletIntegrationManager}; + use crate::wallet_integration::{FrontendFromDir, WalletIntegrationManager}; // TODO: using default frontend with local path - let ui = DefaultFrontend::new(PathBuf::from( + let ui = FrontendFromDir::new(PathBuf::from( "/Users/peter/dev/r0gue/react-teleport-example/dist", )); if self.use_wallet { From af94cc1f4d33f5ce1ad0de50bba58491ffa1d6a0 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sun, 8 Dec 2024 23:48:11 -0700 Subject: [PATCH 007/143] refactor(pop-up): create functions for wallet integration, plus general cleanup --- crates/pop-cli/src/commands/up/contract.rs | 196 +++++++++------------ crates/pop-contracts/src/up.rs | 16 +- 2 files changed, 91 insertions(+), 121 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index a75d261e..eb1ef046 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -4,7 +4,7 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::contracts::check_contracts_node_and_prompt, style::style, - wallet_integration::TransactionData, + wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner}; @@ -168,90 +168,39 @@ impl UpContractCommand { None }; - // TODO: **** Start of Wallet Integration - use crate::wallet_integration::{FrontendFromDir, WalletIntegrationManager}; - // TODO: using default frontend with local path - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/peter/dev/r0gue/react-teleport-example/dist", - )); + // Run steps for signing with wallet integration. Returns early. if self.use_wallet { - let call_data = if self.upload_only { - let call_data = get_upload_payload(self.clone().into()).await?; - call_data - } else { - // does not deploy, just setup - // TODO: DRY - let instantiate_exec = match set_up_deployment(UpOpts { - path: self.path.clone(), - constructor: self.constructor.clone(), - args: self.args.clone(), - value: self.value.clone(), - gas_limit: self.gas_limit, - proof_size: self.proof_size, - salt: self.salt.clone(), - url: self.url.clone(), - suri: self.suri.clone(), - }) - .await - { - Ok(i) => i, - Err(e) => { - error(format!("An error occurred instantiating the contract: {e}"))?; - Self::terminate_node(process)?; - Cli.outro_cancel(FAILED)?; - return Ok(()); - }, - }; - - // TODO: note on weight_limit. We will need to do a dry-run in the UI then - // update the data with the weight limit. - let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { - Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) - } else { - Weight::from_parts(0, 0) - }; - let call_data = get_instantiate_payload(instantiate_exec, weight_limit).await?; - call_data + let call_data = match self.get_call_data().await { + Ok(data) => data, + Err(e) => { + error(format!("An error occurred getting the call data: {e}"))?; + Self::terminate_node(process)?; + Cli.outro_cancel(FAILED)?; + return Ok(()); + }, }; - let transaction_data = TransactionData::new(self.url.to_string(), call_data); - // starts server - let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::info(format!("Wallet signing portal started at http://{}", wallet.addr)); - - log::info("Waiting for signature... Press Ctrl+C to terminate early."); - loop { - if !wallet.is_running() { - wallet.task_handle.await?; - break; - } - - let state = wallet.state.lock().await; - - if state.signed_payload.is_some() { - log::warning(format!("Payload signed: {:?}", state.signed_payload))?; - break; - } - } - - let maybe_payload = wallet.state.lock().await.signed_payload.clone(); + let maybe_payload = self.wait_for_signature(call_data).await?; if let Some(payload) = maybe_payload { log::info("Submitting signed payload...")?; - submit_signed_payload(self.url.as_str(), payload).await?; - log::info("Submitted")?; + let result = submit_signed_payload(self.url.as_str(), payload).await; + match result { + Ok(_) => { + Cli.outro(COMPLETE)?; + }, + Err(_) => { + Cli.outro_cancel(FAILED)?; + }, + } + } else { + Cli.outro_cancel("Signed payload doesn't exist.")?; } Self::terminate_node(process)?; return Ok(()) } - // TODO: ***** End of Wallet Integration - // Check for upload only. - // TODO: Option 1 for wallet integration - // TODO: checks if dry-run in function - // TODO: this is an upload only. Piece #1 of pop up - // TODO: server can be terminated on return here if self.upload_only { let result = self.upload_contract().await; Self::terminate_node(process)?; @@ -267,20 +216,7 @@ impl UpContractCommand { } // Otherwise instantiate. - // TODO: does not deploy, just setup - let instantiate_exec = match set_up_deployment(UpOpts { - path: self.path.clone(), - constructor: self.constructor.clone(), - args: self.args.clone(), - value: self.value.clone(), - gas_limit: self.gas_limit, - proof_size: self.proof_size, - salt: self.salt.clone(), - url: self.url.clone(), - suri: self.suri.clone(), - }) - .await - { + let instantiate_exec = match set_up_deployment(self.clone().into()).await { Ok(i) => i, Err(e) => { error(format!("An error occurred instantiating the contract: {e}"))?; @@ -295,7 +231,6 @@ impl UpContractCommand { } else { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); - // TODO: Option 2 for wallet integration. Requires signer info match dry_run_gas_estimate_instantiate(&instantiate_exec).await { Ok(w) => { spinner.stop(format!("Gas limit estimate: {:?}", w)); @@ -311,7 +246,6 @@ impl UpContractCommand { }; // Finally upload and instantiate. - // TODO: option 3 for wallet integration if !self.dry_run { let spinner = spinner(); spinner.start("Uploading and instantiating the contract..."); @@ -403,6 +337,53 @@ impl UpContractCommand { Ok(()) } + + async fn get_call_data(&self) -> anyhow::Result> { + if self.upload_only { + let call_data = get_upload_payload(self.clone().into()).await?; + Ok(call_data) + } else { + let instantiate_exec = set_up_deployment(self.clone().into()).await?; + + let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { + Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) + } else { + // Frontend will do dry run and update call data. + Weight::from_parts(0, 0) + }; + let call_data = get_instantiate_payload(instantiate_exec, weight_limit).await?; + Ok(call_data) + } + } + + async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { + // TODO: to be addressed in future PR. Should not use FromDir (or local path). + let ui = FrontendFromDir::new(PathBuf::from( + "/Users/peter/dev/r0gue/react-teleport-example/dist", + )); + + let transaction_data = TransactionData::new(self.url.to_string(), call_data); + // starts server + let mut wallet = WalletIntegrationManager::new(ui, transaction_data); + log::info(format!("Wallet signing portal started at http://{}", wallet.addr))?; + + log::info("Waiting for signature... Press Ctrl+C to terminate early.")?; + loop { + if !wallet.is_running() { + wallet.task_handle.await??; + break; + } + + let state = wallet.state.lock().await; + + if state.signed_payload.is_some() { + break; + } + } + + let x = Ok(wallet.state.lock().await.signed_payload.clone()); + x + } } impl From for UpOpts { @@ -443,12 +424,10 @@ mod tests { use super::*; use duct::cmd; use std::fs::{self, File}; - use subxt::{tx::SubmittableExtrinsic, OnlineClient, PolkadotConfig}; use url::Url; - #[test] - fn conversion_up_contract_command_to_up_opts_works() -> anyhow::Result<()> { - let command = UpContractCommand { + fn default_up_contract_command() -> UpContractCommand { + UpContractCommand { path: None, constructor: "new".to_string(), args: vec!["false".to_string()].to_vec(), @@ -456,13 +435,18 @@ mod tests { gas_limit: None, proof_size: None, salt: None, - url: Url::parse("ws://localhost:9944")?, + url: Url::parse("ws://localhost:9944").expect("default url is valid"), suri: "//Alice".to_string(), dry_run: false, upload_only: false, skip_confirm: false, use_wallet: false, - }; + } + } + + #[test] + fn conversion_up_contract_command_to_up_opts_works() -> anyhow::Result<()> { + let command = default_up_contract_command(); let opts: UpOpts = command.into(); assert_eq!( opts, @@ -503,21 +487,15 @@ mod tests { } #[tokio::test] - async fn submit_subxt() { - let api = OnlineClient::::new().await.unwrap(); - - // Build a balance transfer extrinsic. - - // Create partial tx, ready to be signed. - - let signed_payload = "45028400d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d012e10751f1ad230e492e7925a66d693e8281017bd1adfcf906796805334fff66f2c337ab364132128c0a6e11754a039670cbe51b2da2240073585d800bdb3a78815030000000a03001cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c0700e8764817"; - - let hex_encoded = hex::decode(signed_payload).unwrap(); - println!("{:?}", hex::decode(hex_encoded.clone())); + async fn get_upload_call_data_works() -> anyhow::Result<()> { + todo!() + } - let tx = SubmittableExtrinsic::from_bytes(api, hex_encoded); + async fn get_instantiate_call_data_works() -> anyhow::Result<()> { + todo!() + } - // Submit it. - tx.submit_and_watch().await.unwrap().wait_for_finalized_success().await; + async fn wait_for_signature_works() -> anyhow::Result<()> { + todo!() } } diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index a4dd6539..4f26ccd4 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -116,16 +116,13 @@ pub async fn get_upload_payload(up_opts: UpOpts) -> anyhow::Result> { contract_extrinsics::upload::Determinism::Enforced, ); - // TODO: should not be here + // TODO: review placement let rpc_client = subxt::backend::rpc::RpcClient::from_url(up_opts.url.as_str()).await?; let client = subxt::OnlineClient::::from_rpc_client(rpc_client).await?; let call_data = upload_code.build(); let mut encoded_data = Vec::::new(); - // TODO: error - call_data - .encode_call_data_to(&client.metadata(), &mut encoded_data) - .expect("failed to encoded"); + call_data.encode_call_data_to(&client.metadata(), &mut encoded_data)?; Ok(encoded_data) } @@ -133,8 +130,6 @@ pub async fn get_instantiate_payload( instantiate_exec: InstantiateExec, gas_limit: Weight, ) -> anyhow::Result> { - // let code = get_contract_code(instantiate_exec.opts().manifest_path()).await?; - let storage_deposit_limit: Option = None; let mut encoded_data = Vec::::new(); match instantiate_exec.args().code() { @@ -142,7 +137,6 @@ pub async fn get_instantiate_payload( instantiate_exec.args().value(), gas_limit, storage_deposit_limit, - // TODO: revisit if expensive clone is necessary code.clone(), instantiate_exec.args().data().into(), instantiate_exec.args().salt().into(), @@ -159,19 +153,17 @@ pub async fn get_instantiate_payload( ) .build() .encode_call_data_to(&instantiate_exec.client().metadata(), &mut encoded_data), - } - .expect("encoding failed"); // TODO: error + }?; Ok(encoded_data) } -// TODO, don't need full up_opts pub async fn get_contract_code( path: Option<&PathBuf>, ) -> anyhow::Result { let manifest_path = get_manifest_path(path.map(|p| p as &Path))?; - // TODO: signer doesn't matter here + // signer does not matter for this let signer = create_signer("//Alice")?; let extrinsic_opts = ExtrinsicOptsBuilder::::new(signer) From c1c05fb0dba2b26802db2427396934fc62c61ff1 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 00:05:06 -0700 Subject: [PATCH 008/143] chore: use git branch for cargo contract --- Cargo.lock | 6 +++++- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b6d99db..134fdf0d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1264,6 +1264,7 @@ checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" [[package]] name = "contract-build" version = "5.0.0-alpha" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" dependencies = [ "anyhow", "blake2", @@ -1303,6 +1304,7 @@ dependencies = [ [[package]] name = "contract-extrinsics" version = "5.0.0-alpha" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" dependencies = [ "anyhow", "blake2", @@ -1334,6 +1336,7 @@ dependencies = [ [[package]] name = "contract-metadata" version = "5.0.0-alpha" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" dependencies = [ "anyhow", "impl-serde", @@ -1346,6 +1349,7 @@ dependencies = [ [[package]] name = "contract-transcode" version = "5.0.0-alpha" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" dependencies = [ "anyhow", "base58", @@ -4388,7 +4392,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.6.4", + "rand_core 0.5.1", "serde", "unicode-normalization", ] diff --git a/Cargo.toml b/Cargo.toml index 3c11af0d..a88d80ca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,11 +48,11 @@ subxt = "0.37.0" ink_env = "5.0.0" sp-core = "31" sp-weights = "30" -# TODO: upstream cargo-contract changes +# TODO: git deps #contract-build = "5.0.0-alpha" -contract-build = { path = "/Users/peter/dev/use-ink/cargo-contract/crates/build" } +contract-build = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } #contract-extrinsics = "5.0.0-alpha" -contract-extrinsics = { path = "/Users/peter/dev/use-ink/cargo-contract/crates/extrinsics" } +contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" # parachains From ff9d0672f3a08385ab04f92143eaafb5f67baa91 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 14:16:56 -0700 Subject: [PATCH 009/143] feat(pop-up-contract): better error handling and prompt displays --- crates/pop-cli/src/commands/up/contract.rs | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index eb1ef046..485120bd 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -182,13 +182,17 @@ impl UpContractCommand { let maybe_payload = self.wait_for_signature(call_data).await?; if let Some(payload) = maybe_payload { - log::info("Submitting signed payload...")?; + log::success("Signed payload received.")?; + let spinner = spinner(); + spinner.start("Submitting the signed payload..."); let result = submit_signed_payload(self.url.as_str(), payload).await; + spinner.stop("Signed payload submitted."); match result { Ok(_) => { Cli.outro(COMPLETE)?; }, - Err(_) => { + Err(e) => { + error(format!("An error occurred submitting the signed payload: {e}"))?; Cli.outro_cancel(FAILED)?; }, } @@ -365,24 +369,25 @@ impl UpContractCommand { let transaction_data = TransactionData::new(self.url.to_string(), call_data); // starts server let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::info(format!("Wallet signing portal started at http://{}", wallet.addr))?; + log::step(format!("Wallet signing portal started at http://{}", wallet.addr))?; - log::info("Waiting for signature... Press Ctrl+C to terminate early.")?; + log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; loop { - if !wallet.is_running() { - wallet.task_handle.await??; - break; + // Display error, if any. + if let Some(error) = wallet.take_error().await { + log::error(format!("Signing portal error: {error}"))?; } let state = wallet.state.lock().await; - - if state.signed_payload.is_some() { + // If the payload is submitted we terminate the frontend. + if !wallet.is_running() || state.signed_payload.is_some() { + wallet.task_handle.await??; break; } } - let x = Ok(wallet.state.lock().await.signed_payload.clone()); - x + let signed_payload = wallet.state.lock().await.signed_payload.clone(); + Ok(signed_payload) } } From 6b2787aedb6ad1fd4bdedce7caf356ba378dbac3 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 16:41:10 -0700 Subject: [PATCH 010/143] chore(up-contract): outdated field name and clippy allow --- crates/pop-cli/src/commands/up/contract.rs | 2 +- crates/pop-cli/src/wallet_integration.rs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 485120bd..d8db466c 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -369,7 +369,7 @@ impl UpContractCommand { let transaction_data = TransactionData::new(self.url.to_string(), call_data); // starts server let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::step(format!("Wallet signing portal started at http://{}", wallet.addr))?; + log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; loop { diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 2d7c4cdf..87e6b4dd 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -110,6 +110,7 @@ impl WalletIntegrationManager { } /// Signals the wallet integration server to shut down. + #[allow(dead_code)] pub async fn terminate(&mut self) -> anyhow::Result<()> { terminate_helper(&self.state).await } @@ -229,6 +230,7 @@ pub struct FrontendFromString { content: String, } +#[allow(dead_code)] impl FrontendFromString { pub fn new(content: String) -> Self { Self { content } From 1342b1ae68b066a29f0582b6e35459a576e98371 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 10 Dec 2024 17:11:16 -0700 Subject: [PATCH 011/143] feat(up-contract): handle subxt events better, various improvements --- Cargo.lock | 10 +- crates/pop-cli/Cargo.toml | 2 + crates/pop-cli/src/commands/up/contract.rs | 177 ++++++++++++++++----- crates/pop-cli/src/wallet_integration.rs | 7 +- crates/pop-contracts/src/lib.rs | 7 +- crates/pop-contracts/src/up.rs | 93 ++++++++--- 6 files changed, 228 insertions(+), 68 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 134fdf0d..51b12825 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1264,7 +1264,7 @@ checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" [[package]] name = "contract-build" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" dependencies = [ "anyhow", "blake2", @@ -1304,7 +1304,7 @@ dependencies = [ [[package]] name = "contract-extrinsics" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" dependencies = [ "anyhow", "blake2", @@ -1336,7 +1336,7 @@ dependencies = [ [[package]] name = "contract-metadata" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" dependencies = [ "anyhow", "impl-serde", @@ -1349,7 +1349,7 @@ dependencies = [ [[package]] name = "contract-transcode" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" dependencies = [ "anyhow", "base58", @@ -4755,6 +4755,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", + "subxt", + "subxt-signer", "tempfile", "tokio", "tower-http 0.6.2", diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index 4f3ab59a..e5babd7a 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -54,6 +54,8 @@ tower-http = { workspace = true, features = ["fs"] } [dev-dependencies] assert_cmd.workspace = true predicates.workspace = true +subxt.workspace = true +subxt-signer.workspace = true [features] default = ["contract", "parachain", "telemetry"] diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index d8db466c..9b19ef6c 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -7,13 +7,14 @@ use crate::{ wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, }; use clap::Args; -use cliclack::{confirm, log, log::error, spinner}; +use cliclack::{confirm, log, log::error, spinner, ProgressBar}; use console::{Emoji, Style}; use pop_common::manifest::from_path; use pop_contracts::{ build_smart_contract, dry_run_gas_estimate_instantiate, dry_run_upload, - get_instantiate_payload, get_upload_payload, instantiate_smart_contract, is_chain_alive, - parse_hex_bytes, run_contracts_node, set_up_deployment, set_up_upload, submit_signed_payload, + get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, + instantiate_contract_signed, instantiate_smart_contract, is_chain_alive, parse_hex_bytes, + run_contracts_node, set_up_deployment, set_up_upload, upload_contract_signed, upload_smart_contract, UpOpts, Verbosity, }; use sp_core::Bytes; @@ -170,7 +171,7 @@ impl UpContractCommand { // Run steps for signing with wallet integration. Returns early. if self.use_wallet { - let call_data = match self.get_call_data().await { + let (call_data, hash) = match self.get_contract_data().await { Ok(data) => data, Err(e) => { error(format!("An error occurred getting the call data: {e}"))?; @@ -184,23 +185,55 @@ impl UpContractCommand { if let Some(payload) = maybe_payload { log::success("Signed payload received.")?; let spinner = spinner(); - spinner.start("Submitting the signed payload..."); - let result = submit_signed_payload(self.url.as_str(), payload).await; - spinner.stop("Signed payload submitted."); - match result { - Ok(_) => { - Cli.outro(COMPLETE)?; - }, - Err(e) => { - error(format!("An error occurred submitting the signed payload: {e}"))?; + spinner.start("Uploading contract..."); + + if self.upload_only { + let result = upload_contract_signed(self.url.as_str(), payload).await; + // TODO: dry (see else below) + if let Err(e) = result { + spinner.error(format!("An error occurred uploading your contract: {e}")); + Self::terminate_node(process)?; Cli.outro_cancel(FAILED)?; - }, + return Ok(()); + } + let upload_result = result.expect("Error check above."); + + match get_code_hash_from_event(&upload_result, hash) { + Ok(r) => { + spinner.stop(format!("Contract uploaded: The code hash is {:?}", r)); + }, + Err(e) => { + spinner + .error(format!("An error occurred uploading your contract: {e}")); + }, + }; + } else { + let result = instantiate_contract_signed(self.url.as_str(), payload).await; + if let Err(e) = result { + spinner.error(format!("An error occurred uploading your contract: {e}")); + Self::terminate_node(process)?; + Cli.outro_cancel(FAILED)?; + return Ok(()); + } + + let contract_info = result.unwrap(); + let hash = contract_info.code_hash.map(|code_hash| format!("{:?}", code_hash)); + display_contract_info( + &spinner, + contract_info.contract_address.to_string(), + hash, + ); + }; + + if self.upload_only { + log::warning("NOTE: The contract has not been instantiated.")?; } } else { Cli.outro_cancel("Signed payload doesn't exist.")?; } Self::terminate_node(process)?; + Cli.outro(COMPLETE)?; return Ok(()) } @@ -254,29 +287,12 @@ impl UpContractCommand { let spinner = spinner(); spinner.start("Uploading and instantiating the contract..."); let contract_info = instantiate_smart_contract(instantiate_exec, weight_limit).await?; - spinner.stop(format!( - "Contract deployed and instantiated:\n{}", - style(format!( - "{}\n{}", - style(format!( - "{} The contract address is {:?}", - console::Emoji("●", ">"), - contract_info.address - )) - .dim(), - contract_info - .code_hash - .map(|hash| style(format!( - "{} The contract code hash is {:?}", - console::Emoji("●", ">"), - hash - )) - .dim() - .to_string()) - .unwrap_or_default(), - )) - .dim() - )); + display_contract_info( + &spinner, + contract_info.address.to_string(), + contract_info.code_hash, + ); + Self::terminate_node(process)?; Cli.outro(COMPLETE)?; } @@ -342,10 +358,13 @@ impl UpContractCommand { Ok(()) } - async fn get_call_data(&self) -> anyhow::Result> { + // get the call data and contract code hash + async fn get_contract_data(&self) -> anyhow::Result<(Vec, [u8; 32])> { + let contract_code = get_contract_code(self.path.as_ref()).await?; + let hash = contract_code.code_hash(); if self.upload_only { - let call_data = get_upload_payload(self.clone().into()).await?; - Ok(call_data) + let call_data = get_upload_payload(contract_code, self.url.as_str()).await?; + Ok((call_data, hash)) } else { let instantiate_exec = set_up_deployment(self.clone().into()).await?; @@ -356,7 +375,7 @@ impl UpContractCommand { Weight::from_parts(0, 0) }; let call_data = get_instantiate_payload(instantiate_exec, weight_limit).await?; - Ok(call_data) + Ok((call_data, hash)) } } @@ -424,11 +443,33 @@ pub fn has_contract_been_built(path: Option<&Path>) -> bool { project_path.join(format!("target/ink/{}.contract", contract_name)).exists() } +fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Option) { + spinner.stop(format!( + "Contract deployed and instantiated:\n{}", + style(format!( + "{}\n{}", + style(format!("{} The contract address is {:?}", console::Emoji("●", ">"), address)) + .dim(), + code_hash + .map(|hash| style(format!( + "{} The contract code hash is {:?}", + console::Emoji("●", ">"), + hash + )) + .dim() + .to_string()) + .unwrap_or_default(), + )) + .dim() + )); +} + #[cfg(test)] mod tests { use super::*; use duct::cmd; use std::fs::{self, File}; + use subxt::{client::OfflineClientT, utils::to_hex}; use url::Url; fn default_up_contract_command() -> UpContractCommand { @@ -491,6 +532,60 @@ mod tests { Ok(()) } + // TODO: delete this test. + // This is a helper test for an actual running pop CLI. + // It can serve as the "frontend" to query the payload, sign it + // and submit back to the CLI. + #[tokio::test] + async fn sign_call_data() -> anyhow::Result<()> { + use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; + // This struct implements the [`Payload`] trait and is used to submit + // pre-encoded SCALE call data directly, without the dynamic construction of transactions. + struct CallData(Vec); + + impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } + } + + use subxt_signer::sr25519::dev; + let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + let url = "ws://localhost:9944"; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = + subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let signer = dev::alice(); + + let payload = CallData(payload.call_data()); + let ext_params = Params::new().build(); + let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; + + let response = reqwest::Client::new() + .post(&format!("{}/submit", "http://localhost:9090")) + .json(&to_hex(signed.encoded())) + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse JSON response"); + + Ok(()) + } + #[tokio::test] async fn get_upload_call_data_works() -> anyhow::Result<()> { todo!() diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 87e6b4dd..4b9d6e7e 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -29,6 +29,9 @@ impl TransactionData { pub fn new(chain_rpc: String, call_data: Vec) -> Self { Self { chain_rpc, call_data } } + pub fn call_data(&self) -> Vec { + self.call_data.clone() + } } /// Shared state between routes. Serves two purposes: @@ -342,9 +345,9 @@ mod tests { .send() .await .expect("Failed to submit payload") - .json::() + .text() .await - .expect("Failed to parse JSON response"); + .expect("Failed to parse response"); assert_eq!(response, json!({"status": "success"})); assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index fe4621e0..231b144f 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,8 +20,9 @@ pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; pub use up::{ - dry_run_gas_estimate_instantiate, dry_run_upload, get_contract_code, get_instantiate_payload, - get_upload_payload, instantiate_smart_contract, set_up_deployment, set_up_upload, - submit_signed_payload, upload_smart_contract, UpOpts, + dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, + get_instantiate_payload, get_upload_payload, instantiate_contract_signed, + instantiate_smart_contract, set_up_deployment, set_up_upload, submit_signed_payload, + upload_contract_signed, upload_smart_contract, ContractInfo, UpOpts, }; pub use utils::signer::parse_hex_bytes; diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 4f26ccd4..2b439841 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -7,9 +7,10 @@ use crate::{ }, }; use contract_extrinsics::{ + events::{CodeStored, ContractInstantiated}, extrinsic_calls::{Instantiate, InstantiateWithCode}, BalanceVariant, ErrorVariant, ExtrinsicOptsBuilder, InstantiateCommandBuilder, InstantiateExec, - TokenMetadata, UploadCommandBuilder, UploadExec, + InstantiateExecResult, TokenMetadata, UploadCommandBuilder, UploadExec, UploadResult, WasmCode, }; use ink_env::{DefaultEnvironment, Environment}; use sp_core::{bytes::from_hex, Bytes}; @@ -19,10 +20,9 @@ use std::{ path::{Path, PathBuf}, }; use subxt::{ - ext::scale_encode::EncodeAsType, + blocks::ExtrinsicEvents, tx::{Payload, SubmittableExtrinsic}, - utils::to_hex, - PolkadotConfig as DefaultConfig, SubstrateConfig, + Config, PolkadotConfig as DefaultConfig, SubstrateConfig, }; use subxt_signer::sr25519::Keypair; @@ -106,9 +106,7 @@ pub async fn set_up_upload( Ok(upload_exec) } -pub async fn get_upload_payload(up_opts: UpOpts) -> anyhow::Result> { - let code = get_contract_code(up_opts.path.as_ref()).await?; - +pub async fn get_upload_payload(code: WasmCode, url: &str) -> anyhow::Result> { let storage_deposit_limit: Option = None; let upload_code = contract_extrinsics::extrinsic_calls::UploadCode::new( code, @@ -117,7 +115,7 @@ pub async fn get_upload_payload(up_opts: UpOpts) -> anyhow::Result> { ); // TODO: review placement - let rpc_client = subxt::backend::rpc::RpcClient::from_url(up_opts.url.as_str()).await?; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; let client = subxt::OnlineClient::::from_rpc_client(rpc_client).await?; let call_data = upload_code.build(); @@ -178,17 +176,69 @@ pub async fn get_contract_code( Ok(code) } -pub async fn submit_signed_payload(url: &str, payload: String) -> anyhow::Result<()> { +pub async fn upload_contract_signed( + url: &str, + payload: String, +) -> anyhow::Result> { + let events = submit_signed_payload(url, payload).await?; + + let code_stored = events.find_first::>()?; + + Ok(UploadResult { code_stored, events }) +} + +pub async fn instantiate_contract_signed( + url: &str, + payload: String, +) -> anyhow::Result> { + let events = submit_signed_payload(url, payload).await?; + + // The CodeStored event is only raised if the contract has not already been + // uploaded. + let code_hash = events + .find_first::>()? + .map(|code_stored| code_stored.code_hash); + + let instantiated = events + .find_first::>()? + .ok_or_else(|| anyhow::anyhow!("Failed to find Instantiated event"))?; + + Ok(InstantiateExecResult { events, code_hash, contract_address: instantiated.contract }) +} + +pub async fn submit_signed_payload( + url: &str, + payload: String, +) -> anyhow::Result> { let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; let client = subxt::OnlineClient::::from_rpc_client(rpc_client).await?; let hex_encoded = from_hex(&payload)?; - let tx = SubmittableExtrinsic::from_bytes(client, hex_encoded); + let extrinsic = SubmittableExtrinsic::from_bytes(client, hex_encoded); + + // src: https://github.com/use-ink/cargo-contract/blob/68691b9b6cdb7c6ec52ea441b3dc31fcb1ce08e0/crates/extrinsics/src/lib.rs#L143 - tx.submit_and_watch().await?; + use subxt::{ + error::{RpcError, TransactionError}, + tx::TxStatus, + }; - Ok(()) + let mut tx = extrinsic.submit_and_watch().await?; + + while let Some(status) = tx.next().await { + match status? { + TxStatus::InBestBlock(tx_in_block) | TxStatus::InFinalizedBlock(tx_in_block) => { + let events = tx_in_block.wait_for_success().await?; + return Ok(events) + }, + TxStatus::Error { message } => return Err(TransactionError::Error(message).into()), + TxStatus::Invalid { message } => return Err(TransactionError::Invalid(message).into()), + TxStatus::Dropped { message } => return Err(TransactionError::Dropped(message).into()), + _ => continue, + } + } + Err(RpcError::SubscriptionDropped.into()) } /// Estimate the gas required for instantiating a contract without modifying the state of the @@ -292,14 +342,21 @@ pub async fn upload_smart_contract( .upload_code() .await .map_err(|error_variant| Error::UploadContractError(format!("{:?}", error_variant)))?; - if let Some(code_stored) = upload_result.code_stored { + get_code_hash_from_event(&upload_result, upload_exec.code().code_hash()) +} + +pub fn get_code_hash_from_event( + upload_result: &UploadResult, + // used for error reporting + metadata_code_hash: [u8; 32], +) -> Result { + if let Some(code_stored) = upload_result.code_stored.as_ref() { Ok(format!("{:?}", code_stored.code_hash)) } else { - let code_hash: String = - upload_exec.code().code_hash().iter().fold(String::new(), |mut output, b| { - write!(output, "{:02x}", b).expect("expected to write to string"); - output - }); + let code_hash: String = metadata_code_hash.iter().fold(String::new(), |mut output, b| { + write!(output, "{:02x}", b).expect("expected to write to string"); + output + }); Err(Error::UploadContractError(format!( "This contract has already been uploaded with code hash: 0x{code_hash}" ))) From 01e9a30634026aba966ab139e271e96c222250bf Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 10 Dec 2024 17:19:48 -0700 Subject: [PATCH 012/143] feat(up-contract): custom errors in contracts crate --- crates/pop-contracts/src/up.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 2b439841..3d99c1b0 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -16,7 +16,7 @@ use ink_env::{DefaultEnvironment, Environment}; use sp_core::{bytes::from_hex, Bytes}; use sp_weights::Weight; use std::{ - fmt::Write, + fmt::{format, Write}, path::{Path, PathBuf}, }; use subxt::{ @@ -171,7 +171,10 @@ pub async fn get_contract_code( let artifacts_path = artifacts.artifact_path().to_path_buf(); let code = artifacts.code.ok_or_else(|| { - anyhow::anyhow!("Contract code not found from artifact file {}", artifacts_path.display()) + Error::UploadContractError(format!( + "Contract code not found from artifact file {}", + artifacts_path.display() + )) })?; Ok(code) } @@ -201,7 +204,9 @@ pub async fn instantiate_contract_signed( let instantiated = events .find_first::>()? - .ok_or_else(|| anyhow::anyhow!("Failed to find Instantiated event"))?; + .ok_or_else(|| { + Error::InstantiateContractError("Failed to find Instantiated event".to_string()) + })?; Ok(InstantiateExecResult { events, code_hash, contract_address: instantiated.contract }) } From b274572368e79749d1b921b772f9575e78bb3703 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 3 Dec 2024 17:32:40 -0700 Subject: [PATCH 013/143] feat(wallet-integration): implement server and API --- Cargo.lock | 11275 +++++++++++++++++---- crates/pop-wallet-integration/Cargo.toml | 14 + crates/pop-wallet-integration/src/lib.rs | 161 + 3 files changed, 9546 insertions(+), 1904 deletions(-) create mode 100644 crates/pop-wallet-integration/Cargo.toml create mode 100644 crates/pop-wallet-integration/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 51b12825..6f546406 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,11 +23,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli 0.31.0", + "gimli 0.31.1", ] [[package]] @@ -46,6 +46,31 @@ dependencies = [ "generic-array", ] +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" version = "0.7.8" @@ -81,9 +106,68 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" + +[[package]] +name = "alloy-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.18", + "hex-literal", + "itoa", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +dependencies = [ + "arrayvec 0.7.6", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +dependencies = [ + "const-hex", + "dunce", + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.89", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-types" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] [[package]] name = "android-tzdata" @@ -111,9 +195,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -126,49 +210,72 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.87" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.89", +] [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -180,8 +287,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -191,9 +310,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" +dependencies = [ + "ark-bw6-761", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -202,14 +360,83 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", "zeroize", ] @@ -219,20 +446,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.1", "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -243,6 +480,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -256,19 +505,56 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-models-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-scale" +version = "0.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -276,7 +562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.4.0", "digest 0.10.7", "num-bigint", ] @@ -292,6 +578,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -300,6 +596,7 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", + "rayon", ] [[package]] @@ -310,9 +607,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -355,7 +652,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -399,6 +696,66 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "asset-test-utils" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0324df9ce91a9840632e865dd3272bd20162023856f1b189b7ae58afa5c6b61" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-timestamp", + "pallet-xcm", + "pallet-xcm-bridge-hub-router", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + +[[package]] +name = "assets-common" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93438e31a4449fbeab87210931edc8cd156292354f1fc15f17d819ecded6bf25" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "impl-trait-for-tuples", + "log", + "pallet-asset-conversion", + "pallet-assets", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + [[package]] name = "async-channel" version = "2.3.1" @@ -437,9 +794,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", @@ -448,7 +805,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 0.38.36", + "rustix 0.38.41", "slab", "tracing", "windows-sys 0.59.0", @@ -478,9 +835,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.4" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel", "async-io", @@ -491,9 +848,8 @@ dependencies = [ "cfg-if", "event-listener 5.3.1", "futures-lite", - "rustix 0.38.36", + "rustix 0.38.41", "tracing", - "windows-sys 0.59.0", ] [[package]] @@ -508,7 +864,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.36", + "rustix 0.38.41", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -516,9 +872,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -527,13 +883,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -544,13 +900,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -565,11 +921,22 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" @@ -584,7 +951,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "itoa", "matchit", @@ -597,7 +964,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tower 0.5.1", "tower-layer", @@ -620,16 +987,71 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", ] [[package]] -name = "backoff" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tower 0.5.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "getrandom", @@ -643,11 +1065,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.1", + "addr2line 0.24.2", "cfg-if", "libc", "miniz_oxide", - "object 0.36.4", + "object 0.36.5", "rustc-demangle", "windows-targets 0.52.6", ] @@ -712,6 +1134,16 @@ dependencies = [ "serde", ] +[[package]] +name = "binary-merkle-tree" +version = "15.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" +dependencies = [ + "hash-db", + "log", +] + [[package]] name = "bincode" version = "1.3.3" @@ -723,15 +1155,30 @@ dependencies = [ [[package]] name = "bip39" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" dependencies = [ - "bitcoin_hashes 0.11.0", + "bitcoin_hashes 0.13.0", "serde", "unicode-normalization", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -739,10 +1186,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" [[package]] -name = "bitcoin_hashes" -version = "0.11.0" +name = "bitcoin-io" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" [[package]] name = "bitcoin_hashes" @@ -751,7 +1198,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", ] [[package]] @@ -774,6 +1231,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -841,9 +1299,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.16.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aed08d3adb6ebe0eff737115056652670ae290f177759aac19c30456135f94c" +checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -853,10 +1311,10 @@ dependencies = [ "hex", "http 1.1.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-named-pipe", "hyper-util", - "hyperlocal-next", + "hyperlocal", "log", "pin-project-lite", "serde", @@ -864,7 +1322,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror", + "thiserror 2.0.3", "tokio", "tokio-util", "tower-service", @@ -874,9 +1332,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.44.0-rc.2" +version = "1.47.1-rc.27.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709d9aa1c37abb89d40f19f5d0ad6f0d88cb1581264e571c9350fc5bb89cf1c5" +checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" dependencies = [ "serde", "serde_repr", @@ -885,9 +1343,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ "borsh-derive", "cfg_aliases", @@ -895,28 +1353,302 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", - "syn_derive", + "syn 2.0.89", ] [[package]] name = "bounded-collections" -version = "0.2.0" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" +dependencies = [ + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "bp-header-chain" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "890df97cea17ee61ff982466bb9e90cb6b1462adb45380999019388d05e4b92d" +dependencies = [ + "bp-runtime", + "finality-grandpa", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-messages" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efabf94339950b914ba87249497f1a0e35a73849934d164fecae4b275928cf6" +dependencies = [ + "bp-header-chain", + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", +] + +[[package]] +name = "bp-parachains" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9011e5c12c15caf3c4129a98f4f4916ea9165db8daf6ed85867c3106075f40df" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-polkadot" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa6277dd4333917ecfbcc35e9332a9f11682e0a506e76b617c336224660fce33" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "sp-api", + "sp-std", +] + +[[package]] +name = "bp-polkadot-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345cf472bac11ef79d403e4846a666b7d22a13cd16d9c85b62cd6b5e16c4a042" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "frame-system", + "parity-scale-codec", + "parity-util-mem", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-relayers" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9465ad727e466d67d64244a1aa7bb19933a297913fdde34b8e9bda0a341bdeb" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-runtime", + "frame-support", + "frame-system", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-runtime" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" +checksum = "746d9464f912b278f8a5e2400f10541f95da7fc6c7d688a2788b9a46296146ee" dependencies = [ + "frame-support", + "frame-system", + "hash-db", + "impl-trait-for-tuples", "log", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-std", + "sp-trie 37.0.0", + "trie-db 0.29.1", +] + +[[package]] +name = "bp-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e659078b54c0b6bd79896738212a305842ad37168976363233516754337826" +dependencies = [ + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "ed25519-dalek", + "finality-grandpa", + "parity-scale-codec", + "sp-application-crypto 38.0.0", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", +] + +[[package]] +name = "bp-xcm-bridge-hub" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6909117ca87cb93703742939d5f0c4c93e9646d9cda22262e9709d68c929999b" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", "parity-scale-codec", "scale-info", "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bp-xcm-bridge-hub-router" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9284820ca704f5c065563cad77d2e3d069a23cc9cb3a29db9c0de8dd3b173a87" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b53c53d627e2da38f8910807944bf3121e154b5c0ac9e122995af9dfb13ed" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "pallet-message-queue", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0b3aa5fd8481a06ca16e47fd3d2d9c6abe76b27d922ec8980a853f242173b3" +dependencies = [ + "asset-test-utils", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "bp-xcm-bridge-hub", + "bridge-runtime-common", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-bridge-hub", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "bridge-runtime-common" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c639aa22de6e904156a3e8b0e6b9e6af790cb27a1299688cc07997e1ffe5b648" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-xcm-bridge-hub", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-transaction-payment", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", + "staging-xcm 14.2.0", + "tuplex", ] [[package]] @@ -939,15 +1671,24 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.9", "serde", ] +[[package]] +name = "build-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" +dependencies = [ + "semver 0.6.0", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -982,6 +1723,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bytemuck" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" + [[package]] name = "byteorder" version = "1.5.0" @@ -990,9 +1737,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "camino" @@ -1014,23 +1761,37 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.18.1" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +checksum = "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924" dependencies = [ "camino", "cargo-platform", - "semver", + "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 2.0.3", ] [[package]] name = "cargo_toml" -version = "0.20.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965" +checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" dependencies = [ "serde", "toml 0.8.19", @@ -1038,9 +1799,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.18" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", @@ -1053,6 +1814,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -1097,13 +1867,14 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] name = "clap" -version = "4.5.17" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -1111,9 +1882,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.17" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", @@ -1123,27 +1894,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "cliclack" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c827ccada848b64fba073b64518a7416d605ad70c594b5450b5ed1d97e3b5d4" +checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" dependencies = [ "console", "indicatif", @@ -1160,14 +1931,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" @@ -1213,16 +1984,49 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] +[[package]] +name = "const-hex" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487981fa1af147182687064d0a2c336586d337a606595ced9ffb0c685c250c73" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[package]] name = "const-oid" version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + [[package]] name = "const_env" version = "0.1.2" @@ -1269,7 +2073,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata", + "cargo_metadata 0.19.1", "clap", "colored", "contract-metadata", @@ -1277,11 +2081,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde", + "impl-serde 0.5.0", "parity-scale-codec", "regex", - "rustc_version", - "semver", + "rustc_version 0.4.1", + "semver 1.0.23", "serde", "serde_json", "strum 0.26.3", @@ -1296,7 +2100,7 @@ dependencies = [ "walkdir", "wasm-encoder", "wasm-opt", - "wasmparser 0.207.0", + "wasmparser 0.220.0", "which", "zip", ] @@ -1317,17 +2121,17 @@ dependencies = [ "hex", "ink_env", "ink_metadata", - "itertools 0.12.1", + "itertools 0.13.0", "pallet-contracts-uapi-next", "parity-scale-codec", "rust_decimal", "scale-info", "serde", "serde_json", - "sp-core", - "sp-runtime", - "sp-weights", - "subxt", + "sp-core 32.0.0", + "sp-runtime 35.0.0", + "sp-weights 31.0.0", + "subxt 0.38.0", "tokio", "tracing", "url", @@ -1339,8 +2143,8 @@ version = "5.0.0-alpha" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" dependencies = [ "anyhow", - "impl-serde", - "semver", + "impl-serde 0.5.0", + "semver 1.0.23", "serde", "serde_json", "url", @@ -1357,19 +2161,19 @@ dependencies = [ "contract-metadata", "escape8259", "hex", - "indexmap 2.5.0", + "indexmap 2.6.0", "ink_env", "ink_metadata", - "itertools 0.12.1", + "itertools 0.13.0", "nom", "nom-supreme", "parity-scale-codec", - "primitive-types", + "primitive-types 0.13.1", "scale-info", "serde", "serde_json", "strsim 0.11.1", - "thiserror", + "thiserror 2.0.3", "tracing", ] @@ -1415,13 +2219,57 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] +[[package]] +name = "cranelift-bforest" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" +dependencies = [ + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-isle", + "gimli 0.27.3", + "hashbrown 0.13.2", + "log", + "regalloc2 0.6.1", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" + [[package]] name = "cranelift-entity" version = "0.95.1" @@ -1431,6 +2279,51 @@ dependencies = [ "serde", ] +[[package]] +name = "cranelift-frontend" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" + +[[package]] +name = "cranelift-native" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" +dependencies = [ + "cranelift-codegen", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-wasm" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "itertools 0.10.5", + "log", + "smallvec", + "wasmparser 0.102.0", + "wasmtime-types", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -1440,6 +2333,25 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-queue" version = "0.3.11" @@ -1457,15 +2369,15 @@ checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "libc", - "mio 0.8.11", + "mio", "parking_lot", + "rustix 0.38.41", "signal-hook", "signal-hook-mio", "winapi", @@ -1519,6 +2431,320 @@ dependencies = [ "subtle", ] +[[package]] +name = "crypto_secretbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" +dependencies = [ + "aead", + "cipher", + "generic-array", + "poly1305", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "cumulus-pallet-aura-ext" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cbe2735fc7cf2b6521eab00cb1a1ab025abc1575cc36887b36dc8c5cb1c9434" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-aura", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-aura", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-pallet-dmp-queue" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97263a8e758d201ebe81db7cea7b278b4fb869c11442f77acef70138ac1a252f" +dependencies = [ + "cumulus-primitives-core", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-pallet-parachain-system" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "546403ee1185f4051a74cc9c9d76e82c63cac3fb68e1bf29f61efb5604c96488" +dependencies = [ + "bytes", + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-primitives-proof-size-hostfunction", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-message-queue", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "scale-info", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-std", + "sp-trie 37.0.0", + "sp-version", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "trie-db 0.29.1", +] + +[[package]] +name = "cumulus-pallet-parachain-system-proc-macro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "befbaf3a1ce23ac8476481484fef5f4d500cbd15b4dad6380ce1d28134b0c1f7" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "cumulus-pallet-session-benchmarking" +version = "19.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18168570689417abfb514ac8812fca7e6429764d01942750e395d7d8ce0716ef" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-pallet-solo-to-para" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42c74548c8cab75da6f2479a953f044b582cfce98479862344a24df7bbd215" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-sudo", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "scale-info", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-pallet-xcm" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e49231f6cd8274438b078305dc8ce44c54c0d3f4a28e902589bcbaa53d954608" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-pallet-xcmp-queue" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f788bdac9474795ea13ba791b55798fb664b2e3da8c3a7385b480c9af4e6539" +dependencies = [ + "bounded-collections", + "bp-xcm-bridge-hub-router", + "cumulus-primitives-core", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-message-queue", + "parity-scale-codec", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "cumulus-ping" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47128f797359951723e2d106a80e592d007bb7446c299958cdbafb1489ddbf0" +dependencies = [ + "cumulus-pallet-xcm", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-primitives-aura" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11e7825bcf3cc6c962a5b9b9f47e02dc381109e521d0bc00cad785c65da18471" +dependencies = [ + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-primitives 15.0.0", + "sp-api", + "sp-consensus-aura", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-primitives-core" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c6b5221a4a3097f2ebef66c84c1e6d7a0b8ec7e63f2bd5ae04c1e6d3fc7514e" +dependencies = [ + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "scale-info", + "sp-api", + "sp-runtime 39.0.2", + "sp-trie 37.0.0", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-primitives-parachain-inherent" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "842a694901e04a62d88995418dec35c22f7dba2b34d32d2b8de37d6b92f973ff" +dependencies = [ + "async-trait", + "cumulus-primitives-core", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-inherents", + "sp-trie 37.0.0", +] + +[[package]] +name = "cumulus-primitives-proof-size-hostfunction" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "421f03af054aac7c89e87a49e47964886e53a8d7395990eab27b6f201d42524f" +dependencies = [ + "sp-externalities 0.29.0", + "sp-runtime-interface 28.0.0", + "sp-trie 37.0.0", +] + +[[package]] +name = "cumulus-primitives-storage-weight-reclaim" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fc49dfec0ba3438afad73787736cc0dba88d15b5855881f12a4d8b812a72927" +dependencies = [ + "cumulus-primitives-core", + "cumulus-primitives-proof-size-hostfunction", + "docify", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-primitives-timestamp" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cffb8f010f39ac36b31d38994b8f9d9256d9b5e495d96b4ec59d3e30852d53" +dependencies = [ + "cumulus-primitives-core", + "sp-inherents", + "sp-timestamp", +] + +[[package]] +name = "cumulus-primitives-utility" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bdcf4d46dd93f1e6d5dd6d379133566a44042ba6476d04bdcbdb4981c622ae4" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "log", + "pallet-asset-conversion", + "parity-scale-codec", + "polkadot-runtime-common", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "cumulus-test-relay-sproof-builder" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e570e41c3f05a8143ebff967bbb0c7dcaaa6f0bebd8639b9418b8005b13eda03" +dependencies = [ + "cumulus-primitives-core", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-trie 37.0.0", +] + [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -1543,7 +2769,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version", + "rustc_version 0.4.1", "subtle", "zeroize", ] @@ -1556,51 +2782,52 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] name = "cxx" -version = "1.0.128" +version = "1.0.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ccead7d199d584d139148b04b4a368d1ec7556a1d9ea2548febb1b9d49f9a4" +checksum = "2568d7d2cfc051e43414fe1ef80c712cbcd60c3624d1ad1cb4b2572324d0a5d9" dependencies = [ "cc", "cxxbridge-flags", "cxxbridge-macro", + "foldhash", "link-cplusplus", ] [[package]] name = "cxx-build" -version = "1.0.128" +version = "1.0.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77953e99f01508f89f55c494bfa867171ef3a6c8cea03d26975368f2121a5c1" +checksum = "1674a8b80cdcce32512a75975d85d569b160f612ee1d31645bc46771f7c220a1" dependencies = [ "cc", "codespan-reporting", - "once_cell", "proc-macro2", "quote", "scratch", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] name = "cxxbridge-flags" -version = "1.0.128" +version = "1.0.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65777e06cc48f0cb0152024c77d6cf9e4bdb4408e7b48bea993d42fa0f5b02b6" +checksum = "0c710c27f23b7fa00c23aaee9e6fd3e79a6dffc5f5c6217487ec5213f51296b7" [[package]] name = "cxxbridge-macro" -version = "1.0.128" +version = "1.0.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98532a60dedaebc4848cb2cba5023337cc9ea3af16a5b062633fabfd9f18fb60" +checksum = "0aa53ef9fc54b986272efe83e257bbb417d1c3ceab1b732411d8c634fda572be" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "rustversion", + "syn 2.0.89", ] [[package]] @@ -1648,7 +2875,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -1670,7 +2897,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -1738,7 +2965,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -1749,18 +2976,18 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -1772,8 +2999,29 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version", - "syn 2.0.77", + "rustc_version 0.4.1", + "syn 2.0.89", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "unicode-xid", ] [[package]] @@ -1815,6 +3063,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs" version = "5.0.1" @@ -1836,6 +3094,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[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", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1844,7 +3113,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -1855,18 +3124,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" dependencies = [ "common-path", "derive-syn-parse", @@ -1874,7 +3143,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.77", + "syn 2.0.89", "termcolor", "toml 0.8.19", "walkdir", @@ -1898,6 +3167,12 @@ dependencies = [ "shared_child", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -2028,13 +3303,44 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "env_filter" version = "0.1.2" @@ -2045,6 +3351,19 @@ dependencies = [ "regex", ] +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + [[package]] name = "env_logger" version = "0.11.5" @@ -2086,6 +3405,47 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" +[[package]] +name = "ethabi-decode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" +dependencies = [ + "ethereum-types", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "scale-info", + "uint 0.9.5", +] + [[package]] name = "event-listener" version = "4.0.3" @@ -2129,7 +3489,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -2138,11 +3498,28 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" + +[[package]] +name = "fastrlp" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec 0.7.6", + "auto_impl", + "bytes", +] [[package]] name = "ff" @@ -2170,6 +3547,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "file-per-thread-logger" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" +dependencies = [ + "env_logger 0.10.2", + "log", +] + [[package]] name = "filetime" version = "0.2.25" @@ -2182,6 +3569,22 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "finality-grandpa" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3" +dependencies = [ + "either", + "futures", + "futures-timer", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot", + "scale-info", +] + [[package]] name = "finito" version = "0.1.0" @@ -2206,9 +3609,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -2229,6 +3632,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2254,139 +3663,414 @@ dependencies = [ ] [[package]] -name = "frame-metadata" -version = "15.1.0" +name = "frame-benchmarking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +checksum = "a01bdd47c2d541b38bd892da647d1e972c9d85b4ecd7094ad64f7600175da54d" dependencies = [ - "cfg-if", + "frame-support", + "frame-support-procedural", + "frame-system", + "linregress", + "log", "parity-scale-codec", + "paste", "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-storage 21.0.0", + "static_assertions", ] [[package]] -name = "frame-metadata" -version = "16.0.0" +name = "frame-benchmarking-pallet-pov" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" +checksum = "6ffde6f573a63eeb1ccb7d2667c5741a11ce93bc30f33712e5326b9d8a811c29" dependencies = [ - "cfg-if", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "serde", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "fs-err" -version = "2.11.0" +name = "frame-decode" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +checksum = "02d3379df61ff3dd871e2dde7d1bcdc0263e613c21c7579b149fd4f0ad9b1dc2" dependencies = [ - "autocfg", + "frame-metadata 17.0.0", + "parity-scale-codec", + "scale-decode 0.14.0", + "scale-info", + "scale-type-resolver 0.2.0", + "sp-crypto-hashing", ] [[package]] -name = "funty" -version = "2.0.0" +name = "frame-election-provider-solution-type" +version = "14.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +checksum = "8156f209055d352994ecd49e19658c6b469d7c6de923bd79868957d0dcfb6f71" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] [[package]] -name = "futures" -version = "0.3.30" +name = "frame-election-provider-support" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "c36f5116192c63d39f1b4556fa30ac7db5a6a52575fa241b045f7dfa82ecc2be" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "frame-election-provider-solution-type", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", ] [[package]] -name = "futures-channel" -version = "0.3.30" +name = "frame-executive" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "c365bf3879de25bbee28e9584096955a02fbe8d7e7624e10675800317f1cee5b" dependencies = [ - "futures-core", - "futures-sink", + "aquamarine", + "frame-support", + "frame-system", + "frame-try-runtime", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", ] [[package]] -name = "futures-core" -version = "0.3.30" +name = "frame-metadata" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] [[package]] -name = "futures-executor" -version = "0.3.30" +name = "frame-metadata" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", ] [[package]] -name = "futures-io" -version = "0.3.30" +name = "frame-metadata" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "701bac17e9b55e0f95067c428ebcb46496587f08e8cf4ccc0fe5903bea10dbb8" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", +] [[package]] -name = "futures-lite" -version = "2.3.0" +name = "frame-metadata-hash-extension" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "56ac71dbd97039c49fdd69f416a4dd5d8da3652fdcafc3738b45772ad79eb4ec" dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", + "array-bytes", + "docify", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "futures-macro" -version = "0.3.30" +name = "frame-support" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "1e44af69fa61bc5005ffe0339e198957e77f0f255704a9bee720da18a733e3dc" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "aquamarine", + "array-bytes", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata 16.0.0", + "frame-support-procedural", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "smallvec", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing-proc-macro", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io 38.0.0", + "sp-metadata-ir", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", + "sp-state-machine 0.43.0", + "sp-std", + "sp-tracing 17.0.1", + "sp-weights 31.0.0", + "static_assertions", + "tt-call", ] [[package]] -name = "futures-sink" -version = "0.3.30" +name = "frame-support-procedural" +version = "30.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "5e8f9b6bc1517a6fcbf0b2377e5c8c6d39f5bb7862b191a59a9992081d63972d" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "expander", + "frame-support-procedural-tools", + "itertools 0.11.0", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-crypto-hashing", + "syn 2.0.89", +] [[package]] -name = "futures-task" -version = "0.3.30" +name = "frame-support-procedural-tools" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "bead15a320be1764cdd50458c4cfacb23e0cee65f64f500f8e34136a94c7eeca" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] [[package]] -name = "futures-timer" -version = "3.0.3" +name = "frame-support-procedural-tools-derive" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed971c6435503a099bdac99fe4c5bea08981709e5b5a0a8535a1856f48561191" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "frame-system" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c7fa02f8c305496d2ae52edaecdb9d165f11afa965e05686d7d7dd1ce93611" +dependencies = [ + "cfg-if", + "docify", + "frame-support", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-version", + "sp-weights 31.0.0", +] + +[[package]] +name = "frame-system-benchmarking" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9693b2a736beb076e673520e1e8dee4fc128b8d35b020ef3e8a4b1b5ad63d9f2" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "frame-system-rpc-runtime-api" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "475c4f8604ba7e4f05cd2c881ba71105093e638b9591ec71a8db14a64b3b4ec3" +dependencies = [ + "docify", + "parity-scale-codec", + "sp-api", +] + +[[package]] +name = "frame-try-runtime" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c811a5a1f5429c7fb5ebbf6cf9502d8f9b673fd395c12cf46c44a30a7daf0e" +dependencies = [ + "frame-support", + "parity-scale-codec", + "sp-api", + "sp-runtime 39.0.2", +] + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-timer" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -2400,6 +4084,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -2432,22 +4125,42 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator", + "fallible-iterator 0.2.0", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.31.0" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +dependencies = [ + "fallible-iterator 0.3.0", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "git2" @@ -2513,7 +4226,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2522,9 +4235,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", @@ -2532,7 +4245,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2583,6 +4296,17 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "heck" version = "0.4.1" @@ -2619,6 +4343,21 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec 0.7.6", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + [[package]] name = "hkdf" version = "0.12.4" @@ -2739,7 +4478,13 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" name = "httparse" version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -2764,9 +4509,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2788,14 +4533,14 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", + "h2 0.4.7", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -2814,7 +4559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -2830,7 +4575,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -2846,9 +4591,9 @@ checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -2861,7 +4606,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.30", + "hyper 0.14.31", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -2874,7 +4619,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -2888,7 +4633,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "native-tls", "tokio", @@ -2898,16 +4643,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.1", "pin-project-lite", "socket2", "tokio", @@ -2917,14 +4662,14 @@ dependencies = [ ] [[package]] -name = "hyperlocal-next" -version = "0.9.0" +name = "hyperlocal" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" +checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ "hex", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -2933,9 +4678,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2955,160 +4700,336 @@ dependencies = [ ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "icu_collections" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] [[package]] -name = "idna" -version = "0.5.0" +name = "icu_locid" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", ] [[package]] -name = "impl-codec" -version = "0.6.0" +name = "icu_locid_transform" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" dependencies = [ - "parity-scale-codec", + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "impl-serde" -version = "0.4.0" +name = "icu_locid_transform_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ - "serde", + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "icu_normalizer_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "indent_write" -version = "2.2.0" +name = "icu_properties_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" [[package]] -name = "indexmap" -version = "1.9.3" +name = "icu_provider" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "indexmap" -version = "2.5.0" +name = "icu_provider_macros" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ - "equivalent", - "hashbrown 0.14.5", - "serde", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "indexmap-nostd" -version = "0.4.0" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] -name = "indicatif" -version = "0.17.8" +name = "idna" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "console", - "instant", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67aa010c1e3da95bf151bd8b4c059b2ed7e75387cdb969b4f8f2723a43f9941" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indent_write" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "indexmap-nostd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" + +[[package]] +name = "indicatif" +version = "0.17.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +dependencies = [ + "console", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] name = "ink_allocator" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cee56055bac6d928d425e944c5f3b69baa33c9635822fd1c00cd4afc70fde3e" +checksum = "f339ca8bde70e85a8a8aaf3b85c47c223505464026c14d4e8674b262e2c8f702" dependencies = [ "cfg-if", ] [[package]] name = "ink_engine" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f357e2e867f4e222ffc4015a6e61d1073548de89f70a4e36a8b0385562777fa" +checksum = "71e99d2fa2172fca9bccc80545de3fd15c1679fb2054b2acfce9addbbb2285f6" dependencies = [ "blake2", - "derive_more", + "derive_more 1.0.0", "ink_primitives", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", ] [[package]] name = "ink_env" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cec50b7e4f8406aab25801b015d3802a52d76cfbe48ce11cfb4200fa88e296" +checksum = "f99c28db777ffd7c70f9ca9a3f15481e9b06901fc71cdb76a92d109553103283" dependencies = [ "blake2", "cfg-if", "const_env", - "derive_more", + "derive_more 1.0.0", "ink_allocator", "ink_engine", "ink_prelude", "ink_primitives", "ink_storage_traits", "num-traits", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", "paste", "rlibc", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "schnorrkel", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", + "staging-xcm 11.0.0", "static_assertions", ] [[package]] name = "ink_metadata" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98fcc0ff9292ff68c7ee7b84c93533c9ff13859ec3b148faa822e2da9954fe6" +checksum = "4a0a9f9ec91e9b3959d65f942a31b974553581f56d5d3e6110103389275fcebd" dependencies = [ - "derive_more", - "impl-serde", + "derive_more 1.0.0", + "impl-serde 0.4.0", "ink_prelude", "ink_primitives", "linkme", @@ -3120,33 +5041,33 @@ dependencies = [ [[package]] name = "ink_prelude" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea1734d058c80aa72e59c8ae75624fd8a51791efba21469f273156c0f4cad5c9" +checksum = "c06e9cea08327df71f1d30f7efd1fc5fd3934a4b66ad03741229f30712f675d1" dependencies = [ "cfg-if", ] [[package]] name = "ink_primitives" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec35ef7f45e67a53b6142d7e7f18e6d9292d76c3a2a1da14cf8423e481813d" +checksum = "76971939c364a0fafd57687e581f96df299400679f421ad3cd9d05d14816dc10" dependencies = [ - "derive_more", + "derive_more 1.0.0", "ink_prelude", "parity-scale-codec", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "xxhash-rust", ] [[package]] name = "ink_storage_traits" -version = "5.0.0" +version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ce49e3d2935fc1ec3e73117119712b187d3123339f6a31624e92f75fa2293d" +checksum = "bfa55ef65b50240824ea08abe3130d7971e633393239df83dfdd4a2a4731aaff" dependencies = [ "ink_metadata", "ink_prelude", @@ -3195,9 +5116,20 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-terminal" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] [[package]] name = "is_terminal_polyfill" @@ -3214,6 +5146,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -3223,11 +5164,20 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -3239,7 +5189,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", ] @@ -3266,9 +5216,9 @@ checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -3281,7 +5231,7 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3294,7 +5244,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3317,7 +5267,19 @@ checksum = "62b089779ad7f80768693755a031cc14a7766aba707cbe886674e3f79e9b7e47" dependencies = [ "jsonrpsee-core 0.23.2", "jsonrpsee-types 0.23.2", - "jsonrpsee-ws-client", + "jsonrpsee-ws-client 0.23.2", +] + +[[package]] +name = "jsonrpsee" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5c71d8c1a731cc4227c2f698d377e7848ca12c8a48866fc5e6951c43a4db843" +dependencies = [ + "jsonrpsee-client-transport 0.24.7", + "jsonrpsee-core 0.24.7", + "jsonrpsee-types 0.24.7", + "jsonrpsee-ws-client 0.24.7", ] [[package]] @@ -3333,7 +5295,7 @@ dependencies = [ "rustls-native-certs 0.7.3", "rustls-pki-types", "soketto 0.7.1", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-rustls 0.25.0", "tokio-util", @@ -3352,11 +5314,34 @@ dependencies = [ "http 1.1.0", "jsonrpsee-core 0.23.2", "pin-project", - "rustls 0.23.13", + "rustls 0.23.19", + "rustls-pki-types", + "rustls-platform-verifier", + "soketto 0.8.0", + "thiserror 1.0.69", + "tokio", + "tokio-rustls 0.26.0", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "548125b159ba1314104f5bb5f38519e03a41862786aa3925cf349aae9cdd546e" +dependencies = [ + "base64 0.22.1", + "futures-util", + "http 1.1.0", + "jsonrpsee-core 0.24.7", + "pin-project", + "rustls 0.23.19", "rustls-pki-types", "rustls-platform-verifier", "soketto 0.8.0", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-rustls 0.26.0", "tokio-util", @@ -3375,13 +5360,13 @@ dependencies = [ "beef", "futures-timer", "futures-util", - "hyper 0.14.30", + "hyper 0.14.31", "jsonrpsee-types 0.22.5", "pin-project", - "rustc-hash", + "rustc-hash 1.1.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -3400,10 +5385,30 @@ dependencies = [ "futures-util", "jsonrpsee-types 0.23.2", "pin-project", - "rustc-hash", + "rustc-hash 1.1.0", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2882f6f8acb9fdaec7cefc4fd607119a9bd709831df7d7672a1d3b644628280" +dependencies = [ + "async-trait", + "futures-timer", + "futures-util", + "jsonrpsee-types 0.24.7", + "pin-project", + "rustc-hash 2.0.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -3416,13 +5421,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ccf93fc4a0bfe05d851d37d7c32b7f370fe94336b52a2f0efc5f1981895c2e5" dependencies = [ "async-trait", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "jsonrpsee-core 0.22.5", "jsonrpsee-types 0.22.5", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tower 0.4.13", "tracing", @@ -3439,7 +5444,7 @@ dependencies = [ "beef", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3452,7 +5457,19 @@ dependencies = [ "http 1.1.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1" +dependencies = [ + "http 1.1.0", + "serde", + "serde_json", + "thiserror 1.0.69", ] [[package]] @@ -3468,11 +5485,24 @@ dependencies = [ "url", ] +[[package]] +name = "jsonrpsee-ws-client" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" +dependencies = [ + "http 1.1.0", + "jsonrpsee-client-transport 0.24.7", + "jsonrpsee-core 0.24.7", + "jsonrpsee-types 0.24.7", + "url", +] + [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -3505,6 +5535,16 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + [[package]] name = "kube" version = "0.87.2" @@ -3531,7 +5571,7 @@ dependencies = [ "home", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "hyper-timeout", "jsonpath-rust", @@ -3542,11 +5582,11 @@ dependencies = [ "rand", "rustls 0.21.12", "rustls-pemfile 1.0.4", - "secrecy", + "secrecy 0.8.0", "serde", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite", "tokio-util", @@ -3569,7 +5609,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3592,7 +5632,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -3612,9 +5652,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36" [[package]] name = "libgit2-sys" @@ -3632,9 +5672,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libp2p" @@ -3656,7 +5696,7 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3706,16 +5746,16 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror", - "unsigned-varint", + "thiserror 1.0.69", + "unsigned-varint 0.7.2", "void", ] [[package]] name = "libp2p-identity" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" +checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" dependencies = [ "bs58", "ed25519-dalek", @@ -3724,7 +5764,7 @@ dependencies = [ "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", "tracing", "zeroize", ] @@ -3846,22 +5886,31 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "566336154b9e58a4f055f6dd4cbab62c7dc0826ce3c0a04e63b2d2ecd784cdae" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", +] + +[[package]] +name = "linregress" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9eda9dcf4f2a99787827661f312ac3219292549c2ee992bf9a6248ffb066bf7" +dependencies = [ + "nalgebra", ] [[package]] @@ -3876,6 +5925,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -3894,11 +5949,20 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.12.3", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", ] [[package]] @@ -3911,33 +5975,81 @@ dependencies = [ ] [[package]] -name = "matchers" -version = "0.0.1" +name = "macro_magic" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" dependencies = [ - "regex-automata 0.1.10", + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.89", ] [[package]] -name = "matchit" -version = "0.7.3" +name = "macro_magic_core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.89", +] [[package]] -name = "memchr" -version = "2.7.4" +name = "macro_magic_core_macros" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] [[package]] -name = "memfd" -version = "0.6.4" +name = "macro_magic_macros" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" +checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ - "rustix 0.38.36", + "macro_magic_core", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "matchers" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memfd" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" +dependencies = [ + "rustix 0.38.41", ] [[package]] @@ -4001,18 +6113,6 @@ dependencies = [ "adler2", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.48.0", -] - [[package]] name = "mio" version = "1.0.2" @@ -4021,15 +6121,16 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi 0.3.9", "libc", + "log", "wasi", "windows-sys 0.52.0", ] [[package]] name = "mockito" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" +checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" dependencies = [ "assert-json-diff", "bytes", @@ -4038,7 +6139,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "log", "rand", @@ -4049,11 +6150,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "multi-stash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" + [[package]] name = "multiaddr" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" dependencies = [ "arrayref", "byteorder", @@ -4064,7 +6171,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.8.0", "url", ] @@ -4081,12 +6188,12 @@ dependencies = [ [[package]] name = "multihash" -version = "0.19.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076d548d76a0e2a0d4ab471d0b1c36c577786dfc4471242035d97a12a735c492" +checksum = "cc41f430805af9d1cf4adae4ed2149c759b877b01d909a1f40256188d09345d2" dependencies = [ "core2", - "unsigned-varint", + "unsigned-varint 0.8.0", ] [[package]] @@ -4100,7 +6207,22 @@ dependencies = [ "log", "pin-project", "smallvec", - "unsigned-varint", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", ] [[package]] @@ -4178,6 +6300,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -4188,12 +6320,32 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "num-format" version = "0.4.4" @@ -4231,6 +6383,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -4263,18 +6416,27 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -4284,9 +6446,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -4305,7 +6467,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -4316,18 +6478,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.2+3.3.2" +version = "300.4.1+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -4372,2008 +6534,5669 @@ dependencies = [ ] [[package]] -name = "pallet-contracts-uapi-next" -version = "6.0.3" +name = "overload" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd549c16296ea5b2eb7c65c56aba548b286c1be4d7675b424ff6ccb8319c97a9" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallet-alliance" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59378a648a0aa279a4b10650366c3389cd0a1239b1876f74bfecd268eecb086b" dependencies = [ - "bitflags 1.3.2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-collective", + "pallet-identity", "parity-scale-codec", - "paste", - "polkavm-derive 0.5.0", "scale-info", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parity-bip39" -version = "2.0.1" +name = "pallet-asset-conversion" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +checksum = "33f0078659ae95efe6a1bf138ab5250bc41ab98f22ff3651d0208684f08ae797" dependencies = [ - "bitcoin_hashes 0.13.0", - "rand", - "rand_core 0.5.1", - "serde", - "unicode-normalization", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parity-scale-codec" -version = "3.6.12" +name = "pallet-asset-conversion-ops" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "3edbeda834bcd6660f311d4eead3dabdf6d385b7308ac75b0fae941a960e6c3a" dependencies = [ - "arrayvec 0.7.6", - "bitvec", - "byte-slice-cast", - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-asset-conversion", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" +name = "pallet-asset-conversion-tx-payment" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "1ab66c4c22ac0f20e620a954ce7ba050118d6d8011e2d02df599309502064e98" dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 1.0.109", + "frame-support", + "frame-system", + "pallet-asset-conversion", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "parking" -version = "2.2.1" +name = "pallet-asset-rate" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +checksum = "71b2149aa741bc39466bbcc92d9d0ab6e9adcf39d2790443a735ad573b3191e7" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "parking_lot" -version = "0.12.3" +name = "pallet-asset-tx-payment" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "406a486466d15acc48c99420191f96f1af018f3381fde829c467aba489030f18" dependencies = [ - "lock_api", - "parking_lot_core", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parking_lot_core" -version = "0.9.10" +name = "pallet-assets" +version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "f45f4eb6027fc34c4650e0ed6a7e57ed3335cc364be74b4531f714237676bcee" dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "password-hash" +name = "pallet-assets-freezer" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +checksum = "127adc2250b89416b940850ce2175dab10a9297b503b1fcb05dc555bd9bd3207" dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-assets", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "pbkdf2" -version = "0.12.2" +name = "pallet-atomic-swap" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "15906a685adeabe6027e49c814a34066222dd6136187a8a79c213d0d739b6634" dependencies = [ - "digest 0.10.7", - "password-hash", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "pem" -version = "3.0.4" +name = "pallet-aura" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +checksum = "b31da6e794d655d1f9c4da6557a57399538d75905a7862a2ed3f7e5fb711d7e4" dependencies = [ - "base64 0.22.1", - "serde", + "frame-support", + "frame-system", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-aura", + "sp-runtime 39.0.2", ] [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "pallet-authority-discovery" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "ffb0208f0538d58dcb78ce1ff5e6e8641c5f37b23b20b05587e51da30ab13541" +dependencies = [ + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-authority-discovery", + "sp-runtime 39.0.2", +] [[package]] -name = "pest" -version = "2.7.12" +name = "pallet-authorship" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" +checksum = "625d47577cabbe1318ccec5d612e2379002d1b6af1ab6edcef3243c66ec246df" dependencies = [ - "memchr", - "thiserror", - "ucd-trie", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "pest_derive" -version = "2.7.12" +name = "pallet-babe" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664d22978e2815783adbdd2c588b455b1bd625299ce36b2a99881ac9627e6d8d" +checksum = "4ee096c0def13832475b340d00121025e0225de29604d44bc6dfcaa294c995b4" dependencies = [ - "pest", - "pest_generator", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-babe", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", ] [[package]] -name = "pest_generator" -version = "2.7.12" +name = "pallet-bags-list" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2d5487022d5d33f4c30d91c22afa240ce2a644e87fe08caad974d4eab6badbe" +checksum = "0fd23a6f94ba9c1e57c8a7f8a41327d132903a79c55c0c83f36cbae19946cf10" dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.77", + "aquamarine", + "docify", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", ] [[package]] -name = "pest_meta" -version = "2.7.12" +name = "pallet-balances" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0091754bbd0ea592c4deb3a122ce8ecbb0753b738aa82bc055fcc2eccc8d8174" +checksum = "5c6945b078919acb14d126490e4b0973a688568b30142476ca69c6df2bed27ad" dependencies = [ - "once_cell", - "pest", - "sha2 0.10.8", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "pin-project" -version = "1.1.5" +name = "pallet-beefy" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "014d177a3aba19ac144fc6b2b5eb94930b9874734b91fd014902b6706288bb5f" dependencies = [ - "pin-project-internal", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-beefy", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", ] [[package]] -name = "pin-project-internal" -version = "1.1.5" +name = "pallet-beefy-mmr" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "9c64f536e7f04cf3a0a17fdf20870ddb3d63a7690419c40f75cfd2f72b6e6d22" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "array-bytes", + "binary-merkle-tree", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-beefy", + "pallet-mmr", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-consensus-beefy", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", ] [[package]] -name = "pin-project-lite" -version = "0.2.14" +name = "pallet-bounties" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "a1163f9cd8bbc47ec0c6900a3ca67689d8d7b40bedfa6aa22b1b3c6027b1090e" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "pallet-bridge-grandpa" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "1d825fbed9fb68bc5d344311653dc0f69caeabe647365abf79a539310b2245f6" +dependencies = [ + "bp-header-chain", + "bp-runtime", + "bp-test-utils", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-consensus-grandpa", + "sp-runtime 39.0.2", + "sp-std", +] [[package]] -name = "piper" -version = "0.2.4" +name = "pallet-bridge-messages" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "a1decdc9fb885e46eb17f850aa14f8cf39e17f31574aa6a5fa1a9e603cc526a2" dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", + "bp-header-chain", + "bp-messages", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", ] [[package]] -name = "pkcs8" -version = "0.10.2" +name = "pallet-bridge-parachains" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "41450a8d214f20eaff57aeca8e647b20c0df7d66871ee2262609b90824bd4cca" dependencies = [ - "der", - "spki", + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", ] [[package]] -name = "pkg-config" -version = "0.3.30" +name = "pallet-bridge-relayers" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "2faead05455a965a0a0ec69ffa779933479b599e40bda809c0aa1efa72a39281" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-relayers", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-runtime 39.0.2", + "sp-std", +] [[package]] -name = "polkavm-common" -version = "0.5.0" +name = "pallet-broker" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" +checksum = "3043c90106d88cb93fcf0d9b6d19418f11f44cc2b11873414aec3b46044a24ea" +dependencies = [ + "bitvec", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "polkavm-common" -version = "0.8.0" +name = "pallet-child-bounties" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" +checksum = "c7f3bc38ae6584b5f57e4de3e49e5184bfc0f20692829530ae1465ffe04e09e7" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bounties", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "polkavm-common" -version = "0.9.0" +name = "pallet-collator-selection" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" +checksum = "658798d70c9054165169f6a6a96cfa9d6a5e7d24a524bc19825bf17fcbc5cc5a" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-balances", + "pallet-session", + "parity-scale-codec", + "rand", + "scale-info", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", +] [[package]] -name = "polkavm-derive" -version = "0.5.0" +name = "pallet-collective" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8" +checksum = "8e149f1aefd444c9a1da6ec5a94bc8a7671d7a33078f85dd19ae5b06e3438e60" dependencies = [ - "polkavm-derive-impl 0.5.0", - "syn 2.0.77", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "polkavm-derive" -version = "0.8.0" +name = "pallet-collective-content" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" +checksum = "38a6a5cbe781d9c711be74855ba32ef138f3779d6c54240c08e6d1b4bbba4d1d" dependencies = [ - "polkavm-derive-impl-macro 0.8.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "polkavm-derive" -version = "0.9.1" +name = "pallet-contracts" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +checksum = "5df77077745d891c822b4275f273f336077a97e69e62a30134776aa721c96fee" dependencies = [ - "polkavm-derive-impl-macro 0.9.0", + "bitflags 1.3.2", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-contracts-proc-macro", + "pallet-contracts-uapi 12.0.0", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "smallvec", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "wasm-instrument", + "wasmi 0.32.3", ] [[package]] -name = "polkavm-derive-impl" -version = "0.5.0" +name = "pallet-contracts-mock-network" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d" -dependencies = [ - "polkavm-common 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.77", +checksum = "309666537ed001c61a99f59fa7b98680f4a6e4e361ed3bc64f7b0237da3e3e06" +dependencies = [ + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-contracts", + "pallet-contracts-proc-macro", + "pallet-contracts-uapi 12.0.0", + "pallet-insecure-randomness-collective-flip", + "pallet-message-queue", + "pallet-proxy", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "xcm-simulator", ] [[package]] -name = "polkavm-derive-impl" -version = "0.8.0" +name = "pallet-contracts-proc-macro" +version = "23.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" +checksum = "94226cbd48516b7c310eb5dae8d50798c1ce73a7421dc0977c55b7fc2237a283" dependencies = [ - "polkavm-common 0.8.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] -name = "polkavm-derive-impl" -version = "0.9.0" +name = "pallet-contracts-uapi" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" +checksum = "2d7a51646d9ff1d91abd0186d2c074f0dfd3b1a2d55f08a229a2f2e4bc6d1e49" dependencies = [ - "polkavm-common 0.9.0", - "proc-macro2", - "quote", - "syn 2.0.77", + "bitflags 1.3.2", + "paste", + "polkavm-derive 0.9.1", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.8.0" +name = "pallet-contracts-uapi" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" +checksum = "16f74b000590c33fadea48585d3ae3f4b7867e99f0a524c444d5779f36b9a1b6" dependencies = [ - "polkavm-derive-impl 0.8.0", - "syn 2.0.77", + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.9.1", + "scale-info", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.9.0" +name = "pallet-contracts-uapi-next" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +checksum = "fd549c16296ea5b2eb7c65c56aba548b286c1be4d7675b424ff6ccb8319c97a9" dependencies = [ - "polkavm-derive-impl 0.9.0", - "syn 2.0.77", + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.5.0", + "scale-info", ] [[package]] -name = "polling" -version = "3.7.3" +name = "pallet-conviction-voting" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "999c242491b74395b8c5409ef644e782fe426d87ae36ad92240ffbf21ff0a76e" dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi 0.4.0", - "pin-project-lite", - "rustix 0.38.36", - "tracing", - "windows-sys 0.59.0", + "assert_matches", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "poly1305" -version = "0.8.0" +name = "pallet-core-fellowship" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "d063b41df454bd128d6fefd5800af8a71ac383c9dd6f20096832537efc110a8a" dependencies = [ - "cpufeatures", - "opaque-debug", - "universal-hash", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-ranked-collective", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "pop-cli" -version = "0.5.0" +name = "pallet-delegated-staking" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117f003a97f980514c6db25a50c22aaec2a9ccb5664b3cb32f52fb990e0b0c12" dependencies = [ - "anyhow", - "assert_cmd", - "axum", - "clap", - "cliclack", - "console", - "dirs", - "duct", - "env_logger", - "git2", - "os_info", - "pop-common", - "pop-contracts", - "pop-parachains", - "pop-telemetry", - "predicates", - "reqwest 0.12.7", - "serde", - "serde_json", - "sp-core", - "sp-weights", - "strum 0.26.3", - "strum_macros 0.26.4", - "subxt", - "subxt-signer", - "tempfile", - "tokio", - "tower-http 0.6.2", - "url", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "pop-common" -version = "0.5.0" +name = "pallet-democracy" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d1dc655f50b7c65bb2fb14086608ba11af02ef2936546f7a67db980ec1f133" dependencies = [ - "anyhow", - "cargo_toml", - "duct", - "flate2", - "git2", - "git2_credentials", - "mockito", - "regex", - "reqwest 0.12.7", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", "serde", - "serde_json", - "strum 0.26.3", - "strum_macros 0.26.4", - "tar", - "tempfile", - "thiserror", - "tokio", - "toml_edit 0.22.20", - "url", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "pop-contracts" -version = "0.5.0" +name = "pallet-dev-mode" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1d8050c09c5e003d502c1addc7fdfbde21a854bd57787e94447078032710c8" dependencies = [ - "anyhow", - "contract-build", - "contract-extrinsics", - "dirs", - "duct", - "flate2", - "heck 0.5.0", - "ink_env", - "mockito", - "pop-common", - "reqwest 0.12.7", - "sp-core", - "sp-weights", - "strum 0.26.3", - "strum_macros 0.26.4", - "subxt", - "subxt-signer", - "tar", - "tempfile", - "thiserror", - "tokio", - "tokio-test", - "url", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "pop-parachains" -version = "0.5.0" +name = "pallet-election-provider-multi-phase" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f9ad5ae0c13ba3727183dadf1825b6b7b0b0598ed5c366f8697e13fd540f7d" dependencies = [ - "anyhow", - "askama", - "clap", - "duct", - "flate2", - "glob", - "indexmap 2.5.0", - "mockito", - "pop-common", - "reqwest 0.12.7", - "serde_json", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-election-provider-support-benchmarking", + "parity-scale-codec", + "rand", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", "strum 0.26.3", - "strum_macros 0.26.4", - "symlink", - "tar", - "tempfile", - "thiserror", - "tokio", - "tokio-test", - "toml_edit 0.22.20", - "url", - "walkdir", - "zombienet-sdk", ] [[package]] -name = "pop-telemetry" -version = "0.5.0" +name = "pallet-election-provider-support-benchmarking" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4111d0d27545c260c9dd0d6fc504961db59c1ec4b42e1bcdc28ebd478895c22" dependencies = [ - "dirs", - "env_logger", - "log", - "mockito", - "reqwest 0.12.7", - "serde", - "serde_json", - "tempfile", - "thiserror", - "tokio", + "frame-benchmarking", + "frame-election-provider-support", + "frame-system", + "parity-scale-codec", + "sp-npos-elections", + "sp-runtime 39.0.2", ] [[package]] -name = "portable-atomic" -version = "1.7.0" +name = "pallet-elections-phragmen" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "705c66d6c231340c6d085a0df0319a6ce42a150f248171e88e389ab1e3ce20f5" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", +] [[package]] -name = "powerfmt" -version = "0.2.0" +name = "pallet-fast-unstake" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "e0ee60e8ef10b3936f2700bd61fa45dcc190c61124becc63bed787addcfa0d20" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", +] [[package]] -name = "ppv-lite86" -version = "0.2.20" +name = "pallet-glutton" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "a1c79ab340890f6ab088a638c350ac1173a1b2a79c18004787523032025582b4" dependencies = [ - "zerocopy", + "blake2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "predicates" -version = "3.1.2" +name = "pallet-grandpa" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +checksum = "6d3a570a4aac3173ea46b600408183ca2bcfdaadc077f802f11e6055963e2449" dependencies = [ - "anstyle", - "difflib", - "float-cmp", - "normalize-line-endings", - "predicates-core", - "regex", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", ] [[package]] -name = "predicates-core" -version = "1.0.8" +name = "pallet-identity" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" +checksum = "e3a4288548de9a755e39fcb82ffb9024b6bb1ba0f582464a44423038dd7a892e" +dependencies = [ + "enumflags2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "predicates-tree" -version = "1.0.11" +name = "pallet-im-online" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +checksum = "c6fd95270cf029d16cb40fe6bd9f8ab9c78cd966666dccbca4d8bfec35c5bba5" dependencies = [ - "predicates-core", - "termtree", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "prettyplease" -version = "0.2.22" +name = "pallet-indices" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "c5e4b97de630427a39d50c01c9e81ab8f029a00e56321823958b39b438f7b940" dependencies = [ - "proc-macro2", - "syn 2.0.77", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", ] [[package]] -name = "primitive-types" -version = "0.12.2" +name = "pallet-insecure-randomness-collective-flip" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +checksum = "dce7ad80675d78bd38a7a66ecbbf2d218dd32955e97f8e301d0afe6c87b0f251" dependencies = [ - "fixed-hash", - "impl-codec", - "impl-serde", + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", "scale-info", - "uint", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro-crate" -version = "1.3.1" +name = "pallet-lottery" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "ae0920ee53cf7b0665cfb6d275759ae0537dc3850ec78da5f118d814c99d3562" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro-crate" -version = "3.2.0" +name = "pallet-membership" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "1868b5dca4bbfd1f4a222cbb80735a5197020712a71577b496bbb7e19aaa5394" dependencies = [ - "toml_edit 0.22.20", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "pallet-message-queue" +version = "41.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "983f7d1be18e9a089a3e23670918f5085705b4403acd3fdde31878d57b76a1a8" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "pallet-migrations" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "9b417fc975636bce94e7c6d707e42d0706d67dfa513e72f5946918e1044beef1" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro2" -version = "1.0.86" +name = "pallet-mixnet" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "cf3fa2b7f759a47f698a403ab40c54bc8935e2969387947224cbdb4e2bc8a28a" dependencies = [ - "unicode-ident", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-mixnet", + "sp-runtime 39.0.2", ] [[package]] -name = "psm" -version = "0.1.23" +name = "pallet-mmr" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +checksum = "f6932dfb85f77a57c2d1fdc28a7b3a59ffe23efd8d5bb02dc3039d91347e4a3b" dependencies = [ - "cc", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-mmr-primitives", + "sp-runtime 39.0.2", ] [[package]] -name = "ptr_meta" -version = "0.1.4" +name = "pallet-multisig" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +checksum = "0e5099c9a4442efcc1568d88ca1d22d624e81ab96358f99f616c67fbd82532d2" dependencies = [ - "ptr_meta_derive", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "ptr_meta_derive" -version = "0.1.4" +name = "pallet-nft-fractionalization" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +checksum = "168792cf95a32fa3baf9b874efec82a45124da0a79cee1ae3c98a823e6841959" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-assets", + "pallet-nfts", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "quick-protobuf" -version = "0.8.1" +name = "pallet-nfts" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +checksum = "59e2aad461a0849d7f0471576eeb1fe3151795bcf2ec9e15eca5cca5b9d743b2" dependencies = [ - "byteorder", + "enumflags2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "quote" -version = "1.0.37" +name = "pallet-nfts-runtime-api" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "a7a1f50c217e19dc50ff586a71eb5915df6a05bc0b25564ea20674c8cd182c1f" dependencies = [ - "proc-macro2", + "pallet-nfts", + "parity-scale-codec", + "sp-api", ] [[package]] -name = "radium" -version = "0.7.0" +name = "pallet-nis" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +checksum = "8ac349e119880b7df1a7c4c36d919b33a498d0e9548af3c237365c654ae0c73d" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "rand" -version = "0.8.5" +name = "pallet-node-authorization" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "39ec3133be9e767b8feafbb26edd805824faa59956da008d2dc7fcf4b4720e56" dependencies = [ - "libc", - "rand_chacha", - "rand_core 0.6.4", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "pallet-nomination-pools" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "c42906923f9f2b65b22f1211136b57c6878296ba6f6228a075c4442cc1fc1659" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", + "sp-tracing 17.0.1", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "pallet-nomination-pools-benchmarking" +version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "38d2eaca0349bcda923343226b8b64d25a80b67e0a1ebaaa5b0ab1e1b3b225bc" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "pallet-bags-list", + "pallet-delegated-staking", + "pallet-nomination-pools", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-staking 36.0.0", +] [[package]] -name = "rand_core" -version = "0.6.4" +name = "pallet-nomination-pools-runtime-api" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "7a9e1cb89cc2e6df06ce274a7fc814e5e688aad04c43902a10191fa3d2a56a96" dependencies = [ - "getrandom", + "pallet-nomination-pools", + "parity-scale-codec", + "sp-api", ] [[package]] -name = "reconnecting-jsonrpsee-ws-client" -version = "0.4.3" +name = "pallet-offences" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06fa4f17e09edfc3131636082faaec633c7baa269396b4004040bc6c52f49f65" +checksum = "6c4379cf853465696c1c5c03e7e8ce80aeaca0a6139d698abe9ecb3223fd732a" dependencies = [ - "cfg_aliases", - "finito", - "futures", - "jsonrpsee 0.23.2", - "serde_json", - "thiserror", - "tokio", - "tracing", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "redox_syscall" -version = "0.5.3" +name = "pallet-offences-benchmarking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "69aa1b24cdffc3fa8c89cdea32c83f1bf9c1c82a87fa00e57ae4be8e85f5e24f" dependencies = [ - "bitflags 2.6.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-babe", + "pallet-balances", + "pallet-grandpa", + "pallet-im-online", + "pallet-offences", + "pallet-session", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "redox_users" -version = "0.4.6" +name = "pallet-paged-list" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "c8e099fb116068836b17ca4232dc52f762b69dc8cd4e33f509372d958de278b0" dependencies = [ - "getrandom", - "libredox", - "thiserror", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-metadata-ir", + "sp-runtime 39.0.2", ] [[package]] -name = "ref-cast" -version = "1.0.23" +name = "pallet-parameters" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +checksum = "b9aba424d55e17b2a2bec766a41586eab878137704d4803c04bebd6a4743db7b" dependencies = [ - "ref-cast-impl", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "ref-cast-impl" -version = "1.0.23" +name = "pallet-preimage" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +checksum = "407828bc48c6193ac076fdf909b2fadcaaecd65f42b0b0a04afe22fe8e563834" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex" -version = "1.10.6" +name = "pallet-proxy" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "d39df395f0dbcf07dafe842916adea3266a87ce36ed87b5132184b6bcd746393" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex-automata" -version = "0.1.10" +name = "pallet-ranked-collective" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "c2b38708feaed202debf1ac6beffaa5e20c99a9825c5ca0991753c2d4eaaf3ac" dependencies = [ - "regex-syntax 0.6.29", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex-automata" -version = "0.4.7" +name = "pallet-recovery" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "406a116aa6d05f88f3c10d79ff89cf577323680a48abd8e5550efb47317e67fa" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.4", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex-syntax" -version = "0.6.29" +name = "pallet-referenda" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +checksum = "c3008c20531d1730c9b457ae77ecf0e3c9b07aaf8c4f5d798d61ef6f0b9e2d4b" dependencies = [ - "bytecheck", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "reqwest" -version = "0.11.27" +name = "pallet-remark" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "a3e8cae0e20888065ec73dda417325c6ecabf797f4002329484b59c25ecc34d4" dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.30", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "reqwest" -version = "0.12.7" +name = "pallet-revive" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "be02c94dcbadd206a910a244ec19b493aac793eed95e23d37d6699547234569f" dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.4.6", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.4.1", - "hyper-rustls 0.27.3", - "hyper-tls 0.6.0", - "hyper-util", - "ipnet", - "js-sys", + "bitflags 1.3.2", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 2.1.3", + "pallet-balances", + "pallet-revive-fixtures", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "parity-scale-codec", + "paste", + "polkavm 0.10.0", + "scale-info", "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "system-configuration 0.6.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-registry", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", ] [[package]] -name = "rfc6979" -version = "0.4.0" +name = "pallet-revive-fixtures" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "8a38c27f1531f36e5327f3084eb24cf1c9dd46b372e030c0169e843ce363105e" dependencies = [ - "hmac 0.12.1", - "subtle", + "anyhow", + "frame-system", + "parity-wasm", + "polkavm-linker 0.10.0", + "sp-runtime 39.0.2", + "tempfile", + "toml 0.8.19", ] [[package]] -name = "ring" -version = "0.17.8" +name = "pallet-revive-mock-network" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", +checksum = "60e74591d44dbd78db02c8593f5caa75bd61bcc4d63999302150223fb969ae37" +dependencies = [ + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-message-queue", + "pallet-proxy", + "pallet-revive", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "xcm-simulator", ] [[package]] -name = "rkyv" -version = "0.7.45" +name = "pallet-revive-proc-macro" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +checksum = "0cc16d1f7cee6a1ee6e8cd710e16230d59fb4935316c1704cf770e4d2335f8d4" dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "rkyv_derive" -version = "0.7.45" +name = "pallet-revive-uapi" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +checksum = "ecb4686c8415619cc13e43fadef146ffff46424d9b4d037fe4c069de52708aac" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.10.0", + "scale-info", ] [[package]] -name = "rlibc" -version = "1.0.0" +name = "pallet-root-offences" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" +checksum = "b35774b830928daaeeca7196cead7c56eeed952a6616ad6dc5ec068d8c85c81a" +dependencies = [ + "frame-support", + "frame-system", + "pallet-session", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", +] [[package]] -name = "rust_decimal" -version = "1.36.0" +name = "pallet-root-testing" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +checksum = "be95e7c320ac1d381715364cd721e67ab3152ab727f8e4defd3a92e41ebbc880" dependencies = [ - "arrayvec 0.7.6", - "borsh", - "bytes", - "num-traits", - "rand", - "rkyv", - "serde", - "serde_json", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustc-demangle" -version = "0.1.24" +name = "pallet-safe-mode" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "6d3e67dd4644c168cedbf257ac3dd2527aad81acf4a0d413112197094e549f76" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-proxy", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "rustc-hash" -version = "1.1.0" +name = "pallet-salary" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "0544a71dba06a9a29da0778ba8cb37728c3b9a8377ac9737c4b1bc48c618bc2f" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-ranked-collective", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "rustc-hex" -version = "2.1.0" +name = "pallet-scheduler" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +checksum = "26899a331e7ab5f7d5966cbf203e1cf5bd99cd110356d7ddcaa7597087cdc0b5" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", +] [[package]] -name = "rustc_version" -version = "0.4.1" +name = "pallet-scored-pool" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "9f84b48bb4702712c902f43931c4077d3a1cb6773c8d8c290d4a6251f6bc2a5c" dependencies = [ - "semver", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustix" -version = "0.36.17" +name = "pallet-session" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" +checksum = "8474b62b6b7622f891e83d922a589e2ad5be5471f5ca47d45831a797dba0b3f4" dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.45.0", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", + "sp-state-machine 0.43.0", + "sp-trie 37.0.0", ] [[package]] -name = "rustix" -version = "0.38.36" +name = "pallet-session-benchmarking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" +checksum = "8aadce7df0fee981721983795919642648b846dab5ab9096f82c2cea781007d0" dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-session", + "pallet-staking", + "parity-scale-codec", + "rand", + "sp-runtime 39.0.2", + "sp-session", ] [[package]] -name = "rustls" -version = "0.21.12" +name = "pallet-skip-feeless-payment" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "f8c2cb0dae13d2c2d2e76373f337d408468f571459df1900cbd7458f21cf6c01" dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls" -version = "0.22.4" +name = "pallet-society" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "d1dc69fea8a8de343e71691f009d5fece6ae302ed82b7bb357882b2ea6454143" dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", + "parity-scale-codec", + "rand_chacha", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls" -version = "0.23.13" +name = "pallet-staking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "c870d123f4f053b56af808a4beae1ffc4309a696e829796c26837936c926db3b" dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-application-crypto 38.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "rustls-native-certs" -version = "0.6.3" +name = "pallet-staking-reward-fn" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "988a7ebeacc84d4bdb0b12409681e956ffe35438447d8f8bc78db547cffb6ebc" dependencies = [ - "openssl-probe", - "rustls-pemfile 1.0.4", - "schannel", - "security-framework", + "log", + "sp-arithmetic 26.0.0", ] [[package]] -name = "rustls-native-certs" -version = "0.7.3" +name = "pallet-staking-runtime-api" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +checksum = "e7298559ef3a6b2f5dfbe9a3b8f3d22f2ff9b073c97f4c4853d2b316d973e72d" dependencies = [ - "openssl-probe", - "rustls-pemfile 2.1.3", - "rustls-pki-types", - "schannel", - "security-framework", + "parity-scale-codec", + "sp-api", + "sp-staking 36.0.0", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "pallet-state-trie-migration" +version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "138c15b4200b9dc4c3e031def6a865a235cdc76ff91ee96fba19ca1787c9dda6" dependencies = [ - "base64 0.21.7", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls-pemfile" -version = "2.1.3" +name = "pallet-statement" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "5e03e147efa900e75cd106337f36da3d7dcd185bd9e5f5c3df474c08c3c37d16" dependencies = [ - "base64 0.22.1", - "rustls-pki-types", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-statement-store", ] [[package]] -name = "rustls-pki-types" -version = "1.8.0" +name = "pallet-sudo" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "1574fe2aed3d52db4a389b77b53d8c9758257b121e3e7bbe24c4904e11681e0e" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "rustls-platform-verifier" -version = "0.3.4" +name = "pallet-timestamp" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +checksum = "a9ba9b71bbfd33ae672f23ba7efaeed2755fdac37b8f946cb7474fc37841b7e1" dependencies = [ - "core-foundation", - "core-foundation-sys", - "jni", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "once_cell", - "rustls 0.23.13", - "rustls-native-certs 0.7.3", - "rustls-platform-verifier-android", - "rustls-webpki 0.102.8", - "security-framework", - "security-framework-sys", - "webpki-roots", - "winapi", + "parity-scale-codec", + "scale-info", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-storage 21.0.0", + "sp-timestamp", ] [[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - -[[package]] -name = "rustls-webpki" -version = "0.101.7" +name = "pallet-tips" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "aa1d4371a70c309ba11624933f8f5262fe4edad0149c556361d31f26190da936" dependencies = [ - "ring", - "untrusted", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls-webpki" -version = "0.102.8" +name = "pallet-transaction-payment" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "47b1aa3498107a30237f941b0f02180db3b79012c3488878ff01a4ac3e8ee04e" dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustversion" -version = "1.0.17" +name = "pallet-transaction-payment-rpc-runtime-api" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "49fdf5ab71e9dbcadcf7139736b6ea6bac8ec4a83985d46cbd130e1eec770e41" +dependencies = [ + "pallet-transaction-payment", + "parity-scale-codec", + "sp-api", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", +] [[package]] -name = "ruzstd" -version = "0.5.0" +name = "pallet-transaction-storage" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +checksum = "f8c337a972a6a796c0a0acc6c03b5e02901c43ad721ce79eb87b45717d75c93b" dependencies = [ - "byteorder", - "derive_more", - "twox-hash", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-transaction-storage-proof", ] [[package]] -name = "rw-stream-sink" -version = "0.4.0" +name = "pallet-treasury" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +checksum = "98bfdd3bb9b58fb010bcd419ff5bf940817a8e404cdbf7886a53ac730f5dda2b" dependencies = [ - "futures", - "pin-project", - "static_assertions", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "ryu" -version = "1.0.18" +name = "pallet-tx-pause" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "cee153f5be5efc84ebd53aa581e5361cde17dc3669ef80d8ad327f4041d89ebe" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-proxy", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", +] [[package]] -name = "same-file" -version = "1.0.6" +name = "pallet-uniques" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "c2b13cdaedf2d5bd913a5f6e637cb52b5973d8ed4b8d45e56d921bc4d627006f" dependencies = [ - "winapi-util", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-bits" -version = "0.4.0" +name = "pallet-utility" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" +checksum = "2fdcade6efc0b66fc7fc4138964802c02d0ffb7380d894e26b9dd5073727d2b3" dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-bits" -version = "0.6.0" +name = "pallet-vesting" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" +checksum = "807df2ef13ab6bf940879352c3013bfa00b670458b4c125c2f60e5753f68e3d5" dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", "scale-info", - "scale-type-resolver", - "serde", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-decode" -version = "0.10.0" +name = "pallet-whitelist" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" +checksum = "1ef17df925290865cf37096dd0cb76f787df11805bba01b1d0ca3e106d06280b" dependencies = [ - "derive_more", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", - "scale-bits 0.4.0", - "scale-decode-derive 0.10.0", "scale-info", - "smallvec", + "sp-api", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-decode" -version = "0.13.1" +name = "pallet-xcm" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" +checksum = "989676964dbda5f5275650fbdcd3894fe7fac626d113abf89d572b4952adcc36" dependencies = [ - "derive_more", + "bounded-collections", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", "parity-scale-codec", - "primitive-types", - "scale-bits 0.6.0", - "scale-decode-derive 0.13.1", - "scale-type-resolver", - "smallvec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "tracing", + "xcm-runtime-apis", ] [[package]] -name = "scale-decode-derive" -version = "0.10.0" +name = "pallet-xcm-benchmarks" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" +checksum = "2da423463933b42f4a4c74175f9e9295a439de26719579b894ce533926665e4a" dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "scale-decode-derive" -version = "0.13.1" +name = "pallet-xcm-bridge-hub" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021" +checksum = "d5f9670065b7cba92771060a4a3925b6650ff67611443ccfccd5aa356f7d5aac" dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", + "bp-messages", + "bp-runtime", + "bp-xcm-bridge-hub", + "frame-support", + "frame-system", + "log", + "pallet-bridge-messages", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "scale-encode" -version = "0.5.0" +name = "pallet-xcm-bridge-hub-router" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" +checksum = "f3b5347c826b721098ef39afb0d750e621c77538044fc1e865af1a8747824fdf" dependencies = [ - "derive_more", + "bp-xcm-bridge-hub-router", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", - "scale-encode-derive 0.5.0", "scale-info", - "smallvec", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", ] [[package]] -name = "scale-encode" -version = "0.7.1" +name = "parachains-common" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba0b9c48dc0eb20c60b083c29447c0c4617cb7c4a4c9fef72aa5c5bc539e15e" +checksum = "c9460a69f409be27c62161d8b4d36ffc32735d09a4f9097f9c789db0cca7196c" dependencies = [ - "derive_more", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-support", + "frame-system", + "log", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", + "pallet-xcm", "parity-scale-codec", - "primitive-types", - "scale-bits 0.6.0", - "scale-encode-derive 0.7.1", - "scale-type-resolver", - "smallvec", + "polkadot-primitives 16.0.0", + "scale-info", + "sp-consensus-aura", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-executor", + "substrate-wasm-builder", +] + +[[package]] +name = "parachains-runtimes-test-utils" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287d2db0a2d19466caa579a69f021bfdc6fa352f382c8395dade58d1d0c6adfe" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-relay-sproof-builder", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-timestamp", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "sp-consensus-aura", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-executor", + "substrate-wasm-builder", ] [[package]] -name = "scale-encode-derive" -version = "0.5.0" +name = "parity-bip39" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", + "bitcoin_hashes 0.13.0", + "rand", + "rand_core 0.5.1", + "serde", + "unicode-normalization", ] [[package]] -name = "scale-encode-derive" -version = "0.7.1" +name = "parity-bytes" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82ab7e60e2d9c8d47105f44527b26f04418e5e624ffc034f6b4a86c0ba19c5bf" -dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" [[package]] -name = "scale-info" -version = "2.11.3" +name = "parity-scale-codec" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "8be4817d39f3272f69c59fe05d0535ae6456c2dc2fa1ba02910296c7e0a5c590" dependencies = [ + "arrayvec 0.7.6", "bitvec", - "cfg-if", - "derive_more", - "parity-scale-codec", - "scale-info-derive", - "schemars", + "byte-slice-cast", + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] -name = "scale-info-derive" -version = "2.11.3" +name = "parity-scale-codec-derive" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] -name = "scale-type-resolver" -version = "0.2.0" +name = "parity-util-mem" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" dependencies = [ - "scale-info", + "cfg-if", + "ethereum-types", + "hashbrown 0.12.3", + "impl-trait-for-tuples", + "lru 0.8.1", + "parity-util-mem-derive", + "parking_lot", + "primitive-types 0.12.2", "smallvec", + "winapi", ] [[package]] -name = "scale-typegen" -version = "0.8.0" +name = "parity-util-mem-derive" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac" +checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ "proc-macro2", - "quote", - "scale-info", - "syn 2.0.77", - "thiserror", + "syn 1.0.109", + "synstructure 0.12.6", ] [[package]] -name = "scale-value" -version = "0.16.2" +name = "parity-wasm" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4d772cfb7569e03868400344a1695d16560bf62b86b918604773607d39ec84" -dependencies = [ - "base58", - "blake2", - "derive_more", - "either", - "frame-metadata 15.1.0", - "parity-scale-codec", - "scale-bits 0.6.0", - "scale-decode 0.13.1", - "scale-encode 0.7.1", - "scale-info", - "scale-type-resolver", - "serde", - "yap", -] +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" [[package]] -name = "schannel" -version = "0.1.24" +name = "parking" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" -dependencies = [ - "windows-sys 0.59.0", -] +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] -name = "schemars" -version = "0.8.21" +name = "parking_lot" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", + "lock_api", + "parking_lot_core", ] [[package]] -name = "schemars_derive" -version = "0.8.21" +name = "parking_lot_core" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.77", -] - -[[package]] -name = "schnellru" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" -dependencies = [ - "ahash 0.8.11", "cfg-if", - "hashbrown 0.13.2", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", ] [[package]] -name = "schnorrkel" -version = "0.11.4" +name = "password-hash" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ - "aead", - "arrayref", - "arrayvec 0.7.6", - "curve25519-dalek 4.1.3", - "getrandom_or_panic", - "merlin", + "base64ct", "rand_core 0.6.4", - "serde_bytes", - "sha2 0.10.8", "subtle", - "zeroize", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "scratch" -version = "1.0.7" +name = "pbkdf2" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", + "password-hash", +] [[package]] -name = "sct" -version = "0.7.1" +name = "pem" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "ring", - "untrusted", + "base64 0.22.1", + "serde", ] [[package]] -name = "seahash" -version = "4.1.0" +name = "percent-encoding" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] -name = "sec1" -version = "0.7.3" +name = "pest" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "serdect", - "subtle", - "zeroize", + "memchr", + "thiserror 1.0.69", + "ucd-trie", ] [[package]] -name = "secp256k1" -version = "0.28.2" +name = "pest_derive" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ - "secp256k1-sys", + "pest", + "pest_generator", ] [[package]] -name = "secp256k1-sys" -version = "0.9.2" +name = "pest_generator" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ - "cc", + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "secrecy" -version = "0.8.0" +name = "pest_meta" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ - "serde", - "zeroize", + "once_cell", + "pest", + "sha2 0.10.8", ] [[package]] -name = "security-framework" -version = "2.11.1" +name = "pin-project" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-foundation-sys", - "libc", - "num-bigint", - "security-framework-sys", + "pin-project-internal", ] [[package]] -name = "security-framework-sys" -version = "2.11.1" +name = "pin-project-internal" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ - "core-foundation-sys", - "libc", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "semver" -version = "1.0.23" +name = "pin-project-lite" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] -name = "serde" -version = "1.0.210" +name = "pin-utils" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" -dependencies = [ - "serde_derive", -] +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "serde-value" -version = "0.7.0" +name = "piper" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ - "ordered-float", - "serde", + "atomic-waker", + "fastrand", + "futures-io", ] [[package]] -name = "serde_bytes" -version = "0.11.15" +name = "pkcs8" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "serde", + "der", + "spki", ] [[package]] -name = "serde_derive" -version = "1.0.210" +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "polkadot-ckb-merkle-mountain-range" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "a4b44320e5f7ce2c18227537a3032ae5b2c476a7e8eddba45333e1011fc31b92" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "cfg-if", + "itertools 0.10.5", ] [[package]] -name = "serde_derive_internals" -version = "0.29.1" +name = "polkadot-core-primitives" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +checksum = "e2900d3b857e34c480101618a950c3a4fbcddc8c0d50573d48553376185908b8" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "serde_json" -version = "1.0.128" +name = "polkadot-parachain-primitives" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "52b5648a2e8ce1f9a0f8c41c38def670cefd91932cd793468e1a5b0b0b4e4af1" dependencies = [ - "indexmap 2.5.0", - "itoa", - "memchr", - "ryu", + "bounded-collections", + "derive_more 0.99.18", + "parity-scale-codec", + "polkadot-core-primitives", + "scale-info", "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", ] [[package]] -name = "serde_path_to_error" -version = "0.1.16" +name = "polkadot-primitives" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "b57bc055fa389372ec5fc0001b99aeffd50f3fd379280ce572d935189bb58dd8" dependencies = [ - "itoa", + "bitvec", + "hex-literal", + "log", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "scale-info", "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-authority-discovery", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-staking 34.0.0", ] [[package]] -name = "serde_repr" -version = "0.1.19" +name = "polkadot-primitives" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "6bb20b75d33212150242d39890d7ededab55f1084160c337f15d0eb8ca8c3ad4" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "bitvec", + "hex-literal", + "log", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-authority-discovery", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "serde_spanned" -version = "0.6.7" +name = "polkadot-runtime-common" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "dc15154ba5ca55d323fcf7af0f5dcd39d58dcb4dfac3d9b30404840a6d8bbde4" dependencies = [ + "bitvec", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "libsecp256k1", + "log", + "pallet-asset-rate", + "pallet-authorship", + "pallet-balances", + "pallet-broker", + "pallet-election-provider-multi-phase", + "pallet-fast-unstake", + "pallet-identity", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-fn", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-treasury", + "pallet-vesting", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "rustc-hex", + "scale-info", "serde", + "serde_derive", + "slot-range-helper", + "sp-api", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "static_assertions", ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "polkadot-runtime-metrics" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "2c306f1ace7644a24de860479f92cf8d6467393bb0c9b0777c57e2d42c9d452a" dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", + "bs58", + "frame-benchmarking", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "sp-tracing 17.0.1", ] [[package]] -name = "serde_with" -version = "3.9.0" +name = "polkadot-runtime-parachains" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "bd58e3a17e5df678f5737b018cbfec603af2c93bec56bbb9f8fb8b2b017b54b1" dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.5.0", + "bitflags 1.3.2", + "bitvec", + "derive_more 0.99.18", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-broker", + "pallet-message-queue", + "pallet-mmr", + "pallet-session", + "pallet-staking", + "pallet-timestamp", + "pallet-vesting", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-metrics", + "rand", + "rand_chacha", + "scale-info", "serde", - "serde_derive", - "serde_json", - "time", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", ] [[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" +name = "polkadot-sdk" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +checksum = "eb819108697967452fa6d8d96ab4c0d48cbaa423b3156499dcb24f1cf95d6775" +dependencies = [ + "asset-test-utils", + "assets-common", + "binary-merkle-tree", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "bp-xcm-bridge-hub", + "bp-xcm-bridge-hub-router", + "bridge-hub-common", + "bridge-hub-test-utils", + "bridge-runtime-common", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-pallet-session-benchmarking", + "cumulus-pallet-solo-to-para", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-ping", + "cumulus-primitives-aura", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-primitives-proof-size-hostfunction", + "cumulus-primitives-storage-weight-reclaim", + "cumulus-primitives-timestamp", + "cumulus-primitives-utility", + "cumulus-test-relay-sproof-builder", + "frame-benchmarking", + "frame-benchmarking-pallet-pov", + "frame-election-provider-support", + "frame-executive", + "frame-metadata-hash-extension", + "frame-support", + "frame-support-procedural", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "pallet-alliance", + "pallet-asset-conversion", + "pallet-asset-conversion-ops", + "pallet-asset-conversion-tx-payment", + "pallet-asset-rate", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-assets-freezer", + "pallet-atomic-swap", + "pallet-aura", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-bags-list", + "pallet-balances", + "pallet-beefy", + "pallet-beefy-mmr", + "pallet-bounties", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-broker", + "pallet-child-bounties", + "pallet-collator-selection", + "pallet-collective", + "pallet-collective-content", + "pallet-contracts", + "pallet-contracts-mock-network", + "pallet-conviction-voting", + "pallet-core-fellowship", + "pallet-delegated-staking", + "pallet-democracy", + "pallet-dev-mode", + "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", + "pallet-elections-phragmen", + "pallet-fast-unstake", + "pallet-glutton", + "pallet-grandpa", + "pallet-identity", + "pallet-im-online", + "pallet-indices", + "pallet-insecure-randomness-collective-flip", + "pallet-lottery", + "pallet-membership", + "pallet-message-queue", + "pallet-migrations", + "pallet-mixnet", + "pallet-mmr", + "pallet-multisig", + "pallet-nft-fractionalization", + "pallet-nfts", + "pallet-nfts-runtime-api", + "pallet-nis", + "pallet-node-authorization", + "pallet-nomination-pools", + "pallet-nomination-pools-benchmarking", + "pallet-nomination-pools-runtime-api", + "pallet-offences", + "pallet-offences-benchmarking", + "pallet-paged-list", + "pallet-parameters", + "pallet-preimage", + "pallet-proxy", + "pallet-ranked-collective", + "pallet-recovery", + "pallet-referenda", + "pallet-remark", + "pallet-revive", + "pallet-revive-fixtures", + "pallet-revive-mock-network", + "pallet-root-offences", + "pallet-root-testing", + "pallet-safe-mode", + "pallet-salary", + "pallet-scheduler", + "pallet-scored-pool", + "pallet-session", + "pallet-session-benchmarking", + "pallet-skip-feeless-payment", + "pallet-society", + "pallet-staking", + "pallet-staking-reward-fn", + "pallet-staking-runtime-api", + "pallet-state-trie-migration", + "pallet-statement", + "pallet-sudo", + "pallet-timestamp", + "pallet-tips", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-transaction-storage", + "pallet-treasury", + "pallet-tx-pause", + "pallet-uniques", + "pallet-utility", + "pallet-vesting", + "pallet-whitelist", + "pallet-xcm", + "pallet-xcm-benchmarks", + "pallet-xcm-bridge-hub", + "pallet-xcm-bridge-hub-router", + "parachains-common", + "parachains-runtimes-test-utils", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-common", + "polkadot-runtime-metrics", + "polkadot-runtime-parachains", + "polkadot-sdk-frame", + "sc-executor", + "slot-range-helper", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-ethereum", + "snowbridge-outbound-queue-merkle-tree", + "snowbridge-outbound-queue-runtime-api", + "snowbridge-pallet-ethereum-client", + "snowbridge-pallet-ethereum-client-fixtures", + "snowbridge-pallet-inbound-queue", + "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-pallet-outbound-queue", + "snowbridge-pallet-system", + "snowbridge-router-primitives", + "snowbridge-runtime-common", + "snowbridge-runtime-test-common", + "snowbridge-system-runtime-api", + "sp-api", + "sp-api-proc-macro", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-consensus-grandpa", + "sp-consensus-pow", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-core-hashing", + "sp-crypto-ec-utils", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.29.0", + "sp-genesis-builder", + "sp-inherents", + "sp-io 38.0.0", + "sp-keyring", + "sp-keystore 0.40.0", + "sp-metadata-ir", + "sp-mixnet", + "sp-mmr-primitives", + "sp-npos-elections", + "sp-offchain", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-session", + "sp-staking 36.0.0", + "sp-state-machine 0.43.0", + "sp-statement-store", + "sp-std", + "sp-storage 21.0.0", + "sp-timestamp", + "sp-tracing 17.0.1", + "sp-transaction-pool", + "sp-transaction-storage-proof", + "sp-trie 37.0.0", + "sp-version", + "sp-wasm-interface 21.0.1", + "sp-weights 31.0.0", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-bip39 0.6.0", + "testnet-parachains-constants", + "xcm-runtime-apis", +] + +[[package]] +name = "polkadot-sdk-frame" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbdeb15ce08142082461afe1a62c15f7ce10a731d91b203ad6a8dc8d2e4a6a54" dependencies = [ - "indexmap 2.5.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", + "docify", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-block-builder", + "sp-consensus-aura", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-offchain", + "sp-runtime 39.0.2", + "sp-session", + "sp-storage 21.0.0", + "sp-transaction-pool", + "sp-version", ] [[package]] -name = "serdect" -version = "0.2.0" +name = "polkavm" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +checksum = "8a3693e5efdb2bf74e449cd25fd777a28bd7ed87e41f5d5da75eb31b4de48b94" dependencies = [ - "base16ct", - "serde", + "libc", + "log", + "polkavm-assembler 0.9.0", + "polkavm-common 0.9.0", + "polkavm-linux-raw 0.9.0", ] [[package]] -name = "sha-1" -version = "0.9.8" +name = "polkavm" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +checksum = "b7ec0c5935f2eff23cfc4653002f4f8d12b37f87a720e0631282d188c32089d6" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "libc", + "log", + "polkavm-assembler 0.10.0", + "polkavm-common 0.10.0", + "polkavm-linux-raw 0.10.0", ] [[package]] -name = "sha1" -version = "0.10.6" +name = "polkavm-assembler" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "1fa96d6d868243acc12de813dd48e756cbadcc8e13964c70d272753266deadc1" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "log", ] [[package]] -name = "sha2" -version = "0.9.9" +name = "polkavm-assembler" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "d8e4fd5a43100bf1afe9727b8130d01f966f5cfc9144d5604b21e795c2bcd80e" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "log", ] [[package]] -name = "sha2" -version = "0.10.8" +name = "polkavm-common" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" + +[[package]] +name = "polkavm-common" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" + +[[package]] +name = "polkavm-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "log", ] [[package]] -name = "sha3" -version = "0.10.8" +name = "polkavm-common" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" dependencies = [ - "digest 0.10.7", - "keccak", + "log", + "polkavm-assembler 0.10.0", ] [[package]] -name = "sharded-slab" -version = "0.1.7" +name = "polkavm-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8" dependencies = [ - "lazy_static", + "polkavm-derive-impl 0.5.0", + "syn 2.0.89", ] [[package]] -name = "shared_child" -version = "1.0.1" +name = "polkavm-derive" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" +checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" dependencies = [ - "libc", - "windows-sys 0.59.0", + "polkavm-derive-impl-macro 0.8.0", ] [[package]] -name = "shell-words" -version = "1.1.0" +name = "polkavm-derive" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +dependencies = [ + "polkavm-derive-impl-macro 0.9.0", +] [[package]] -name = "shlex" -version = "1.3.0" +name = "polkavm-derive" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" +dependencies = [ + "polkavm-derive-impl-macro 0.10.0", +] [[package]] -name = "signal-hook" -version = "0.3.17" +name = "polkavm-derive-impl" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d" dependencies = [ - "libc", - "signal-hook-registry", + "polkavm-common 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "signal-hook-mio" -version = "0.2.4" +name = "polkavm-derive-impl" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" dependencies = [ - "libc", - "mio 0.8.11", - "signal-hook", + "polkavm-common 0.8.0", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "signal-hook-registry" -version = "1.4.2" +name = "polkavm-derive-impl" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" dependencies = [ - "libc", + "polkavm-common 0.9.0", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "signature" -version = "2.2.0" +name = "polkavm-derive-impl" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "7855353a5a783dd5d09e3b915474bddf66575f5a3cf45dec8d1c5e051ba320dc" dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", + "polkavm-common 0.10.0", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "simdutf8" -version = "0.1.4" +name = "polkavm-derive-impl-macro" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" +dependencies = [ + "polkavm-derive-impl 0.8.0", + "syn 2.0.89", +] [[package]] -name = "similar" -version = "2.6.0" +name = "polkavm-derive-impl-macro" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +dependencies = [ + "polkavm-derive-impl 0.9.0", + "syn 2.0.89", +] [[package]] -name = "simple-mermaid" -version = "0.1.1" +name = "polkavm-derive-impl-macro" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" +checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" +dependencies = [ + "polkavm-derive-impl 0.10.0", + "syn 2.0.89", +] [[package]] -name = "siphasher" -version = "1.0.1" +name = "polkavm-linker" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.32.2", + "polkavm-common 0.9.0", + "regalloc2 0.9.3", + "rustc-demangle", +] [[package]] -name = "slab" -version = "0.4.9" +name = "polkavm-linker" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" dependencies = [ - "autocfg", + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.36.5", + "polkavm-common 0.10.0", + "regalloc2 0.9.3", + "rustc-demangle", ] [[package]] -name = "smallvec" -version = "1.13.2" +name = "polkavm-linux-raw" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" [[package]] -name = "smawk" -version = "0.3.2" +name = "polkavm-linux-raw" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" +checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" [[package]] -name = "smol" -version = "2.0.2" +name = "polling" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ - "async-channel", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-net", - "async-process", - "blocking", - "futures-lite", + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix 0.38.41", + "tracing", + "windows-sys 0.59.0", ] [[package]] -name = "smoldot" -version = "0.16.0" +name = "poly1305" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ - "arrayvec 0.7.6", - "async-lock", - "atomic-take", - "base64 0.21.7", - "bip39", - "blake2-rfc", - "bs58", - "chacha20", - "crossbeam-queue", - "derive_more", - "ed25519-zebra 4.0.3", - "either", - "event-listener 4.0.3", - "fnv", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "hmac 0.12.1", - "itertools 0.12.1", - "libm", - "libsecp256k1", - "merlin", - "no-std-net", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", - "pin-project", - "poly1305", - "rand", - "rand_chacha", - "ruzstd", - "schnorrkel", - "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "siphasher", - "slab", - "smallvec", - "soketto 0.7.1", - "twox-hash", - "wasmi", - "x25519-dalek", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "pop-cli" +version = "0.5.0" +dependencies = [ + "anyhow", + "assert_cmd", + "axum", + "clap", + "cliclack", + "console", + "dirs", + "duct", + "env_logger 0.11.5", + "git2", + "os_info", + "pop-common", + "pop-contracts", + "pop-parachains", + "pop-telemetry", + "predicates", + "reqwest 0.12.7", + "serde", + "serde_json", + "sp-core 31.0.0", + "sp-weights 30.0.0", + "strum 0.26.3", + "strum_macros 0.26.4", + "subxt", + "subxt-signer", + "tempfile", + "tokio", + "tower-http 0.6.2", + "url", +] + +[[package]] +name = "pop-common" +version = "0.5.0" +dependencies = [ + "anyhow", + "cargo_toml", + "duct", + "flate2", + "git2", + "git2_credentials", + "mockito", + "regex", + "reqwest 0.12.9", + "serde", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "tar", + "tempfile", + "thiserror 1.0.69", + "tokio", + "toml_edit 0.22.22", + "url", +] + +[[package]] +name = "pop-contracts" +version = "0.5.0" +dependencies = [ + "anyhow", + "contract-build", + "contract-extrinsics", + "dirs", + "duct", + "flate2", + "heck 0.5.0", + "ink_env", + "mockito", + "pop-common", + "reqwest 0.12.9", + "sp-core 31.0.0", + "sp-weights 30.0.0", + "strum 0.26.3", + "strum_macros 0.26.4", + "subxt 0.37.0", + "subxt-signer 0.37.0", + "tar", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-test", + "url", +] + +[[package]] +name = "pop-parachains" +version = "0.5.0" +dependencies = [ + "anyhow", + "askama", + "clap", + "duct", + "flate2", + "glob", + "indexmap 2.6.0", + "mockito", + "pop-common", + "reqwest 0.12.9", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "symlink", + "tar", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-test", + "toml_edit 0.22.22", + "url", + "walkdir", + "zombienet-sdk", +] + +[[package]] +name = "pop-telemetry" +version = "0.5.0" +dependencies = [ + "dirs", + "env_logger 0.11.5", + "log", + "mockito", + "reqwest 0.12.9", + "serde", + "serde_json", + "tempfile", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "pop-wallet-integration" +version = "0.5.0" +dependencies = [ + "axum", + "serde", + "serde_json", + "tokio", + "tower-http 0.6.2", +] + +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "predicates" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +dependencies = [ + "anstyle", + "difflib", + "float-cmp", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" + +[[package]] +name = "predicates-tree" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.89", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.0", + "impl-serde 0.5.0", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.22", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "proc-macro-warning" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "psm" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +dependencies = [ + "cc", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-protobuf" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +dependencies = [ + "byteorder", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "reconnecting-jsonrpsee-ws-client" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06fa4f17e09edfc3131636082faaec633c7baa269396b4004040bc6c52f49f65" +dependencies = [ + "cfg_aliases", + "finito", + "futures", + "jsonrpsee 0.23.2", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "regalloc2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80535183cae11b149d618fbd3c37e38d7cda589d82d7769e196ca9a9042d7621" +dependencies = [ + "fxhash", + "log", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash 1.1.0", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.31", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.7", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.1", + "hyper-rustls 0.27.3", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.2.0", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "system-configuration 0.6.1", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rlibc" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rococo-runtime-constants" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1ec6683a2e52fe3be2eaf942a80619abd99eb36e973c5ab4489a2f3b100db5c" +dependencies = [ + "frame-support", + "polkadot-primitives 16.0.0", + "polkadot-runtime-common", + "smallvec", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-builder", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rust_decimal" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +dependencies = [ + "arrayvec 0.7.6", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.36.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.1.4", + "windows-sys 0.45.0", +] + +[[package]] +name = "rustix" +version = "0.38.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls" +version = "0.23.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-platform-verifier" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +dependencies = [ + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.19", + "rustls-native-certs 0.7.3", + "rustls-platform-verifier-android", + "rustls-webpki 0.102.8", + "security-framework", + "security-framework-sys", + "webpki-roots", + "winapi", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ruzstd" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +dependencies = [ + "byteorder", + "derive_more 0.99.18", + "twox-hash", +] + +[[package]] +name = "ruzstd" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" +dependencies = [ + "byteorder", + "derive_more 0.99.18", +] + +[[package]] +name = "rw-stream-sink" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +dependencies = [ + "futures", + "pin-project", + "static_assertions", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "safe-mix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" +dependencies = [ + "rustc_version 0.2.3", +] + +[[package]] +name = "safe_arch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "sc-allocator" +version = "29.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b975ee3a95eaacb611e7b415737a7fa2db4d8ad7b880cc1b97371b04e95c7903" +dependencies = [ + "log", + "sp-core 34.0.0", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", +] + +[[package]] +name = "sc-executor" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f0cc0a3728fd033589183460c5a49b2e7545d09dc89a098216ef9e9aadcd9dc" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sc-executor-common", + "sc-executor-polkavm", + "sc-executor-wasmtime", + "schnellru", + "sp-api", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-io 38.0.0", + "sp-panic-handler", + "sp-runtime-interface 28.0.0", + "sp-trie 37.0.0", + "sp-version", + "sp-wasm-interface 21.0.1", + "tracing", +] + +[[package]] +name = "sc-executor-common" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3b703a33dcb7cddf19176fdf12294b9a6408125836b0f4afee3e6969e7f190" +dependencies = [ + "polkavm 0.9.3", + "sc-allocator", + "sp-maybe-compressed-blob", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", + "wasm-instrument", +] + +[[package]] +name = "sc-executor-polkavm" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fe58d9cacfab73e5595fa84b80f7bd03efebe54a0574daaeb221a1d1f7ab80" +dependencies = [ + "log", + "polkavm 0.9.3", + "sc-executor-common", + "sp-wasm-interface 21.0.1", +] + +[[package]] +name = "sc-executor-wasmtime" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd498f2f77ec1f861c30804f5bfd796d4afcc8ce44ea1f11bfbe2847551d161" +dependencies = [ + "anyhow", + "cfg-if", + "libc", + "log", + "parking_lot", + "rustix 0.36.17", + "sc-allocator", + "sc-executor-common", + "sp-runtime-interface 28.0.0", + "sp-wasm-interface 21.0.1", + "wasmtime", +] + +[[package]] +name = "scale-bits" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" +dependencies = [ + "parity-scale-codec", + "scale-type-resolver 0.1.1", +] + +[[package]] +name = "scale-bits" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" +dependencies = [ + "parity-scale-codec", + "scale-info", + "scale-type-resolver 0.2.0", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "scale-bits 0.5.0", + "scale-decode-derive 0.11.1", + "scale-type-resolver 0.1.1", + "smallvec", +] + +[[package]] +name = "scale-decode" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "primitive-types 0.12.2", + "scale-bits 0.6.0", + "scale-decode-derive 0.13.1", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-decode" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ae9cc099ae85ff28820210732b00f019546f36f33225f509fe25d5816864a0" +dependencies = [ + "derive_more 1.0.0", + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode-derive 0.14.0", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-decode-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" +dependencies = [ + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-decode-derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021" +dependencies = [ + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-decode-derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "scale-encode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "scale-encode-derive 0.6.0", + "scale-type-resolver 0.1.1", + "smallvec", +] + +[[package]] +name = "scale-encode" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528464e6ae6c8f98e2b79633bf79ef939552e795e316579dab09c61670d56602" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "primitive-types 0.12.2", + "scale-bits 0.6.0", + "scale-encode-derive 0.7.2", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-encode" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9271284d05d0749c40771c46180ce89905fd95aa72a2a2fddb4b7c0aa424db" +dependencies = [ + "derive_more 1.0.0", + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-encode-derive 0.8.0", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-encode-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" +dependencies = [ + "darling 0.14.4", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-encode-derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef2618f123c88da9cd8853b69d766068f1eddc7692146d7dfe9b89e25ce2efd" +dependencies = [ + "darling 0.20.10", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "scale-encode-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102fbc6236de6c53906c0b262f12c7aa69c2bdc604862c12728f5f4d370bc137" +dependencies = [ + "darling 0.20.10", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "bitvec", + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", + "schemars", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "scale-type-resolver" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b800069bfd43374e0f96f653e0d46882a2cb16d6d961ac43bea80f26c76843" +dependencies = [ + "smallvec", +] + +[[package]] +name = "scale-type-resolver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-typegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac" +dependencies = [ + "proc-macro2", + "quote", + "scale-info", + "syn 2.0.89", + "thiserror 1.0.69", +] + +[[package]] +name = "scale-typegen" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc4c70c7fea2eef1740f0081d3fe385d8bee1eef11e9272d3bec7dc8e5438e0" +dependencies = [ + "proc-macro2", + "quote", + "scale-info", + "syn 2.0.89", + "thiserror 1.0.69", +] + +[[package]] +name = "scale-value" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd6ab090d823e75cfdb258aad5fe92e13f2af7d04b43a55d607d25fcc38c811" +dependencies = [ + "base58", + "blake2", + "derive_more 0.99.18", + "either", + "frame-metadata 15.1.0", + "parity-scale-codec", + "scale-bits 0.6.0", + "scale-decode 0.13.1", + "scale-encode 0.7.2", + "scale-info", + "scale-type-resolver 0.2.0", + "serde", + "yap", +] + +[[package]] +name = "scale-value" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e0ef2a0ee1e02a69ada37feb87ea1616ce9808aca072befe2d3131bf28576e" +dependencies = [ + "base58", + "blake2", + "derive_more 1.0.0", + "either", + "parity-scale-codec", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-type-resolver 0.2.0", + "serde", + "yap", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.89", +] + +[[package]] +name = "schnellru" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +dependencies = [ + "ahash 0.8.11", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "schnorrkel" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "aead", + "arrayref", + "arrayvec 0.7.6", + "curve25519-dalek 4.1.3", + "getrandom_or_panic", + "merlin", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.8", + "subtle", + "zeroize", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scratch" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" + +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "password-hash", + "pbkdf2", + "salsa20", + "sha2 0.10.8", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand", + "secp256k1-sys 0.10.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "serde", + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "num-bigint", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser 0.10.3", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" +dependencies = [ + "serde", +] + +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "indexmap 2.6.0", + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "time", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.6.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[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", + "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", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared_child" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" + +[[package]] +name = "simple-mermaid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "slot-range-helper" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e34f1146a457a5c554dedeae6c7273aa54c3b031f3e9eb0abd037b5511e2ce9" +dependencies = [ + "enumn", + "parity-scale-codec", + "paste", + "sp-runtime 39.0.2", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "smol" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" +dependencies = [ + "async-channel", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", + "blocking", + "futures-lite", +] + +[[package]] +name = "smoldot" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.21.7", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 4.0.3", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.12.1", + "libm", + "libsecp256k1", + "merlin", + "no-std-net", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.5.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.7.1", + "twox-hash", + "wasmi 0.31.2", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.22.1", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 5.3.1", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.13.0", + "libm", + "libsecp256k1", + "merlin", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.6.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.8.0", + "twox-hash", + "wasmi 0.32.3", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot-light" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7" +dependencies = [ + "async-channel", + "async-lock", + "base64 0.21.7", + "blake2-rfc", + "derive_more 0.99.18", + "either", + "event-listener 4.0.3", + "fnv", + "futures-channel", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "itertools 0.12.1", + "log", + "lru 0.12.5", + "no-std-net", + "parking_lot", + "pin-project", + "rand", + "rand_chacha", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot 0.16.0", + "zeroize", +] + +[[package]] +name = "smoldot-light" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" +dependencies = [ + "async-channel", + "async-lock", + "base64 0.22.1", + "blake2-rfc", + "bs58", + "derive_more 0.99.18", + "either", + "event-listener 5.3.1", + "fnv", + "futures-channel", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "log", + "lru 0.12.5", + "parking_lot", + "pin-project", + "rand", + "rand_chacha", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot 0.18.0", + "zeroize", +] + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "snowbridge-beacon-primitives" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10bd720997e558beb556d354238fa90781deb38241cf31c1b6368738ef21c279" +dependencies = [ + "byte-slice-cast", + "frame-support", + "hex", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "snowbridge-ethereum", + "snowbridge-milagro-bls", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "ssz_rs", + "ssz_rs_derive", +] + +[[package]] +name = "snowbridge-core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6be61e4db95d1e253a1d5e722953b2d2f6605e5f9761f0a919e5d3fbdbff9da9" +dependencies = [ + "ethabi-decode", + "frame-support", + "frame-system", + "hex-literal", + "parity-scale-codec", + "polkadot-parachain-primitives", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", +] + +[[package]] +name = "snowbridge-ethereum" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc3d6d549c57df27cf89ec852f932fa4008eea877a6911a87e03e8002104eabd" +dependencies = [ + "ethabi-decode", + "ethbloom", + "ethereum-types", + "hex-literal", + "parity-bytes", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "serde-big-array", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "snowbridge-milagro-bls" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "026aa8638f690a53e3f7676024b9e913b1cab0111d1b7b92669d40a188f9d7e6" +dependencies = [ + "hex", + "lazy_static", + "parity-scale-codec", + "rand", + "scale-info", + "snowbridge-amcl", "zeroize", ] [[package]] -name = "smoldot-light" -version = "0.14.0" +name = "snowbridge-outbound-queue-merkle-tree" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c6a9b65fa61711b704f0c6afb3663c6288288e8822ddae5cc1146fe3ad9ce8" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "snowbridge-outbound-queue-runtime-api" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d27b8d9cb8022637a5ce4f52692520fa75874f393e04ef5cd75bd8795087f6" +dependencies = [ + "frame-support", + "parity-scale-codec", + "snowbridge-core", + "snowbridge-outbound-queue-merkle-tree", + "sp-api", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-ethereum-client" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d53d32d8470c643f9f8c1f508e1e34263f76297e4c9150e10e8f2e0b63992e1" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-ethereum", + "snowbridge-pallet-ethereum-client-fixtures", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "static_assertions", +] + +[[package]] +name = "snowbridge-pallet-ethereum-client-fixtures" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3984b98465af1d862d4e87ba783e1731f2a3f851b148d6cb98d526cebd351185" +dependencies = [ + "hex-literal", + "snowbridge-beacon-primitives", + "snowbridge-core", + "sp-core 34.0.0", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-inbound-queue" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2e6a9d00e60e3744e6b6f0c21fea6694b9c6401ac40e41340a96e561dcf1935" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-router-primitives", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-pallet-inbound-queue-fixtures" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b099db83f4c10c0bf84e87deb1596019f91411ea1c8c9733ea9a7f2e7e967073" +dependencies = [ + "hex-literal", + "snowbridge-beacon-primitives", + "snowbridge-core", + "sp-core 34.0.0", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-outbound-queue" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7" +checksum = "c7d49478041b6512c710d0d4655675d146fe00a8e0c1624e5d8a1d6c161d490f" dependencies = [ - "async-channel", - "async-lock", - "base64 0.21.7", - "blake2-rfc", - "derive_more", - "either", - "event-listener 4.0.3", - "fnv", - "futures-channel", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "itertools 0.12.1", - "log", - "lru", - "no-std-net", - "parking_lot", - "pin-project", - "rand", - "rand_chacha", + "bridge-hub-common", + "ethabi-decode", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", "serde", - "serde_json", - "siphasher", - "slab", - "smol", - "smoldot", - "zeroize", + "snowbridge-core", + "snowbridge-outbound-queue-merkle-tree", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-system" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "674db59b3c8013382e5c07243ad9439b64d81d2e8b3c4f08d752b55aa5de697e" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-router-primitives" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025f1e6805753821b1db539369f1fb183fd59fd5df7023f7633a4c0cfd3e62f9" +dependencies = [ + "frame-support", + "hex-literal", + "log", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-runtime-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093f0e73d6cfdd2eea8712155d1d75b5063fc9b1d854d2665b097b4bb29570d" +dependencies = [ + "frame-support", + "log", + "parity-scale-codec", + "snowbridge-core", + "sp-arithmetic 26.0.0", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-runtime-test-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "893480d6cde2489051c65efb5d27fa87efe047b3b61216d8e27bb2f0509b7faf" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", + "pallet-session", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "snowbridge-core", + "snowbridge-pallet-ethereum-client", + "snowbridge-pallet-ethereum-client-fixtures", + "snowbridge-pallet-outbound-queue", + "snowbridge-pallet-system", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-system-runtime-api" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b8b83b3db781c49844312a23965073e4d93341739a35eafe526c53b578d3b7" +dependencies = [ + "parity-scale-codec", + "snowbridge-core", + "sp-api", + "sp-std", + "staging-xcm 14.2.0", ] [[package]] @@ -6416,20 +12239,71 @@ dependencies = [ "sha1", ] +[[package]] +name = "sp-api" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbce492e0482134128b7729ea36f5ef1a9f9b4de2d48ff8dde7b5e464e28ce75" +dependencies = [ + "docify", + "hash-db", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-metadata-ir", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-state-machine 0.43.0", + "sp-trie 37.0.0", + "sp-version", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-api-proc-macro" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9aadf9e97e694f0e343978aa632938c5de309cbcc8afed4136cb71596737278" +dependencies = [ + "Inflector", + "blake2", + "expander", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "sp-application-crypto" -version = "33.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" +checksum = "1505fad69251900048ddddc6387265e1545d1a366e3b4dcd57b76a03f0a65ae7" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-io", + "sp-core 32.0.0", + "sp-io 34.0.0", "sp-std", ] +[[package]] +name = "sp-application-crypto" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", +] + [[package]] name = "sp-arithmetic" version = "25.0.0" @@ -6442,14 +12316,248 @@ dependencies = [ "scale-info", "serde", "sp-std", - "static_assertions", + "static_assertions", +] + +[[package]] +name = "sp-arithmetic" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46d0d0a4c591c421d3231ddd5e27d828618c24456d51445d21a1f79fcee97c23" +dependencies = [ + "docify", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std", + "static_assertions", +] + +[[package]] +name = "sp-authority-discovery" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "519c33af0e25ba2dd2eb3790dc404d634b6e4ce0801bcc8fa3574e07c365e734" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-block-builder" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74738809461e3d4bd707b5b94e0e0c064a623a74a6a8fe5c98514417a02858dd" +dependencies = [ + "sp-api", + "sp-inherents", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-consensus-aura" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8faaa05bbcb9c41f0cc535c4c1315abf6df472b53eae018678d1b4d811ac47" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime 39.0.2", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-babe" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ee95e17ee8dcd14db7d584b899a426565ca9abe5a266ab82277977fc547f86" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-inherents", + "sp-runtime 39.0.2", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-beefy" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d97e8cd75d85d15cda6f1923cf3834e848f80d5a6de1cf4edbbc5f0ad607eb" +dependencies = [ + "lazy_static", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-mmr-primitives", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "strum 0.26.3", +] + +[[package]] +name = "sp-consensus-grandpa" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "587b791efe6c5f18e09dbbaf1ece0ee7b5fe51602c233e7151a3676b0de0260b" +dependencies = [ + "finality-grandpa", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-consensus-pow" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa6b7d199a1c16cea1b74ee7cee174bf08f2120ab66a87bee7b12353100b47c" +dependencies = [ + "parity-scale-codec", + "sp-api", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-consensus-slots" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbafb7ed44f51c22fa277fb39b33dc601fa426133a8e2b53f3f46b10f07fba43" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-timestamp", +] + +[[package]] +name = "sp-core" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 3.1.0", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.10.5", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.27.0", + "sp-runtime-interface 26.0.0", + "sp-std", + "sp-storage 20.0.0", + "ss58-registry", + "substrate-bip39 0.5.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "32.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2dac7e47c7ddbb61efe196d5cce99f6ea88926c961fa39909bfeae46fc5a7b" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 3.1.0", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.10.5", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.28.0", + "sp-runtime-interface 27.0.0", + "sp-std", + "sp-storage 21.0.0", + "ss58-registry", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", ] [[package]] name = "sp-core" -version = "31.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" +checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -6457,12 +12565,12 @@ dependencies = [ "bounded-collections", "bs58", "dyn-clonable", - "ed25519-zebra 3.1.0", + "ed25519-zebra 4.0.3", "futures", "hash-db", "hash256-std-hasher", - "impl-serde", - "itertools 0.10.5", + "impl-serde 0.4.0", + "itertools 0.11.0", "k256", "libsecp256k1", "log", @@ -6471,27 +12579,57 @@ dependencies = [ "parity-scale-codec", "parking_lot", "paste", - "primitive-types", + "primitive-types 0.12.2", "rand", "scale-info", "schnorrkel", - "secp256k1", - "secrecy", + "secp256k1 0.28.2", + "secrecy 0.8.0", "serde", "sp-crypto-hashing", "sp-debug-derive", - "sp-externalities", - "sp-runtime-interface", + "sp-externalities 0.29.0", + "sp-runtime-interface 28.0.0", "sp-std", - "sp-storage", + "sp-storage 21.0.0", "ss58-registry", - "substrate-bip39", - "thiserror", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", "tracing", "w3f-bls", "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f812cb2dff962eb378c507612a50f1c59f52d92eb97b710f35be3c2346a3cd7" +dependencies = [ + "sp-crypto-hashing", +] + +[[package]] +name = "sp-crypto-ec-utils" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acb24f8a607a48a87f0ee4c090fc5d577eee49ff39ced6a3c491e06eca03c37" +dependencies = [ + "ark-bls12-377", + "ark-bls12-377-ext", + "ark-bls12-381", + "ark-bls12-381-ext", + "ark-bw6-761", + "ark-bw6-761-ext", + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ed-on-bls12-377-ext", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ed-on-bls12-381-bandersnatch-ext", + "ark-scale", + "sp-runtime-interface 28.0.0", +] + [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -6506,6 +12644,17 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "sp-crypto-hashing-proc-macro" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b85d0f1f1e44bd8617eb2a48203ee854981229e3e79e6f468c7175d5fd37489b" +dependencies = [ + "quote", + "sp-crypto-hashing", + "syn 2.0.89", +] + [[package]] name = "sp-debug-derive" version = "14.0.0" @@ -6514,7 +12663,7 @@ checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -6526,123 +12675,429 @@ dependencies = [ "environmental", "parity-scale-codec", "sp-std", - "sp-storage", + "sp-storage 20.0.0", +] + +[[package]] +name = "sp-externalities" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + +[[package]] +name = "sp-externalities" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a904407d61cb94228c71b55a9d3708e9d6558991f9e83bd42bd91df37a159d30" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a646ed222fd86d5680faa4a8967980eb32f644cae6c8523e1c689a6deda3e8" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-inherents" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afffbddc380d99a90c459ba1554bbbc01d62e892de9f1485af6940b89c4c0d57" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-io" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c44ed47247b6eee76ff703f9fa9f04f99c4104ac1faf629e6d1128e09066b57b" +dependencies = [ + "bytes", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "rustversion", + "secp256k1 0.28.2", + "sp-core 32.0.0", + "sp-crypto-hashing", + "sp-externalities 0.28.0", + "sp-keystore 0.38.0", + "sp-runtime-interface 27.0.0", + "sp-state-machine 0.39.0", + "sp-std", + "sp-tracing 17.0.1", + "sp-trie 33.0.0", + "tracing", + "tracing-core", ] [[package]] name = "sp-io" -version = "33.0.0" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" +checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" dependencies = [ "bytes", + "docify", "ed25519-dalek", "libsecp256k1", "log", "parity-scale-codec", "polkavm-derive 0.9.1", "rustversion", - "secp256k1", - "sp-core", + "secp256k1 0.28.2", + "sp-core 34.0.0", "sp-crypto-hashing", - "sp-externalities", - "sp-keystore", - "sp-runtime-interface", - "sp-state-machine", + "sp-externalities 0.29.0", + "sp-keystore 0.40.0", + "sp-runtime-interface 28.0.0", + "sp-state-machine 0.43.0", + "sp-tracing 17.0.1", + "sp-trie 37.0.0", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-keyring" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" +dependencies = [ + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "strum 0.26.3", +] + +[[package]] +name = "sp-keystore" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core 32.0.0", + "sp-externalities 0.28.0", +] + +[[package]] +name = "sp-keystore" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0248b4d784cb4a01472276928977121fa39d977a5bb24793b6b15e64b046df42" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core 34.0.0", + "sp-externalities 0.29.0", +] + +[[package]] +name = "sp-maybe-compressed-blob" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c768c11afbe698a090386876911da4236af199cd38a5866748df4d8628aeff" +dependencies = [ + "thiserror 1.0.69", + "zstd 0.12.4", +] + +[[package]] +name = "sp-metadata-ir" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a616fa51350b35326682a472ee8e6ba742fdacb18babac38ecd46b3e05ead869" +dependencies = [ + "frame-metadata 16.0.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "sp-mixnet" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0b017dd54823b6e62f9f7171a1df350972e5c6d0bf17e0c2f78680b5c31942" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto 38.0.0", +] + +[[package]] +name = "sp-mmr-primitives" +version = "34.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a12dd76e368f1e48144a84b4735218b712f84b3f976970e2f25a29b30440e10" +dependencies = [ + "log", + "parity-scale-codec", + "polkadot-ckb-merkle-mountain-range", + "scale-info", + "serde", + "sp-api", + "sp-core 34.0.0", + "sp-debug-derive", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-npos-elections" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af922f112c7c1ed199eabe14f12a82ceb75e1adf0804870eccfbcf3399492847" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-offchain" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d9de237d72ecffd07f90826eef18360208b16d8de939d54e61591fac0fcbf99" +dependencies = [ + "sp-api", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-panic-handler" +version = "13.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f5a17a0a11de029a8b811cb6e8b32ce7e02183cc04a3e965c383246798c416" +dependencies = [ + "backtrace", + "lazy_static", + "regex", +] + +[[package]] +name = "sp-runtime" +version = "35.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ce931b7fbfdeeca1340801dbd4a1cae54ad4c97a1e3dcfcc79709bc800dd46" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 34.0.0", + "sp-arithmetic 26.0.0", + "sp-core 32.0.0", + "sp-io 34.0.0", + "sp-std", + "sp-weights 31.0.0", +] + +[[package]] +name = "sp-runtime" +version = "39.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "sp-weights 31.0.0", + "tracing", +] + +[[package]] +name = "sp-runtime-interface" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.8.0", + "primitive-types 0.12.2", + "sp-externalities 0.27.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 20.0.0", + "sp-tracing 16.0.0", + "sp-wasm-interface 20.0.0", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "647db5e1dc481686628b41554e832df6ab400c4b43a6a54e54d3b0a71ca404aa" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.28.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.29.0", + "sp-runtime-interface-proc-macro", "sp-std", - "sp-tracing", - "sp-trie", - "tracing", - "tracing-core", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", + "static_assertions", ] [[package]] -name = "sp-keystore" -version = "0.37.0" +name = "sp-runtime-interface-proc-macro" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" +checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" dependencies = [ - "parity-scale-codec", - "parking_lot", - "sp-core", - "sp-externalities", + "Inflector", + "expander", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "sp-panic-handler" -version = "13.0.0" +name = "sp-session" +version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f5a17a0a11de029a8b811cb6e8b32ce7e02183cc04a3e965c383246798c416" +checksum = "00a3a307fedc423fb8cd2a7726a3bbb99014f1b4b52f26153993e2aae3338fe6" dependencies = [ - "backtrace", - "lazy_static", - "regex", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "sp-runtime" +name = "sp-staking" version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +checksum = "143a764cacbab58347d8b2fd4c8909031fb0888d7b02a0ec9fa44f81f780d732" dependencies = [ - "docify", - "either", - "hash256-std-hasher", "impl-trait-for-tuples", - "log", "parity-scale-codec", - "paste", - "rand", "scale-info", "serde", - "simple-mermaid", - "sp-application-crypto", - "sp-arithmetic", - "sp-core", - "sp-io", - "sp-std", - "sp-weights", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "sp-runtime-interface" -version = "26.0.0" +name = "sp-staking" +version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" +checksum = "2a73eedb4b85f4cd420d31764827546aa22f82ce1646d0fd258993d051de7a90" dependencies = [ - "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.8.0", - "primitive-types", - "sp-externalities", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage", - "sp-tracing", - "sp-wasm-interface", - "static_assertions", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "sp-runtime-interface-proc-macro" -version = "18.0.0" +name = "sp-state-machine" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" +checksum = "21d9078306c3066f1824e41153e1ceec34231d39d9a7e7956b101eadf7b9fd3a" dependencies = [ - "Inflector", - "expander", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.77", + "hash-db", + "log", + "parity-scale-codec", + "parking_lot", + "rand", + "smallvec", + "sp-core 32.0.0", + "sp-externalities 0.28.0", + "sp-panic-handler", + "sp-trie 33.0.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.28.0", ] [[package]] name = "sp-state-machine" -version = "0.38.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" +checksum = "930104d6ae882626e8880d9b1578da9300655d337a3ffb45e130c608b6c89660" dependencies = [ "hash-db", "log", @@ -6650,14 +13105,38 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core", - "sp-externalities", + "sp-core 34.0.0", + "sp-externalities 0.29.0", "sp-panic-handler", - "sp-std", - "sp-trie", - "thiserror", + "sp-trie 37.0.0", + "thiserror 1.0.69", "tracing", - "trie-db", + "trie-db 0.29.1", +] + +[[package]] +name = "sp-statement-store" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c219bc34ef4d1f9835f3ed881f965643c32034fcc030eb33b759dadbc802c1c2" +dependencies = [ + "aes-gcm", + "curve25519-dalek 4.1.3", + "ed25519-dalek", + "hkdf", + "parity-scale-codec", + "rand", + "scale-info", + "sha2 0.10.8", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-externalities 0.29.0", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "thiserror 1.0.69", + "x25519-dalek", ] [[package]] @@ -6672,7 +13151,7 @@ version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" dependencies = [ - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", "ref-cast", "serde", @@ -6680,6 +13159,32 @@ dependencies = [ "sp-std", ] +[[package]] +name = "sp-storage" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99c82989b3a4979a7e1ad848aad9f5d0b4388f1f454cc131766526601ab9e8f8" +dependencies = [ + "impl-serde 0.4.0", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", +] + +[[package]] +name = "sp-timestamp" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a1cb4df653d62ccc0dbce1db45d1c9443ec60247ee9576962d24da4c9c6f07" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + [[package]] name = "sp-tracing" version = "16.0.0" @@ -6690,14 +13195,51 @@ dependencies = [ "sp-std", "tracing", "tracing-core", - "tracing-subscriber", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "sp-tracing" +version = "17.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf641a1d17268c8fcfdb8e0fa51a79c2d4222f4cfda5f3944dbdbc384dced8d5" +dependencies = [ + "parity-scale-codec", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.18", +] + +[[package]] +name = "sp-transaction-pool" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4bf251059485a7dd38fe4afeda8792983511cc47f342ff4695e2dcae6b5247" +dependencies = [ + "sp-api", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-transaction-storage-proof" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c765c2e9817d95f13d42a9f2295c60723464669765c6e5acbacebd2f54932f67" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-inherents", + "sp-runtime 39.0.2", + "sp-trie 37.0.0", ] [[package]] name = "sp-trie" -version = "32.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" +checksum = "d1f5b3620a1c87c265a83d85d7519c6b60c47acf7f77593966afe313d086f00e" dependencies = [ "ahash 0.8.11", "hash-db", @@ -6709,15 +13251,68 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core", - "sp-externalities", - "sp-std", - "thiserror", + "sp-core 32.0.0", + "sp-externalities 0.28.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.28.0", + "trie-root", +] + +[[package]] +name = "sp-trie" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6282aef9f4b6ecd95a67a45bcdb67a71f4a4155c09a53c10add4ffe823db18cd" +dependencies = [ + "ahash 0.8.11", + "hash-db", + "lazy_static", + "memory-db", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "rand", + "scale-info", + "schnellru", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "thiserror 1.0.69", "tracing", - "trie-db", + "trie-db 0.29.1", "trie-root", ] +[[package]] +name = "sp-version" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d521a405707b5be561367cd3d442ff67588993de24062ce3adefcf8437ee9fe1" +dependencies = [ + "impl-serde 0.4.0", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime 39.0.2", + "sp-std", + "sp-version-proc-macro", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-version-proc-macro" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aee8f6730641a65fcf0c8f9b1e448af4b3bb083d08058b47528188bccc7b7a7" +dependencies = [ + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "sp-wasm-interface" version = "20.0.0" @@ -6732,6 +13327,19 @@ dependencies = [ "wasmtime", ] +[[package]] +name = "sp-wasm-interface" +version = "21.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "wasmtime", +] + [[package]] name = "sp-weights" version = "30.0.0" @@ -6743,11 +13351,26 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic", + "sp-arithmetic 25.0.0", "sp-debug-derive", "sp-std", ] +[[package]] +name = "sp-weights" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 26.0.0", + "sp-debug-derive", +] + [[package]] name = "spin" version = "0.9.8" @@ -6766,9 +13389,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.50.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" dependencies = [ "Inflector", "num-format", @@ -6779,17 +13402,148 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "ssz_rs" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" +dependencies = [ + "bitvec", + "num-bigint", + "sha2 0.9.9", + "ssz_rs_derive", +] + +[[package]] +name = "ssz_rs_derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "staging-parachain-info" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d28266dfddbfff721d70ad2f873380845b569adfab32f257cf97d9cedd894b68" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", +] + +[[package]] +name = "staging-xcm" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aded0292274ad473250c22ed3deaf2d9ed47d15786d700e9e83ab7c1cad2ad44" +dependencies = [ + "array-bytes", + "bounded-collections", + "derivative", + "environmental", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-weights 31.0.0", + "xcm-procedural 8.0.0", +] + +[[package]] +name = "staging-xcm" +version = "14.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bee7cd999e9cdf10f8db72342070d456e21e82a0f5962ff3b87edbd5f2b20e" +dependencies = [ + "array-bytes", + "bounded-collections", + "derivative", + "environmental", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "xcm-procedural 10.1.0", +] + +[[package]] +name = "staging-xcm-builder" +version = "17.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3746adbbae27b1e6763f0cca622e15482ebcb94835a9e078c212dd7be896e35" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-asset-conversion", + "pallet-transaction-payment", + "parity-scale-codec", + "polkadot-parachain-primitives", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "staging-xcm-executor" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79dd0c5332a5318e58f0300b20768b71cf9427c906f94a743c9dc7c3ee9e7fa9" +dependencies = [ + "environmental", + "frame-benchmarking", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "tracing", +] + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string-interner" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "serde", +] [[package]] name = "strsim" @@ -6841,7 +13595,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -6857,6 +13611,40 @@ dependencies = [ "zeroize", ] +[[package]] +name = "substrate-bip39" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "schnorrkel", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "substrate-wasm-builder" +version = "24.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf035ffe7335fb24053edfe4d0a5780250eda772082a1b80ae25835dd4c09265" +dependencies = [ + "build-helper", + "cargo_metadata 0.15.4", + "console", + "filetime", + "jobserver", + "parity-wasm", + "polkavm-linker 0.9.2", + "sp-maybe-compressed-blob", + "strum 0.26.3", + "tempfile", + "toml 0.8.19", + "walkdir", + "wasm-opt", +] + [[package]] name = "subtle" version = "2.6.1" @@ -6875,30 +13663,67 @@ dependencies = [ "frame-metadata 16.0.0", "futures", "hex", - "impl-serde", + "impl-serde 0.4.0", "instant", "jsonrpsee 0.22.5", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "reconnecting-jsonrpsee-ws-client", "scale-bits 0.6.0", "scale-decode 0.13.1", - "scale-encode 0.7.1", + "scale-encode 0.7.2", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", "sp-crypto-hashing", - "subxt-core", - "subxt-lightclient", - "subxt-macro", - "subxt-metadata", - "thiserror", + "subxt-core 0.37.1", + "subxt-lightclient 0.37.0", + "subxt-macro 0.37.0", + "subxt-metadata 0.37.0", + "thiserror 1.0.69", "tokio-util", "tracing", "url", ] +[[package]] +name = "subxt" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" +dependencies = [ + "async-trait", + "derive-where", + "either", + "frame-metadata 17.0.0", + "futures", + "hex", + "impl-serde 0.5.0", + "jsonrpsee 0.24.7", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.17.0", + "serde", + "serde_json", + "subxt-core 0.38.0", + "subxt-lightclient 0.38.0", + "subxt-macro 0.38.0", + "subxt-metadata 0.38.0", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "tracing", + "url", + "wasm-bindgen-futures", + "web-time", +] + [[package]] name = "subxt-codegen" version = "0.37.0" @@ -6913,18 +13738,35 @@ dependencies = [ "proc-macro2", "quote", "scale-info", - "scale-typegen", - "subxt-metadata", - "syn 2.0.77", - "thiserror", + "scale-typegen 0.8.0", + "subxt-metadata 0.37.0", + "syn 2.0.89", + "thiserror 1.0.69", "tokio", ] +[[package]] +name = "subxt-codegen" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cfcfb7d9589f3df0ac87c4988661cf3fb370761fcb19f2fd33104cc59daf22a" +dependencies = [ + "heck 0.5.0", + "parity-scale-codec", + "proc-macro2", + "quote", + "scale-info", + "scale-typegen 0.9.0", + "subxt-metadata 0.38.0", + "syn 2.0.89", + "thiserror 1.0.69", +] + [[package]] name = "subxt-core" -version = "0.37.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f41eb2e2eea6ed45649508cc735f92c27f1fcfb15229e75f8270ea73177345" +checksum = "3af3b36405538a36b424d229dc908d1396ceb0994c90825ce928709eac1a159a" dependencies = [ "base58", "blake2", @@ -6932,20 +13774,47 @@ dependencies = [ "frame-metadata 16.0.0", "hashbrown 0.14.5", "hex", - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "scale-bits 0.6.0", "scale-decode 0.13.1", - "scale-encode 0.7.1", + "scale-encode 0.7.2", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", - "sp-core", "sp-crypto-hashing", - "sp-runtime", - "subxt-metadata", + "subxt-metadata 0.37.0", + "tracing", +] + +[[package]] +name = "subxt-core" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ea28114366780d23684bd55ab879cd04c9d4cbba3b727a3854a3eca6bf29a1a" +dependencies = [ + "base58", + "blake2", + "derive-where", + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "hex", + "impl-serde 0.5.0", + "keccak-hash", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.17.0", + "serde", + "serde_json", + "subxt-metadata 0.38.0", "tracing", ] @@ -6959,8 +13828,25 @@ dependencies = [ "futures-util", "serde", "serde_json", - "smoldot-light", - "thiserror", + "smoldot-light 0.14.0", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "subxt-lightclient" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534d4b725183a9fa09ce0e0f135674473297fdd97dee4d683f41117f365ae997" +dependencies = [ + "futures", + "futures-util", + "serde", + "serde_json", + "smoldot-light 0.16.2", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -6976,9 +13862,25 @@ dependencies = [ "parity-scale-codec", "proc-macro-error", "quote", - "scale-typegen", - "subxt-codegen", - "syn 2.0.77", + "scale-typegen 0.8.0", + "subxt-codegen 0.37.0", + "syn 2.0.89", +] + +[[package]] +name = "subxt-macro" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228db9a5c95a6d8dc6152b4d6cdcbabc4f60821dd3f482a4f8791e022b7caadb" +dependencies = [ + "darling 0.20.10", + "parity-scale-codec", + "proc-macro-error2", + "quote", + "scale-typegen 0.9.0", + "subxt-codegen 0.38.0", + "subxt-utils-fetchmetadata", + "syn 2.0.89", ] [[package]] @@ -6994,6 +13896,20 @@ dependencies = [ "sp-crypto-hashing", ] +[[package]] +name = "subxt-metadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" +dependencies = [ + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "polkadot-sdk", + "scale-info", +] + [[package]] name = "subxt-signer" version = "0.37.0" @@ -7008,14 +13924,52 @@ dependencies = [ "pbkdf2", "regex", "schnorrkel", - "secp256k1", - "secrecy", + "secp256k1 0.28.2", + "secrecy 0.8.0", "sha2 0.10.8", "sp-crypto-hashing", - "subxt-core", + "subxt-core 0.37.1", + "zeroize", +] + +[[package]] +name = "subxt-signer" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7a336d6a1f86f126100a4a717be58352de4c8214300c4f7807f974494efdb9" +dependencies = [ + "base64 0.22.1", + "bip39", + "cfg-if", + "crypto_secretbox", + "hex", + "hmac 0.12.1", + "parity-scale-codec", + "pbkdf2", + "polkadot-sdk", + "regex", + "schnorrkel", + "scrypt", + "secp256k1 0.30.0", + "secrecy 0.10.3", + "serde", + "serde_json", + "sha2 0.10.8", + "subxt-core 0.38.0", "zeroize", ] +[[package]] +name = "subxt-utils-fetchmetadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082b17a86e3c3fe45d858d94d68f6b5247caace193dad6201688f24db8ba9bb" +dependencies = [ + "hex", + "parity-scale-codec", + "thiserror 1.0.69", +] + [[package]] name = "symlink" version = "0.1.0" @@ -7035,9 +13989,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", @@ -7045,15 +13999,15 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "syn-solidity" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" dependencies = [ - "proc-macro-error", + "paste", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -7064,13 +14018,36 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -7121,9 +14098,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.41" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -7138,14 +14115,14 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", "once_cell", - "rustix 0.38.36", + "rustix 0.38.41", "windows-sys 0.59.0", ] @@ -7174,6 +14151,22 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +[[package]] +name = "testnet-parachains-constants" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bceae6f7c89d47daff6c7e05f712551a01379f61b07d494661941144878589" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "polkadot-core-primitives", + "rococo-runtime-constants", + "smallvec", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "westend-runtime-constants", +] + [[package]] name = "textwrap" version = "0.16.1" @@ -7182,27 +14175,47 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width", + "unicode-width 0.1.14", +] + +[[package]] +name = "thiserror" +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 = "1.0.63" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -7246,6 +14259,25 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -7263,14 +14295,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.2", + "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -7297,7 +14329,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] @@ -7337,7 +14369,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "tokio", ] @@ -7393,6 +14425,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml" version = "0.7.8" @@ -7414,7 +14455,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -7432,7 +14473,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -7441,15 +14482,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.20", ] [[package]] @@ -7545,9 +14586,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -7557,20 +14598,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -7587,6 +14628,17 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-serde" version = "0.1.3" @@ -7606,7 +14658,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers", + "matchers 0.0.1", "regex", "serde", "serde_json", @@ -7615,10 +14667,29 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-serde", ] +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers 0.1.0", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + [[package]] name = "trie-db" version = "0.28.0" @@ -7632,6 +14703,18 @@ dependencies = [ "smallvec", ] +[[package]] +name = "trie-db" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" +dependencies = [ + "hash-db", + "log", + "rustc-hex", + "smallvec", +] + [[package]] name = "trie-root" version = "0.18.0" @@ -7647,6 +14730,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + [[package]] name = "tungstenite" version = "0.20.1" @@ -7661,11 +14750,17 @@ dependencies = [ "log", "rand", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + [[package]] name = "twox-hash" version = "1.6.3" @@ -7686,9 +14781,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -7703,25 +14798,34 @@ dependencies = [ ] [[package]] -name = "unicase" -version = "2.7.0" +name = "uint" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" dependencies = [ - "version_check", + "byteorder", + "crunchy", + "hex", + "static_assertions", ] [[package]] -name = "unicode-bidi" -version = "0.3.15" +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicase" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-linebreak" @@ -7740,15 +14844,21 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -7772,6 +14882,12 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" + [[package]] name = "untrusted" version = "0.9.0" @@ -7780,9 +14896,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -7796,6 +14912,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -7804,9 +14932,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] @@ -7847,15 +14975,15 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" +checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff", - "ark-serialize", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", "ark-serialize-derive", "arrayref", "constcat", @@ -7865,7 +14993,7 @@ dependencies = [ "rand_core 0.6.4", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -7905,9 +15033,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -7916,24 +15044,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -7943,9 +15071,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7953,31 +15081,40 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-encoder" -version = "0.207.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17" +checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" dependencies = [ "leb128", - "wasmparser 0.207.0", + "wasmparser 0.220.0", +] + +[[package]] +name = "wasm-instrument" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" +dependencies = [ + "parity-wasm", ] [[package]] @@ -7991,7 +15128,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror", + "thiserror 1.0.69", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -8029,7 +15166,24 @@ dependencies = [ "smallvec", "spin", "wasmi_arena", - "wasmi_core", + "wasmi_core 0.13.0", + "wasmparser-nostd", +] + +[[package]] +name = "wasmi" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50386c99b9c32bd2ed71a55b6dd4040af2580530fae8bdb9a6576571a80d0cca" +dependencies = [ + "arrayvec 0.7.6", + "multi-stash", + "num-derive", + "num-traits", + "smallvec", + "spin", + "wasmi_collections", + "wasmi_core 0.32.3", "wasmparser-nostd", ] @@ -8039,6 +15193,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" +[[package]] +name = "wasmi_collections" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" +dependencies = [ + "ahash 0.8.11", + "hashbrown 0.14.5", + "string-interner", +] + [[package]] name = "wasmi_core" version = "0.13.0" @@ -8051,6 +15216,18 @@ dependencies = [ "paste", ] +[[package]] +name = "wasmi_core" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmparser" version = "0.102.0" @@ -8063,15 +15240,16 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.207.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" +checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", "hashbrown 0.14.5", - "indexmap 2.5.0", - "semver", + "indexmap 2.6.0", + "semver 1.0.23", + "serde", ] [[package]] @@ -8099,9 +15277,12 @@ dependencies = [ "once_cell", "paste", "psm", + "rayon", "serde", "target-lexicon", "wasmparser 0.102.0", + "wasmtime-cache", + "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -8117,6 +15298,63 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "wasmtime-cache" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" +dependencies = [ + "anyhow", + "base64 0.21.7", + "bincode", + "directories-next", + "file-per-thread-logger", + "log", + "rustix 0.36.17", + "serde", + "sha2 0.10.8", + "toml 0.5.11", + "windows-sys 0.45.0", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "wasmtime-cranelift" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "gimli 0.27.3", + "log", + "object 0.30.4", + "target-lexicon", + "thiserror 1.0.69", + "wasmparser 0.102.0", + "wasmtime-cranelift-shared", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-cranelift-shared" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-native", + "gimli 0.27.3", + "object 0.30.4", + "target-lexicon", + "wasmtime-environ", +] + [[package]] name = "wasmtime-environ" version = "8.0.1" @@ -8131,7 +15369,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", "wasmtime-types", ] @@ -8154,6 +15392,7 @@ dependencies = [ "serde", "target-lexicon", "wasmtime-environ", + "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-runtime", "windows-sys 0.45.0", @@ -8165,7 +15404,9 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" dependencies = [ + "object 0.30.4", "once_cell", + "rustix 0.36.17", ] [[package]] @@ -8211,15 +15452,25 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", ] [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -8227,25 +15478,52 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] +[[package]] +name = "westend-runtime-constants" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06861bf945aadac59f4be23b44c85573029520ea9bd3d6c9ab21c8b306e81cdc" +dependencies = [ + "frame-support", + "polkadot-primitives 16.0.0", + "polkadot-runtime-common", + "smallvec", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-builder", +] + [[package]] name = "which" -version = "6.0.3" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" dependencies = [ "either", "home", - "rustix 0.38.36", + "rustix 0.38.41", "winsafe", ] +[[package]] +name = "wide" +version = "0.7.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" +dependencies = [ + "bytemuck", + "safe_arch", +] + [[package]] name = "winapi" version = "0.3.9" @@ -8541,9 +15819,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -8564,6 +15842,18 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -8593,7 +15883,69 @@ checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", "linux-raw-sys 0.4.14", - "rustix 0.38.36", + "rustix 0.38.41", +] + +[[package]] +name = "xcm-procedural" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4717a97970a9cda70d7db53cf50d2615c2f6f6b7c857445325b4a39ea7aa2cd" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "xcm-procedural" +version = "10.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fb4f14094d65c500a59bcf540cf42b99ee82c706edd6226a92e769ad60563e" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "xcm-runtime-apis" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d4473a5d157e4d437d9ebcb1b99f9693a64983877ee57d97005f0167869935" +dependencies = [ + "frame-support", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "xcm-simulator" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058e21bfc3e1180bbd83cad3690d0e63f34f43ab309e338afe988160aa776fcf" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "paste", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] @@ -8608,6 +15960,30 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff4524214bc4629eba08d78ceb1d6507070cc0bcbbed23af74e19e6e924a24cf" +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -8626,7 +16002,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "synstructure 0.13.1", ] [[package]] @@ -8646,29 +16043,51 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.89", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "arbitrary", "crc32fast", "crossbeam-utils", "displaydoc", - "indexmap 2.5.0", + "indexmap 2.6.0", "memchr", - "thiserror", + "thiserror 2.0.3", ] [[package]] name = "zombienet-configuration" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ab4af5d47f03cb8ae0fa96ffbf3881ca050c51e62367685ebdd3e8ae52b220" +checksum = "3de034c8aeb865b528ec76da9c26e91acec88b31709b75c053ffd50999a70443" dependencies = [ "anyhow", "lazy_static", @@ -8677,7 +16096,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "toml 0.7.8", "url", @@ -8686,9 +16105,9 @@ dependencies = [ [[package]] name = "zombienet-orchestrator" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580e01019655a2bd296e42f48876c2e78c94a989147376e025c0e64daf717cf7" +checksum = "d5ee915b0c296af3591c7e80ce80beab963f9fec12ddd7dca5b818bdc8ad7304" dependencies = [ "anyhow", "async-trait", @@ -8704,10 +16123,10 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "sp-core", - "subxt", - "subxt-signer", - "thiserror", + "sp-core 31.0.0", + "subxt 0.38.0", + "subxt-signer 0.38.0", + "thiserror 1.0.69", "tokio", "tracing", "uuid", @@ -8719,20 +16138,20 @@ dependencies = [ [[package]] name = "zombienet-prom-metrics-parser" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d026607c1a6e198b653c5979fb07078740861978ddecfd5460f2c32cdc182b1" +checksum = "049d19866bac35574ccc7e6558f2ca2b802a4d7325e48978d55e7337e9cece20" dependencies = [ "pest", "pest_derive", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "zombienet-provider" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55583d8be6b2ca2e679d85ee2e17eb0802fbf8d2ee05c1b326fff81fd6b3b5c3" +checksum = "f5890668321c0f4c324830e5c47925d82458e484213caa57798ffd350d35f007" dependencies = [ "anyhow", "async-trait", @@ -8749,7 +16168,7 @@ dependencies = [ "serde_yaml", "sha2 0.10.8", "tar", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -8761,14 +16180,14 @@ dependencies = [ [[package]] name = "zombienet-sdk" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300f3f07aa72df21a52611a0df1033325a454252e36d964c4308b0a8b7356f77" +checksum = "e713dd9911efe9238e0e1c30dec12884052da456d105014b5de2a5e914350476" dependencies = [ "async-trait", "futures", "lazy_static", - "subxt", + "subxt 0.38.0", "tokio", "zombienet-configuration", "zombienet-orchestrator", @@ -8778,9 +16197,9 @@ dependencies = [ [[package]] name = "zombienet-support" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e566ea145dab27c6fbb24b13d4c789efa7e675e1fdaf6d007dfe1154d59317c6" +checksum = "ba603a3cda55bef37fe4a9036521f7e4345726190aa54f4fa0ca7df77d2f7c39" dependencies = [ "anyhow", "async-trait", @@ -8789,8 +16208,56 @@ dependencies = [ "rand", "regex", "reqwest 0.11.27", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "uuid", ] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe 6.0.6", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/crates/pop-wallet-integration/Cargo.toml b/crates/pop-wallet-integration/Cargo.toml new file mode 100644 index 00000000..02339d3b --- /dev/null +++ b/crates/pop-wallet-integration/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "pop-wallet-integration" +edition.workspace = true +documentation.workspace = true +license.workspace = true +repository.workspace = true +version.workspace = true + +[dependencies] +axum.workspace = true +tokio.workspace = true +tower-http = { workspace = true, features = ["fs"] } +serde_json.workspace = true +serde = { workspace = true, features = ["derive"] } diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs new file mode 100644 index 00000000..9a970fcd --- /dev/null +++ b/crates/pop-wallet-integration/src/lib.rs @@ -0,0 +1,161 @@ +use axum::{ + routing::{get, post}, + Router, +}; +use serde::Serialize; +use std::{path::PathBuf, sync::Arc}; +use tokio::sync::{oneshot, Mutex}; +use tower_http::services::ServeDir; + +/// Data to be sent to frontend for signing. +#[derive(Serialize)] +pub struct Data { + chain_rpc: String, + data_type: DataType, +} + +/// The type of transaction with specific data for signing (contract or parachain). +#[derive(Serialize)] +pub enum DataType { + /// Parachain call, where Vec is the encoded call data. + Parachain(Vec), + Contract(ContractArgs), +} + +/// Contract specific data variations. +pub mod contracts { + use super::Serialize; + #[derive(Serialize)] + pub struct ContractArgs { + call_type: ContractCallType, + storage_deposit_limit: Option, + /// The binary (wasm, polkavm) of the contract. + code: Option>, + } + + #[derive(Serialize)] + pub enum ContractCallType { + // no unique fields. + Upload, + Instantiate(InstantiateArgs), + Call(CallArgs), + } + + /// Arguments for instantiating a contract. + #[derive(Serialize)] + pub struct InstantiateArgs { + constructor: String, + args: Vec, + value: String, + gas_limit: Option, + proof_size: Option, + salt: Option>, + } + + /// Arguments for calling a contract. + #[derive(Serialize)] + pub struct CallArgs { + address: String, + message: String, + args: Vec, + value: String, + gas_limit: Option, + proof_size: Option, + } +} +use crate::contracts::ContractArgs; + +struct StateHandler { + shutdown_tx: Option>, + signed_payload: Option, +} + +/// Manages the wallet integration for secure signing of transactions. +pub struct WalletIntegrationManager { + frontend_path: PathBuf, + // cloning can be expensive (e.g. contract code stored in-memory) + data: Arc, + signed_payload: Option, +} + +impl WalletIntegrationManager { + /// - frontend_path: Path to the wallet-integration frontend. + /// - data: Data to be sent to the frontend for signing. + pub fn new(frontend_path: PathBuf, data: Data) -> Self { + Self { frontend_path, data: Arc::new(data), signed_payload: Default::default() } + } + + /// Serves the wallet-integration frontend and an API for the wallet to get + /// the necessary data and submit the signed payload. + pub async fn run(&mut self) { + // used to signal shutdown. + let (tx, rx) = oneshot::channel(); + + // shared state between routes. Will be used to store the signed payload. + let state = + Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + + // will shutdown when the signed payload is received + let app = Router::new() + // cloning Arcs is cheap + .route("/data", get(routes::get_data_handler).with_state(self.data.clone())) + .route("/submit", post(routes::handle_submit).with_state(state.clone())) + .nest_service("/", ServeDir::new(self.frontend_path.clone())); + + let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .unwrap(); + + self.signed_payload = state.lock().await.signed_payload.take(); + } +} + +mod routes { + use super::{Arc, Data, Mutex, StateHandler}; + use axum::{extract::State, Json}; + use serde_json::json; + + /// Responds with the serialized JSON data for signing. + pub(super) async fn get_data_handler(State(data): State>) -> Json { + Json(serde_json::to_value(&*data).unwrap()) + } + + /// Receives the signed payload from the wallet. + /// Will signal for shutdown on success. + pub(super) async fn handle_submit( + State(state): State>>, + Json(payload): Json, + ) -> Json { + let mut state = state.lock().await; + state.signed_payload = Some(payload.clone()); + + // signal shutdown + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } + + // graceful shutdown ensures response is sent before shutdown. + Json(json!({"status": "success", "payload": payload})) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[tokio::test] + async fn wallet_integration_manager() { + let path = PathBuf::from("/Users/peter/dev/r0gue/react-teleport-example/dist"); + let data = + Data { chain_rpc: "chain_rpc".to_string(), data_type: DataType::Parachain(vec![]) }; + let mut wim = WalletIntegrationManager::new(path, data); + + wim.run().await; + + println!("{:?}", wim.signed_payload); + } +} From 829272bf6662b26dde9b32e0ef8f217fa61b9dba Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 3 Dec 2024 17:54:59 -0700 Subject: [PATCH 014/143] feat(wallet-integration): add a few tests to server. Needs more --- Cargo.lock | 11275 ++++----------------- crates/pop-wallet-integration/src/lib.rs | 80 +- 2 files changed, 2004 insertions(+), 9351 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6f546406..58487700 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,11 +23,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ - "gimli 0.31.1", + "gimli 0.31.0", ] [[package]] @@ -46,31 +46,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "aes-gcm" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - [[package]] name = "ahash" version = "0.7.8" @@ -106,68 +81,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" - -[[package]] -name = "alloy-primitives" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more 0.99.18", - "hex-literal", - "itoa", - "proptest", - "rand", - "ruint", - "serde", - "tiny-keccak", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" -dependencies = [ - "arrayvec 0.7.6", - "bytes", -] - -[[package]] -name = "alloy-sol-macro" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" -dependencies = [ - "const-hex", - "dunce", - "heck 0.4.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.89", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-types" -version = "0.4.2" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" -dependencies = [ - "alloy-primitives", - "alloy-sol-macro", - "const-hex", - "serde", -] +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -195,9 +111,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -210,72 +126,49 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" - -[[package]] -name = "approx" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "aquamarine" -version = "0.5.0" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" -dependencies = [ - "include_dir", - "itertools 0.10.5", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.89", -] +checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" dependencies = [ "derive_arbitrary", ] @@ -287,20 +180,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-models-ext", - "ark-std 0.4.0", + "ark-ff", + "ark-std", ] [[package]] @@ -310,48 +191,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bls12-381-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-serialize 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bw6-761" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bw6-761-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" -dependencies = [ - "ark-bw6-761", - "ark-ec", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", + "ark-ff", + "ark-serialize", + "ark-std", ] [[package]] @@ -360,83 +202,14 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff 0.4.2", + "ark-ff", "ark-poly", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-serialize", + "ark-std", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ed-on-bls12-377" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", "zeroize", ] @@ -446,30 +219,20 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version 0.4.1", + "rustc_version", "zeroize", ] -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -480,18 +243,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -505,56 +256,19 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-models-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" -dependencies = [ - "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", -] - [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff", + "ark-serialize", + "ark-std", "derivative", "hashbrown 0.13.2", ] -[[package]] -name = "ark-scale" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" -dependencies = [ - "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - [[package]] name = "ark-serialize" version = "0.4.2" @@ -562,7 +276,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std 0.4.0", + "ark-std", "digest 0.10.7", "num-bigint", ] @@ -578,16 +292,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - [[package]] name = "ark-std" version = "0.4.0" @@ -596,7 +300,6 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", - "rayon", ] [[package]] @@ -607,9 +310,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.9" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -652,7 +355,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -696,66 +399,6 @@ dependencies = [ "wait-timeout", ] -[[package]] -name = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" - -[[package]] -name = "asset-test-utils" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0324df9ce91a9840632e865dd3272bd20162023856f1b189b7ae58afa5c6b61" -dependencies = [ - "cumulus-pallet-parachain-system", - "cumulus-pallet-xcmp-queue", - "cumulus-primitives-core", - "frame-support", - "frame-system", - "pallet-assets", - "pallet-balances", - "pallet-collator-selection", - "pallet-session", - "pallet-timestamp", - "pallet-xcm", - "pallet-xcm-bridge-hub-router", - "parachains-common", - "parachains-runtimes-test-utils", - "parity-scale-codec", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-parachain-info", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "substrate-wasm-builder", -] - -[[package]] -name = "assets-common" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93438e31a4449fbeab87210931edc8cd156292354f1fc15f17d819ecded6bf25" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "impl-trait-for-tuples", - "log", - "pallet-asset-conversion", - "pallet-assets", - "pallet-xcm", - "parachains-common", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "substrate-wasm-builder", -] - [[package]] name = "async-channel" version = "2.3.1" @@ -794,9 +437,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -805,7 +448,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 0.38.41", + "rustix 0.38.36", "slab", "tracing", "windows-sys 0.59.0", @@ -835,9 +478,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" dependencies = [ "async-channel", "async-io", @@ -848,8 +491,9 @@ dependencies = [ "cfg-if", "event-listener 5.3.1", "futures-lite", - "rustix 0.38.41", + "rustix 0.38.36", "tracing", + "windows-sys 0.59.0", ] [[package]] @@ -864,7 +508,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.41", + "rustix 0.38.36", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -872,9 +516,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", @@ -883,13 +527,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -900,13 +544,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -921,22 +565,11 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "auto_impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "autocfg" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -951,7 +584,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "itoa", "matchit", @@ -964,7 +597,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "tokio", "tower 0.5.1", "tower-layer", @@ -987,7 +620,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -1065,11 +698,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.2", + "addr2line 0.24.1", "cfg-if", "libc", "miniz_oxide", - "object 0.36.5", + "object 0.36.4", "rustc-demangle", "windows-targets 0.52.6", ] @@ -1135,50 +768,25 @@ dependencies = [ ] [[package]] -name = "binary-merkle-tree" -version = "15.0.1" +name = "bincode" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" -dependencies = [ - "hash-db", - "log", -] - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ "serde", ] [[package]] name = "bip39" -version = "2.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ - "bitcoin_hashes 0.13.0", + "bitcoin_hashes 0.11.0", "serde", "unicode-normalization", ] -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -1186,10 +794,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" [[package]] -name = "bitcoin-io" -version = "0.1.3" +name = "bitcoin_hashes" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" [[package]] name = "bitcoin_hashes" @@ -1198,17 +806,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative 0.1.2", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" -dependencies = [ - "bitcoin-io", - "hex-conservative 0.2.1", + "hex-conservative", ] [[package]] @@ -1231,7 +829,6 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", - "serde", "tap", "wyz", ] @@ -1299,9 +896,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.18.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" +checksum = "0aed08d3adb6ebe0eff737115056652670ae290f177759aac19c30456135f94c" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -1311,10 +908,10 @@ dependencies = [ "hex", "http 1.1.0", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-named-pipe", "hyper-util", - "hyperlocal", + "hyperlocal-next", "log", "pin-project-lite", "serde", @@ -1322,7 +919,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 2.0.3", + "thiserror", "tokio", "tokio-util", "tower-service", @@ -1332,9 +929,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.47.1-rc.27.3.1" +version = "1.44.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" +checksum = "709d9aa1c37abb89d40f19f5d0ad6f0d88cb1581264e571c9350fc5bb89cf1c5" dependencies = [ "serde", "serde_repr", @@ -1343,9 +940,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ "borsh-derive", "cfg_aliases", @@ -1353,302 +950,28 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", + "syn_derive", ] [[package]] name = "bounded-collections" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" -dependencies = [ - "log", - "parity-scale-codec", - "scale-info", - "serde", -] - -[[package]] -name = "bp-header-chain" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "890df97cea17ee61ff982466bb9e90cb6b1462adb45380999019388d05e4b92d" -dependencies = [ - "bp-runtime", - "finality-grandpa", - "frame-support", - "parity-scale-codec", - "scale-info", - "serde", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-messages" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efabf94339950b914ba87249497f1a0e35a73849934d164fecae4b275928cf6" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "frame-support", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", -] - -[[package]] -name = "bp-parachains" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9011e5c12c15caf3c4129a98f4f4916ea9165db8daf6ed85867c3106075f40df" -dependencies = [ - "bp-header-chain", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-polkadot" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa6277dd4333917ecfbcc35e9332a9f11682e0a506e76b617c336224660fce33" -dependencies = [ - "bp-header-chain", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "sp-api", - "sp-std", -] - -[[package]] -name = "bp-polkadot-core" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345cf472bac11ef79d403e4846a666b7d22a13cd16d9c85b62cd6b5e16c4a042" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "parity-scale-codec", - "parity-util-mem", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-relayers" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9465ad727e466d67d64244a1aa7bb19933a297913fdde34b8e9bda0a341bdeb" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-runtime", - "frame-support", - "frame-system", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-runtime" -version = "0.18.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "746d9464f912b278f8a5e2400f10541f95da7fc6c7d688a2788b9a46296146ee" +checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" dependencies = [ - "frame-support", - "frame-system", - "hash-db", - "impl-trait-for-tuples", "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-state-machine 0.43.0", - "sp-std", - "sp-trie 37.0.0", - "trie-db 0.29.1", -] - -[[package]] -name = "bp-test-utils" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e659078b54c0b6bd79896738212a305842ad37168976363233516754337826" -dependencies = [ - "bp-header-chain", - "bp-parachains", - "bp-polkadot-core", - "bp-runtime", - "ed25519-dalek", - "finality-grandpa", - "parity-scale-codec", - "sp-application-crypto 38.0.0", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "sp-trie 37.0.0", -] - -[[package]] -name = "bp-xcm-bridge-hub" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6909117ca87cb93703742939d5f0c4c93e9646d9cda22262e9709d68c929999b" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", "parity-scale-codec", "scale-info", "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bp-xcm-bridge-hub-router" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9284820ca704f5c065563cad77d2e3d069a23cc9cb3a29db9c0de8dd3b173a87" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bridge-hub-common" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b53c53d627e2da38f8910807944bf3121e154b5c0ac9e122995af9dfb13ed" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "pallet-message-queue", - "parity-scale-codec", - "scale-info", - "snowbridge-core", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bridge-hub-test-utils" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0b3aa5fd8481a06ca16e47fd3d2d9c6abe76b27d922ec8980a853f242173b3" -dependencies = [ - "asset-test-utils", - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-test-utils", - "bp-xcm-bridge-hub", - "bridge-runtime-common", - "cumulus-pallet-parachain-system", - "cumulus-pallet-xcmp-queue", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-balances", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-timestamp", - "pallet-utility", - "pallet-xcm", - "pallet-xcm-bridge-hub", - "parachains-common", - "parachains-runtimes-test-utils", - "parity-scale-codec", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-keyring", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", -] - -[[package]] -name = "bridge-runtime-common" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c639aa22de6e904156a3e8b0e6b9e6af790cb27a1299688cc07997e1ffe5b648" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-xcm-bridge-hub", - "frame-support", - "frame-system", - "log", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-transaction-payment", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "sp-trie 37.0.0", - "staging-xcm 14.2.0", - "tuplex", ] [[package]] @@ -1671,24 +994,15 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.7", "serde", ] -[[package]] -name = "build-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" -dependencies = [ - "semver 0.6.0", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -1723,12 +1037,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "bytemuck" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" - [[package]] name = "byteorder" version = "1.5.0" @@ -1737,9 +1045,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "camino" @@ -1761,37 +1069,23 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.23", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver", "serde", "serde_json", - "thiserror 2.0.3", + "thiserror", ] [[package]] name = "cargo_toml" -version = "0.20.5" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" +checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965" dependencies = [ "serde", "toml 0.8.19", @@ -1799,9 +1093,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.1" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "jobserver", "libc", @@ -1814,15 +1108,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -1867,14 +1152,13 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", - "zeroize", ] [[package]] name = "clap" -version = "4.5.21" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -1882,9 +1166,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -1894,27 +1178,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] name = "clap_lex" -version = "0.7.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cliclack" -version = "0.3.5" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" +checksum = "0c827ccada848b64fba073b64518a7416d605ad70c594b5450b5ed1d97e3b5d4" dependencies = [ "console", "indicatif", @@ -1931,14 +1215,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -1984,49 +1268,16 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width 0.1.14", + "unicode-width", "windows-sys 0.52.0", ] -[[package]] -name = "const-hex" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487981fa1af147182687064d0a2c336586d337a606595ced9ffb0c685c250c73" -dependencies = [ - "cfg-if", - "cpufeatures", - "hex", - "proptest", - "serde", -] - [[package]] name = "const-oid" version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "const-random" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" -dependencies = [ - "const-random-macro", -] - -[[package]] -name = "const-random-macro" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" -dependencies = [ - "getrandom", - "once_cell", - "tiny-keccak", -] - [[package]] name = "const_env" version = "0.1.2" @@ -2073,7 +1324,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata 0.19.1", + "cargo_metadata", "clap", "colored", "contract-metadata", @@ -2081,11 +1332,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde 0.5.0", + "impl-serde", "parity-scale-codec", "regex", - "rustc_version 0.4.1", - "semver 1.0.23", + "rustc_version", + "semver", "serde", "serde_json", "strum 0.26.3", @@ -2100,7 +1351,7 @@ dependencies = [ "walkdir", "wasm-encoder", "wasm-opt", - "wasmparser 0.220.0", + "wasmparser 0.207.0", "which", "zip", ] @@ -2121,17 +1372,17 @@ dependencies = [ "hex", "ink_env", "ink_metadata", - "itertools 0.13.0", + "itertools 0.12.1", "pallet-contracts-uapi-next", "parity-scale-codec", "rust_decimal", "scale-info", "serde", "serde_json", - "sp-core 32.0.0", - "sp-runtime 35.0.0", - "sp-weights 31.0.0", - "subxt 0.38.0", + "sp-core", + "sp-runtime", + "sp-weights", + "subxt", "tokio", "tracing", "url", @@ -2143,8 +1394,8 @@ version = "5.0.0-alpha" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" dependencies = [ "anyhow", - "impl-serde 0.5.0", - "semver 1.0.23", + "impl-serde", + "semver", "serde", "serde_json", "url", @@ -2161,19 +1412,19 @@ dependencies = [ "contract-metadata", "escape8259", "hex", - "indexmap 2.6.0", + "indexmap 2.5.0", "ink_env", "ink_metadata", - "itertools 0.13.0", + "itertools 0.12.1", "nom", "nom-supreme", "parity-scale-codec", - "primitive-types 0.13.1", + "primitive-types", "scale-info", "serde", "serde_json", "strsim 0.11.1", - "thiserror 2.0.3", + "thiserror", "tracing", ] @@ -2219,165 +1470,57 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] [[package]] -name = "cranelift-bforest" +name = "cranelift-entity" version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" +checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" dependencies = [ - "cranelift-entity", + "serde", ] [[package]] -name = "cranelift-codegen" -version = "0.95.1" +name = "crc32fast" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "bumpalo", - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "cranelift-isle", - "gimli 0.27.3", - "hashbrown 0.13.2", - "log", - "regalloc2 0.6.1", - "smallvec", - "target-lexicon", + "cfg-if", ] [[package]] -name = "cranelift-codegen-meta" -version = "0.95.1" +name = "crossbeam-queue" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cranelift-codegen-shared", + "crossbeam-utils", ] [[package]] -name = "cranelift-codegen-shared" -version = "0.95.1" +name = "crossbeam-utils" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] -name = "cranelift-entity" -version = "0.95.1" +name = "crossterm" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" -dependencies = [ - "serde", -] - -[[package]] -name = "cranelift-frontend" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-isle" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" - -[[package]] -name = "cranelift-native" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" -dependencies = [ - "cranelift-codegen", - "libc", - "target-lexicon", -] - -[[package]] -name = "cranelift-wasm" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "itertools 0.10.5", - "log", - "smallvec", - "wasmparser 0.102.0", - "wasmtime-types", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crossterm" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "mio", + "libc", + "mio 0.8.11", "parking_lot", - "rustix 0.38.41", "signal-hook", "signal-hook-mio", "winapi", @@ -2431,320 +1574,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "crypto_secretbox" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" -dependencies = [ - "aead", - "cipher", - "generic-array", - "poly1305", - "salsa20", - "subtle", - "zeroize", -] - -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - -[[package]] -name = "cumulus-pallet-aura-ext" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cbe2735fc7cf2b6521eab00cb1a1ab025abc1575cc36887b36dc8c5cb1c9434" -dependencies = [ - "cumulus-pallet-parachain-system", - "frame-support", - "frame-system", - "pallet-aura", - "pallet-timestamp", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 38.0.0", - "sp-consensus-aura", - "sp-runtime 39.0.2", -] - -[[package]] -name = "cumulus-pallet-dmp-queue" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97263a8e758d201ebe81db7cea7b278b4fb869c11442f77acef70138ac1a252f" -dependencies = [ - "cumulus-primitives-core", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", -] - -[[package]] -name = "cumulus-pallet-parachain-system" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "546403ee1185f4051a74cc9c9d76e82c63cac3fb68e1bf29f61efb5604c96488" -dependencies = [ - "bytes", - "cumulus-pallet-parachain-system-proc-macro", - "cumulus-primitives-core", - "cumulus-primitives-parachain-inherent", - "cumulus-primitives-proof-size-hostfunction", - "environmental", - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-message-queue", - "parity-scale-codec", - "polkadot-parachain-primitives", - "polkadot-runtime-common", - "polkadot-runtime-parachains", - "scale-info", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "sp-inherents", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-state-machine 0.43.0", - "sp-std", - "sp-trie 37.0.0", - "sp-version", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "trie-db 0.29.1", -] - -[[package]] -name = "cumulus-pallet-parachain-system-proc-macro" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "befbaf3a1ce23ac8476481484fef5f4d500cbd15b4dad6380ce1d28134b0c1f7" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "cumulus-pallet-session-benchmarking" -version = "19.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18168570689417abfb514ac8812fca7e6429764d01942750e395d7d8ce0716ef" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "pallet-session", - "parity-scale-codec", - "sp-runtime 39.0.2", -] - -[[package]] -name = "cumulus-pallet-solo-to-para" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42c74548c8cab75da6f2479a953f044b582cfce98479862344a24df7bbd215" -dependencies = [ - "cumulus-pallet-parachain-system", - "frame-support", - "frame-system", - "pallet-sudo", - "parity-scale-codec", - "polkadot-primitives 16.0.0", - "scale-info", - "sp-runtime 39.0.2", -] - -[[package]] -name = "cumulus-pallet-xcm" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e49231f6cd8274438b078305dc8ce44c54c0d3f4a28e902589bcbaa53d954608" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", -] - -[[package]] -name = "cumulus-pallet-xcmp-queue" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f788bdac9474795ea13ba791b55798fb664b2e3da8c3a7385b480c9af4e6539" -dependencies = [ - "bounded-collections", - "bp-xcm-bridge-hub-router", - "cumulus-primitives-core", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-message-queue", - "parity-scale-codec", - "polkadot-runtime-common", - "polkadot-runtime-parachains", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", -] - -[[package]] -name = "cumulus-ping" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47128f797359951723e2d106a80e592d007bb7446c299958cdbafb1489ddbf0" -dependencies = [ - "cumulus-pallet-xcm", - "cumulus-primitives-core", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", -] - -[[package]] -name = "cumulus-primitives-aura" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11e7825bcf3cc6c962a5b9b9f47e02dc381109e521d0bc00cad785c65da18471" -dependencies = [ - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-primitives 15.0.0", - "sp-api", - "sp-consensus-aura", - "sp-runtime 39.0.2", -] - -[[package]] -name = "cumulus-primitives-core" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c6b5221a4a3097f2ebef66c84c1e6d7a0b8ec7e63f2bd5ae04c1e6d3fc7514e" -dependencies = [ - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-parachain-primitives", - "polkadot-primitives 16.0.0", - "scale-info", - "sp-api", - "sp-runtime 39.0.2", - "sp-trie 37.0.0", - "staging-xcm 14.2.0", -] - -[[package]] -name = "cumulus-primitives-parachain-inherent" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "842a694901e04a62d88995418dec35c22f7dba2b34d32d2b8de37d6b92f973ff" -dependencies = [ - "async-trait", - "cumulus-primitives-core", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-inherents", - "sp-trie 37.0.0", -] - -[[package]] -name = "cumulus-primitives-proof-size-hostfunction" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421f03af054aac7c89e87a49e47964886e53a8d7395990eab27b6f201d42524f" -dependencies = [ - "sp-externalities 0.29.0", - "sp-runtime-interface 28.0.0", - "sp-trie 37.0.0", -] - -[[package]] -name = "cumulus-primitives-storage-weight-reclaim" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fc49dfec0ba3438afad73787736cc0dba88d15b5855881f12a4d8b812a72927" -dependencies = [ - "cumulus-primitives-core", - "cumulus-primitives-proof-size-hostfunction", - "docify", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", -] - -[[package]] -name = "cumulus-primitives-timestamp" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33cffb8f010f39ac36b31d38994b8f9d9256d9b5e495d96b4ec59d3e30852d53" -dependencies = [ - "cumulus-primitives-core", - "sp-inherents", - "sp-timestamp", -] - -[[package]] -name = "cumulus-primitives-utility" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bdcf4d46dd93f1e6d5dd6d379133566a44042ba6476d04bdcbdb4981c622ae4" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "log", - "pallet-asset-conversion", - "parity-scale-codec", - "polkadot-runtime-common", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", -] - -[[package]] -name = "cumulus-test-relay-sproof-builder" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e570e41c3f05a8143ebff967bbb0c7dcaaa6f0bebd8639b9418b8005b13eda03" -dependencies = [ - "cumulus-primitives-core", - "parity-scale-codec", - "polkadot-primitives 16.0.0", - "sp-runtime 39.0.2", - "sp-state-machine 0.43.0", - "sp-trie 37.0.0", -] - [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -2769,7 +1598,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version 0.4.1", + "rustc_version", "subtle", "zeroize", ] @@ -2782,52 +1611,51 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] name = "cxx" -version = "1.0.131" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2568d7d2cfc051e43414fe1ef80c712cbcd60c3624d1ad1cb4b2572324d0a5d9" +checksum = "54ccead7d199d584d139148b04b4a368d1ec7556a1d9ea2548febb1b9d49f9a4" dependencies = [ "cc", "cxxbridge-flags", "cxxbridge-macro", - "foldhash", "link-cplusplus", ] [[package]] name = "cxx-build" -version = "1.0.131" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1674a8b80cdcce32512a75975d85d569b160f612ee1d31645bc46771f7c220a1" +checksum = "c77953e99f01508f89f55c494bfa867171ef3a6c8cea03d26975368f2121a5c1" dependencies = [ "cc", "codespan-reporting", + "once_cell", "proc-macro2", "quote", "scratch", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] name = "cxxbridge-flags" -version = "1.0.131" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c710c27f23b7fa00c23aaee9e6fd3e79a6dffc5f5c6217487ec5213f51296b7" +checksum = "65777e06cc48f0cb0152024c77d6cf9e4bdb4408e7b48bea993d42fa0f5b02b6" [[package]] name = "cxxbridge-macro" -version = "1.0.131" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa53ef9fc54b986272efe83e257bbb417d1c3ceab1b732411d8c634fda572be" +checksum = "98532a60dedaebc4848cb2cba5023337cc9ea3af16a5b062633fabfd9f18fb60" dependencies = [ "proc-macro2", "quote", - "rustversion", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -2875,7 +1703,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -2897,7 +1725,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -2965,7 +1793,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -2976,18 +1804,18 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -2999,29 +1827,8 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version 0.4.1", - "syn 2.0.89", -] - -[[package]] -name = "derive_more" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", - "unicode-xid", + "rustc_version", + "syn 2.0.77", ] [[package]] @@ -3063,16 +1870,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs" version = "5.0.1" @@ -3094,17 +1891,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[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", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -3113,7 +1899,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -3124,18 +1910,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.9" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" +checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.9" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" +checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" dependencies = [ "common-path", "derive-syn-parse", @@ -3143,7 +1929,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.89", + "syn 2.0.77", "termcolor", "toml 0.8.19", "walkdir", @@ -3167,12 +1953,6 @@ dependencies = [ "shared_child", ] -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - [[package]] name = "dyn-clonable" version = "0.9.0" @@ -3303,44 +2083,13 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.35" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] -[[package]] -name = "enumflags2" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" -dependencies = [ - "enumflags2_derive", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "enumn" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "env_filter" version = "0.1.2" @@ -3351,19 +2100,6 @@ dependencies = [ "regex", ] -[[package]] -name = "env_logger" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - [[package]] name = "env_logger" version = "0.11.5" @@ -3405,47 +2141,6 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" -[[package]] -name = "ethabi-decode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" -dependencies = [ - "ethereum-types", - "tiny-keccak", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "primitive-types 0.12.2", - "scale-info", - "uint 0.9.5", -] - [[package]] name = "event-listener" version = "4.0.3" @@ -3489,7 +2184,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -3498,28 +2193,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - [[package]] name = "fastrand" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" - -[[package]] -name = "fastrlp" -version = "0.3.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec 0.7.6", - "auto_impl", - "bytes", -] +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "ff" @@ -3547,16 +2225,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "file-per-thread-logger" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" -dependencies = [ - "env_logger 0.10.2", - "log", -] - [[package]] name = "filetime" version = "0.2.25" @@ -3569,22 +2237,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "finality-grandpa" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3" -dependencies = [ - "either", - "futures", - "futures-timer", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot", - "scale-info", -] - [[package]] name = "finito" version = "0.1.0" @@ -3609,9 +2261,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "miniz_oxide", @@ -3632,12 +2284,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - [[package]] name = "foreign-types" version = "0.3.2" @@ -3663,439 +2309,155 @@ dependencies = [ ] [[package]] -name = "frame-benchmarking" -version = "38.0.0" +name = "frame-metadata" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01bdd47c2d541b38bd892da647d1e972c9d85b4ecd7094ad64f7600175da54d" +checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" dependencies = [ - "frame-support", - "frame-support-procedural", - "frame-system", - "linregress", - "log", + "cfg-if", "parity-scale-codec", - "paste", "scale-info", - "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "sp-storage 21.0.0", - "static_assertions", ] [[package]] -name = "frame-benchmarking-pallet-pov" -version = "28.0.0" +name = "frame-metadata" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffde6f573a63eeb1ccb7d2667c5741a11ce93bc30f33712e5326b9d8a811c29" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "cfg-if", "parity-scale-codec", "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "serde", ] [[package]] -name = "frame-decode" -version = "0.5.0" +name = "fs-err" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d3379df61ff3dd871e2dde7d1bcdc0263e613c21c7579b149fd4f0ad9b1dc2" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ - "frame-metadata 17.0.0", - "parity-scale-codec", - "scale-decode 0.14.0", - "scale-info", - "scale-type-resolver 0.2.0", - "sp-crypto-hashing", + "autocfg", ] [[package]] -name = "frame-election-provider-solution-type" -version = "14.0.1" +name = "funty" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8156f209055d352994ecd49e19658c6b469d7c6de923bd79868957d0dcfb6f71" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] -name = "frame-election-provider-support" -version = "38.0.0" +name = "futures" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36f5116192c63d39f1b4556fa30ac7db5a6a52575fa241b045f7dfa82ecc2be" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ - "frame-election-provider-solution-type", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-npos-elections", - "sp-runtime 39.0.2", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "frame-executive" -version = "38.0.0" +name = "futures-channel" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c365bf3879de25bbee28e9584096955a02fbe8d7e7624e10675800317f1cee5b" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ - "aquamarine", - "frame-support", - "frame-system", - "frame-try-runtime", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", + "futures-core", + "futures-sink", ] [[package]] -name = "frame-metadata" -version = "15.1.0" +name = "futures-core" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" -dependencies = [ - "cfg-if", - "parity-scale-codec", - "scale-info", -] +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] -name = "frame-metadata" -version = "16.0.0" +name = "futures-executor" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ - "cfg-if", - "parity-scale-codec", - "scale-info", - "serde", + "futures-core", + "futures-task", + "futures-util", + "num_cpus", ] [[package]] -name = "frame-metadata" -version = "17.0.0" +name = "futures-io" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "701bac17e9b55e0f95067c428ebcb46496587f08e8cf4ccc0fe5903bea10dbb8" -dependencies = [ - "cfg-if", - "parity-scale-codec", - "scale-info", - "serde", -] +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] -name = "frame-metadata-hash-extension" -version = "0.6.0" +name = "futures-lite" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ac71dbd97039c49fdd69f416a4dd5d8da3652fdcafc3738b45772ad79eb4ec" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "array-bytes", - "docify", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", ] [[package]] -name = "frame-support" -version = "38.0.0" +name = "futures-macro" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e44af69fa61bc5005ffe0339e198957e77f0f255704a9bee720da18a733e3dc" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ - "aquamarine", - "array-bytes", - "bitflags 1.3.2", - "docify", - "environmental", - "frame-metadata 16.0.0", - "frame-support-procedural", - "impl-trait-for-tuples", - "k256", - "log", - "macro_magic", - "parity-scale-codec", - "paste", - "scale-info", - "serde", - "serde_json", - "smallvec", - "sp-api", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-crypto-hashing-proc-macro", - "sp-debug-derive", - "sp-genesis-builder", - "sp-inherents", - "sp-io 38.0.0", - "sp-metadata-ir", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", - "sp-state-machine 0.43.0", - "sp-std", - "sp-tracing 17.0.1", - "sp-weights 31.0.0", - "static_assertions", - "tt-call", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "frame-support-procedural" -version = "30.0.4" +name = "futures-sink" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e8f9b6bc1517a6fcbf0b2377e5c8c6d39f5bb7862b191a59a9992081d63972d" -dependencies = [ - "Inflector", - "cfg-expr", - "derive-syn-parse", - "expander", - "frame-support-procedural-tools", - "itertools 0.11.0", - "macro_magic", - "proc-macro-warning", - "proc-macro2", - "quote", - "sp-crypto-hashing", - "syn 2.0.89", -] +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] -name = "frame-support-procedural-tools" -version = "13.0.0" +name = "futures-task" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bead15a320be1764cdd50458c4cfacb23e0cee65f64f500f8e34136a94c7eeca" -dependencies = [ - "frame-support-procedural-tools-derive", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] -name = "frame-support-procedural-tools-derive" -version = "12.0.0" +name = "futures-timer" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed971c6435503a099bdac99fe4c5bea08981709e5b5a0a8535a1856f48561191" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] -name = "frame-system" -version = "38.0.0" +name = "futures-util" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c7fa02f8c305496d2ae52edaecdb9d165f11afa965e05686d7d7dd1ce93611" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ - "cfg-if", - "docify", - "frame-support", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "sp-version", - "sp-weights 31.0.0", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", ] [[package]] -name = "frame-system-benchmarking" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9693b2a736beb076e673520e1e8dee4fc128b8d35b020ef3e8a4b1b5ad63d9f2" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "frame-system-rpc-runtime-api" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475c4f8604ba7e4f05cd2c881ba71105093e638b9591ec71a8db14a64b3b4ec3" -dependencies = [ - "docify", - "parity-scale-codec", - "sp-api", -] - -[[package]] -name = "frame-try-runtime" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c811a5a1f5429c7fb5ebbf6cf9502d8f9b673fd395c12cf46c44a30a7daf0e" -dependencies = [ - "frame-support", - "parity-scale-codec", - "sp-api", - "sp-runtime 39.0.2", -] - -[[package]] -name = "fs-err" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" -dependencies = [ - "autocfg", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "generic-array" -version = "0.14.7" +name = "generic-array" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ @@ -4125,42 +2487,22 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "ghash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" -dependencies = [ - "opaque-debug", - "polyval", -] - [[package]] name = "gimli" version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator 0.2.0", + "fallible-iterator", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" -dependencies = [ - "fallible-iterator 0.3.0", - "stable_deref_trait", -] - -[[package]] -name = "gimli" -version = "0.31.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "git2" @@ -4226,7 +2568,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -4235,9 +2577,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -4245,7 +2587,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.6.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -4296,17 +2638,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - [[package]] name = "heck" version = "0.4.1" @@ -4343,21 +2674,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" -[[package]] -name = "hex-conservative" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" -dependencies = [ - "arrayvec 0.7.6", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hkdf" version = "0.12.4" @@ -4484,7 +2800,7 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" name = "httparse" version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -4509,9 +2825,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -4533,14 +2849,14 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -4559,7 +2875,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -4575,7 +2891,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.30", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -4591,9 +2907,9 @@ checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.13", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -4606,7 +2922,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.31", + "hyper 0.14.30", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -4619,7 +2935,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.31", + "hyper 0.14.30", "native-tls", "tokio", "tokio-native-tls", @@ -4633,7 +2949,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "native-tls", "tokio", @@ -4643,16 +2959,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.4.1", "pin-project-lite", "socket2", "tokio", @@ -4662,14 +2978,14 @@ dependencies = [ ] [[package]] -name = "hyperlocal" -version = "0.9.1" +name = "hyperlocal-next" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" +checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" dependencies = [ "hex", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -4678,9 +2994,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4700,336 +3016,160 @@ dependencies = [ ] [[package]] -name = "icu_collections" -version = "1.5.0" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] -name = "icu_locid" -version = "1.5.0" +name = "idna" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "icu_locid_transform" -version = "1.5.0" +name = "impl-codec" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", + "parity-scale-codec", ] [[package]] -name = "icu_locid_transform_data" -version = "1.5.0" +name = "impl-serde" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] [[package]] -name = "icu_normalizer" -version = "1.5.0" +name = "impl-trait-for-tuples" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "icu_normalizer_data" -version = "1.5.0" +name = "indent_write" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" [[package]] -name = "icu_properties" -version = "1.5.1" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", + "autocfg", + "hashbrown 0.12.3", + "serde", ] [[package]] -name = "icu_properties_data" -version = "1.5.0" +name = "indexmap" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] [[package]] -name = "icu_provider" -version = "1.5.0" +name = "indexmap-nostd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" + +[[package]] +name = "indicatif" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", ] [[package]] -name = "icu_provider_macros" -version = "1.5.0" +name = "ink_allocator" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +checksum = "5cee56055bac6d928d425e944c5f3b69baa33c9635822fd1c00cd4afc70fde3e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-codec" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67aa010c1e3da95bf151bd8b4c059b2ed7e75387cdb969b4f8f2723a43f9941" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-serde" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "include_dir" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "indent_write" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" -dependencies = [ - "equivalent", - "hashbrown 0.15.2", - "serde", -] - -[[package]] -name = "indexmap-nostd" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" - -[[package]] -name = "indicatif" -version = "0.17.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width 0.2.0", - "web-time", -] - -[[package]] -name = "ink_allocator" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f339ca8bde70e85a8a8aaf3b85c47c223505464026c14d4e8674b262e2c8f702" -dependencies = [ - "cfg-if", + "cfg-if", ] [[package]] name = "ink_engine" -version = "5.1.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e99d2fa2172fca9bccc80545de3fd15c1679fb2054b2acfce9addbbb2285f6" +checksum = "4f357e2e867f4e222ffc4015a6e61d1073548de89f70a4e36a8b0385562777fa" dependencies = [ "blake2", - "derive_more 1.0.0", + "derive_more", "ink_primitives", - "pallet-contracts-uapi 9.0.0", + "pallet-contracts-uapi-next", "parity-scale-codec", - "secp256k1 0.28.2", + "secp256k1", "sha2 0.10.8", "sha3", ] [[package]] name = "ink_env" -version = "5.1.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99c28db777ffd7c70f9ca9a3f15481e9b06901fc71cdb76a92d109553103283" +checksum = "42cec50b7e4f8406aab25801b015d3802a52d76cfbe48ce11cfb4200fa88e296" dependencies = [ "blake2", "cfg-if", "const_env", - "derive_more 1.0.0", + "derive_more", "ink_allocator", "ink_engine", "ink_prelude", "ink_primitives", "ink_storage_traits", "num-traits", - "pallet-contracts-uapi 9.0.0", + "pallet-contracts-uapi-next", "parity-scale-codec", "paste", "rlibc", - "scale-decode 0.11.1", - "scale-encode 0.6.0", + "scale-decode 0.10.0", + "scale-encode 0.5.0", "scale-info", "schnorrkel", - "secp256k1 0.28.2", + "secp256k1", "sha2 0.10.8", "sha3", - "staging-xcm 11.0.0", "static_assertions", ] [[package]] name = "ink_metadata" -version = "5.1.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0a9f9ec91e9b3959d65f942a31b974553581f56d5d3e6110103389275fcebd" +checksum = "a98fcc0ff9292ff68c7ee7b84c93533c9ff13859ec3b148faa822e2da9954fe6" dependencies = [ - "derive_more 1.0.0", - "impl-serde 0.4.0", + "derive_more", + "impl-serde", "ink_prelude", "ink_primitives", "linkme", @@ -5041,33 +3181,33 @@ dependencies = [ [[package]] name = "ink_prelude" -version = "5.1.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06e9cea08327df71f1d30f7efd1fc5fd3934a4b66ad03741229f30712f675d1" +checksum = "ea1734d058c80aa72e59c8ae75624fd8a51791efba21469f273156c0f4cad5c9" dependencies = [ "cfg-if", ] [[package]] name = "ink_primitives" -version = "5.1.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76971939c364a0fafd57687e581f96df299400679f421ad3cd9d05d14816dc10" +checksum = "11ec35ef7f45e67a53b6142d7e7f18e6d9292d76c3a2a1da14cf8423e481813d" dependencies = [ - "derive_more 1.0.0", + "derive_more", "ink_prelude", "parity-scale-codec", - "scale-decode 0.11.1", - "scale-encode 0.6.0", + "scale-decode 0.10.0", + "scale-encode 0.5.0", "scale-info", "xxhash-rust", ] [[package]] name = "ink_storage_traits" -version = "5.1.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa55ef65b50240824ea08abe3130d7971e633393239df83dfdd4a2a4731aaff" +checksum = "83ce49e3d2935fc1ec3e73117119712b187d3123339f6a31624e92f75fa2293d" dependencies = [ "ink_metadata", "ink_prelude", @@ -5116,20 +3256,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" - -[[package]] -name = "is-terminal" -version = "0.4.13" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi 0.4.0", - "libc", - "windows-sys 0.52.0", -] +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is_terminal_polyfill" @@ -5146,15 +3275,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -5164,20 +3284,11 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni" @@ -5189,7 +3300,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror 1.0.69", + "thiserror", "walkdir", ] @@ -5216,9 +3327,9 @@ checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -5231,7 +3342,7 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5244,7 +3355,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5267,19 +3378,7 @@ checksum = "62b089779ad7f80768693755a031cc14a7766aba707cbe886674e3f79e9b7e47" dependencies = [ "jsonrpsee-core 0.23.2", "jsonrpsee-types 0.23.2", - "jsonrpsee-ws-client 0.23.2", -] - -[[package]] -name = "jsonrpsee" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5c71d8c1a731cc4227c2f698d377e7848ca12c8a48866fc5e6951c43a4db843" -dependencies = [ - "jsonrpsee-client-transport 0.24.7", - "jsonrpsee-core 0.24.7", - "jsonrpsee-types 0.24.7", - "jsonrpsee-ws-client 0.24.7", + "jsonrpsee-ws-client", ] [[package]] @@ -5295,7 +3394,7 @@ dependencies = [ "rustls-native-certs 0.7.3", "rustls-pki-types", "soketto 0.7.1", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-rustls 0.25.0", "tokio-util", @@ -5314,34 +3413,11 @@ dependencies = [ "http 1.1.0", "jsonrpsee-core 0.23.2", "pin-project", - "rustls 0.23.19", - "rustls-pki-types", - "rustls-platform-verifier", - "soketto 0.8.0", - "thiserror 1.0.69", - "tokio", - "tokio-rustls 0.26.0", - "tokio-util", - "tracing", - "url", -] - -[[package]] -name = "jsonrpsee-client-transport" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548125b159ba1314104f5bb5f38519e03a41862786aa3925cf349aae9cdd546e" -dependencies = [ - "base64 0.22.1", - "futures-util", - "http 1.1.0", - "jsonrpsee-core 0.24.7", - "pin-project", - "rustls 0.23.19", + "rustls 0.23.13", "rustls-pki-types", "rustls-platform-verifier", "soketto 0.8.0", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-rustls 0.26.0", "tokio-util", @@ -5360,13 +3436,13 @@ dependencies = [ "beef", "futures-timer", "futures-util", - "hyper 0.14.31", + "hyper 0.14.30", "jsonrpsee-types 0.22.5", "pin-project", - "rustc-hash 1.1.0", + "rustc-hash", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-stream", "tracing", @@ -5385,30 +3461,10 @@ dependencies = [ "futures-util", "jsonrpsee-types 0.23.2", "pin-project", - "rustc-hash 1.1.0", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tokio-stream", - "tracing", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2882f6f8acb9fdaec7cefc4fd607119a9bd709831df7d7672a1d3b644628280" -dependencies = [ - "async-trait", - "futures-timer", - "futures-util", - "jsonrpsee-types 0.24.7", - "pin-project", - "rustc-hash 2.0.0", + "rustc-hash", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-stream", "tracing", @@ -5421,13 +3477,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ccf93fc4a0bfe05d851d37d7c32b7f370fe94336b52a2f0efc5f1981895c2e5" dependencies = [ "async-trait", - "hyper 0.14.31", + "hyper 0.14.30", "hyper-rustls 0.24.2", "jsonrpsee-core 0.22.5", "jsonrpsee-types 0.22.5", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", "tokio", "tower 0.4.13", "tracing", @@ -5444,7 +3500,7 @@ dependencies = [ "beef", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5457,19 +3513,7 @@ dependencies = [ "http 1.1.0", "serde", "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1" -dependencies = [ - "http 1.1.0", - "serde", - "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5485,24 +3529,11 @@ dependencies = [ "url", ] -[[package]] -name = "jsonrpsee-ws-client" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" -dependencies = [ - "http 1.1.0", - "jsonrpsee-client-transport 0.24.7", - "jsonrpsee-core 0.24.7", - "jsonrpsee-types 0.24.7", - "url", -] - [[package]] name = "k256" -version = "0.13.4" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", @@ -5535,16 +3566,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "keccak-hash" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" -dependencies = [ - "primitive-types 0.13.1", - "tiny-keccak", -] - [[package]] name = "kube" version = "0.87.2" @@ -5571,7 +3592,7 @@ dependencies = [ "home", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.30", "hyper-rustls 0.24.2", "hyper-timeout", "jsonpath-rust", @@ -5582,11 +3603,11 @@ dependencies = [ "rand", "rustls 0.21.12", "rustls-pemfile 1.0.4", - "secrecy 0.8.0", + "secrecy", "serde", "serde_json", "serde_yaml", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-tungstenite", "tokio-util", @@ -5609,7 +3630,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5632,7 +3653,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-util", "tracing", @@ -5652,9 +3673,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.166" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libgit2-sys" @@ -5672,9 +3693,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.11" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libp2p" @@ -5696,7 +3717,7 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5746,16 +3767,16 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror 1.0.69", - "unsigned-varint 0.7.2", + "thiserror", + "unsigned-varint", "void", ] [[package]] name = "libp2p-identity" -version = "0.2.10" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" +checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" dependencies = [ "bs58", "ed25519-dalek", @@ -5764,7 +3785,7 @@ dependencies = [ "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror 1.0.69", + "thiserror", "tracing", "zeroize", ] @@ -5886,31 +3907,22 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.31" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566336154b9e58a4f055f6dd4cbab62c7dc0826ce3c0a04e63b2d2ecd784cdae" +checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.31" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9" +checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", -] - -[[package]] -name = "linregress" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9eda9dcf4f2a99787827661f312ac3219292549c2ee992bf9a6248ffb066bf7" -dependencies = [ - "nalgebra", + "syn 2.0.77", ] [[package]] @@ -5925,12 +3937,6 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - [[package]] name = "lock_api" version = "0.4.12" @@ -5949,20 +3955,11 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lru" -version = "0.12.5" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.14.5", ] [[package]] @@ -5975,60 +3972,12 @@ dependencies = [ ] [[package]] -name = "macro_magic" -version = "0.5.1" +name = "matchers" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" dependencies = [ - "macro_magic_core", - "macro_magic_macros", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "macro_magic_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" -dependencies = [ - "const-random", - "derive-syn-parse", - "macro_magic_core_macros", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "macro_magic_core_macros" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "macro_magic_macros" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" -dependencies = [ - "macro_magic_core", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "matchers" -version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" -dependencies = [ - "regex-automata 0.1.10", + "regex-automata 0.1.10", ] [[package]] @@ -6049,7 +3998,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.41", + "rustix 0.38.36", ] [[package]] @@ -6113,6 +4062,18 @@ dependencies = [ "adler2", ] +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + [[package]] name = "mio" version = "1.0.2" @@ -6121,16 +4082,15 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi 0.3.9", "libc", - "log", "wasi", "windows-sys 0.52.0", ] [[package]] name = "mockito" -version = "1.6.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" +checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" dependencies = [ "assert-json-diff", "bytes", @@ -6139,7 +4099,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "log", "rand", @@ -6150,17 +4110,11 @@ dependencies = [ "tokio", ] -[[package]] -name = "multi-stash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" - [[package]] name = "multiaddr" -version = "0.18.2" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" dependencies = [ "arrayref", "byteorder", @@ -6171,7 +4125,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint 0.8.0", + "unsigned-varint", "url", ] @@ -6188,12 +4142,12 @@ dependencies = [ [[package]] name = "multihash" -version = "0.19.2" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc41f430805af9d1cf4adae4ed2149c759b877b01d909a1f40256188d09345d2" +checksum = "076d548d76a0e2a0d4ab471d0b1c36c577786dfc4471242035d97a12a735c492" dependencies = [ "core2", - "unsigned-varint 0.8.0", + "unsigned-varint", ] [[package]] @@ -6207,22 +4161,7 @@ dependencies = [ "log", "pin-project", "smallvec", - "unsigned-varint 0.7.2", -] - -[[package]] -name = "nalgebra" -version = "0.33.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" -dependencies = [ - "approx", - "matrixmultiply", - "num-complex", - "num-rational", - "num-traits", - "simba", - "typenum", + "unsigned-varint", ] [[package]] @@ -6300,16 +4239,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -6320,32 +4249,12 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "num-format" version = "0.4.4" @@ -6383,7 +4292,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -6416,27 +4324,18 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "object" -version = "0.36.5" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -6446,9 +4345,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -6467,7 +4366,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -6478,18 +4377,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.4.1+3.4.0" +version = "300.3.2+3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -6534,5669 +4433,2019 @@ dependencies = [ ] [[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "pallet-alliance" -version = "37.0.0" +name = "pallet-contracts-uapi-next" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59378a648a0aa279a4b10650366c3389cd0a1239b1876f74bfecd268eecb086b" +checksum = "fd549c16296ea5b2eb7c65c56aba548b286c1be4d7675b424ff6ccb8319c97a9" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-collective", - "pallet-identity", + "bitflags 1.3.2", "parity-scale-codec", + "paste", + "polkavm-derive 0.5.0", "scale-info", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-io 38.0.0", - "sp-runtime 39.0.2", ] [[package]] -name = "pallet-asset-conversion" -version = "20.0.0" +name = "parity-bip39" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33f0078659ae95efe6a1bf138ab5250bc41ab98f22ff3651d0208684f08ae797" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "bitcoin_hashes 0.13.0", + "rand", + "rand_core 0.5.1", + "serde", + "unicode-normalization", ] [[package]] -name = "pallet-asset-conversion-ops" -version = "0.6.0" +name = "parity-scale-codec" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edbeda834bcd6660f311d4eead3dabdf6d385b7308ac75b0fae941a960e6c3a" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-asset-conversion", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "arrayvec 0.7.6", + "bitvec", + "byte-slice-cast", + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", ] [[package]] -name = "pallet-asset-conversion-tx-payment" -version = "20.0.0" +name = "parity-scale-codec-derive" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab66c4c22ac0f20e620a954ce7ba050118d6d8011e2d02df599309502064e98" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ - "frame-support", - "frame-system", - "pallet-asset-conversion", - "pallet-transaction-payment", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "pallet-asset-rate" -version = "17.0.0" +name = "parking" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71b2149aa741bc39466bbcc92d9d0ab6e9adcf39d2790443a735ad573b3191e7" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", -] +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] -name = "pallet-asset-tx-payment" -version = "38.0.0" +name = "parking_lot" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406a486466d15acc48c99420191f96f1af018f3381fde829c467aba489030f18" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "pallet-transaction-payment", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "lock_api", + "parking_lot_core", ] [[package]] -name = "pallet-assets" -version = "40.0.0" +name = "parking_lot_core" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f45f4eb6027fc34c4650e0ed6a7e57ed3335cc364be74b4531f714237676bcee" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", ] [[package]] -name = "pallet-assets-freezer" +name = "password-hash" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "127adc2250b89416b940850ce2175dab10a9297b503b1fcb05dc555bd9bd3207" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-assets", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "base64ct", + "rand_core 0.6.4", + "subtle", ] [[package]] -name = "pallet-atomic-swap" -version = "38.0.0" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15906a685adeabe6027e49c814a34066222dd6136187a8a79c213d0d739b6634" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", -] +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "pallet-aura" -version = "37.0.0" +name = "pbkdf2" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b31da6e794d655d1f9c4da6557a57399538d75905a7862a2ed3f7e5fb711d7e4" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "frame-support", - "frame-system", - "log", - "pallet-timestamp", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 38.0.0", - "sp-consensus-aura", - "sp-runtime 39.0.2", + "digest 0.10.7", + "password-hash", ] [[package]] -name = "pallet-authority-discovery" -version = "38.0.0" +name = "pem" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb0208f0538d58dcb78ce1ff5e6e8641c5f37b23b20b05587e51da30ab13541" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "frame-support", - "frame-system", - "pallet-session", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 38.0.0", - "sp-authority-discovery", - "sp-runtime 39.0.2", + "base64 0.22.1", + "serde", ] [[package]] -name = "pallet-authorship" -version = "38.0.0" +name = "percent-encoding" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625d47577cabbe1318ccec5d612e2379002d1b6af1ab6edcef3243c66ec246df" -dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", -] +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] -name = "pallet-babe" -version = "38.0.0" +name = "pest" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee096c0def13832475b340d00121025e0225de29604d44bc6dfcaa294c995b4" +checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-authorship", - "pallet-session", - "pallet-timestamp", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 38.0.0", - "sp-consensus-babe", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-session", - "sp-staking 36.0.0", + "memchr", + "thiserror", + "ucd-trie", ] [[package]] -name = "pallet-bags-list" -version = "37.0.0" +name = "pest_derive" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fd23a6f94ba9c1e57c8a7f8a41327d132903a79c55c0c83f36cbae19946cf10" +checksum = "664d22978e2815783adbdd2c588b455b1bd625299ce36b2a99881ac9627e6d8d" dependencies = [ - "aquamarine", - "docify", - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "log", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", + "pest", + "pest_generator", ] [[package]] -name = "pallet-balances" -version = "39.0.0" +name = "pest_generator" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6945b078919acb14d126490e4b0973a688568b30142476ca69c6df2bed27ad" +checksum = "a2d5487022d5d33f4c30d91c22afa240ce2a644e87fe08caad974d4eab6badbe" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "pallet-beefy" -version = "39.0.0" +name = "pest_meta" +version = "2.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "014d177a3aba19ac144fc6b2b5eb94930b9874734b91fd014902b6706288bb5f" +checksum = "0091754bbd0ea592c4deb3a122ce8ecbb0753b738aa82bc055fcc2eccc8d8174" dependencies = [ - "frame-support", - "frame-system", - "log", - "pallet-authorship", - "pallet-session", - "parity-scale-codec", - "scale-info", - "serde", - "sp-consensus-beefy", - "sp-runtime 39.0.2", - "sp-session", - "sp-staking 36.0.0", + "once_cell", + "pest", + "sha2 0.10.8", ] [[package]] -name = "pallet-beefy-mmr" -version = "39.0.0" +name = "pin-project" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c64f536e7f04cf3a0a17fdf20870ddb3d63a7690419c40f75cfd2f72b6e6d22" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ - "array-bytes", - "binary-merkle-tree", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-beefy", - "pallet-mmr", - "pallet-session", - "parity-scale-codec", - "scale-info", - "serde", - "sp-api", - "sp-consensus-beefy", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-state-machine 0.43.0", + "pin-project-internal", ] [[package]] -name = "pallet-bounties" -version = "37.0.0" +name = "pin-project-internal" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1163f9cd8bbc47ec0c6900a3ca67689d8d7b40bedfa6aa22b1b3c6027b1090e" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-treasury", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "pallet-bridge-grandpa" -version = "0.18.0" +name = "pin-project-lite" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d825fbed9fb68bc5d344311653dc0f69caeabe647365abf79a539310b2245f6" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "bp-test-utils", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-consensus-grandpa", - "sp-runtime 39.0.2", - "sp-std", -] +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] -name = "pallet-bridge-messages" -version = "0.18.0" +name = "pin-utils" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1decdc9fb885e46eb17f850aa14f8cf39e17f31574aa6a5fa1a9e603cc526a2" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-runtime", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-std", - "sp-trie 37.0.0", -] +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "pallet-bridge-parachains" -version = "0.18.0" +name = "piper" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41450a8d214f20eaff57aeca8e647b20c0df7d66871ee2262609b90824bd4cca" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ - "bp-header-chain", - "bp-parachains", - "bp-polkadot-core", - "bp-runtime", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-bridge-grandpa", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-std", + "atomic-waker", + "fastrand", + "futures-io", ] [[package]] -name = "pallet-bridge-relayers" -version = "0.18.0" +name = "pkcs8" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2faead05455a965a0a0ec69ffa779933479b599e40bda809c0aa1efa72a39281" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-relayers", - "bp-runtime", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-transaction-payment", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-runtime 39.0.2", - "sp-std", + "der", + "spki", ] [[package]] -name = "pallet-broker" -version = "0.17.0" +name = "pkg-config" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3043c90106d88cb93fcf0d9b6d19418f11f44cc2b11873414aec3b46044a24ea" -dependencies = [ - "bitvec", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-runtime 39.0.2", -] +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] -name = "pallet-child-bounties" -version = "37.0.0" +name = "polkavm-common" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f3bc38ae6584b5f57e4de3e49e5184bfc0f20692829530ae1465ffe04e09e7" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-bounties", - "pallet-treasury", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", -] +checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" [[package]] -name = "pallet-collator-selection" -version = "19.0.0" +name = "polkavm-common" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658798d70c9054165169f6a6a96cfa9d6a5e7d24a524bc19825bf17fcbc5cc5a" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-authorship", - "pallet-balances", - "pallet-session", - "parity-scale-codec", - "rand", - "scale-info", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", -] +checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" [[package]] -name = "pallet-collective" -version = "38.0.0" +name = "polkavm-common" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e149f1aefd444c9a1da6ec5a94bc8a7671d7a33078f85dd19ae5b06e3438e60" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", -] +checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" [[package]] -name = "pallet-collective-content" -version = "0.16.0" +name = "polkavm-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a6a5cbe781d9c711be74855ba32ef138f3779d6c54240c08e6d1b4bbba4d1d" +checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "polkavm-derive-impl 0.5.0", + "syn 2.0.77", ] [[package]] -name = "pallet-contracts" -version = "38.0.0" +name = "polkavm-derive" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5df77077745d891c822b4275f273f336077a97e69e62a30134776aa721c96fee" +checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" dependencies = [ - "bitflags 1.3.2", - "environmental", - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-balances", - "pallet-contracts-proc-macro", - "pallet-contracts-uapi 12.0.0", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "smallvec", - "sp-api", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "wasm-instrument", - "wasmi 0.32.3", + "polkavm-derive-impl-macro 0.8.0", ] [[package]] -name = "pallet-contracts-mock-network" -version = "14.0.0" +name = "polkavm-derive" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "309666537ed001c61a99f59fa7b98680f4a6e4e361ed3bc64f7b0237da3e3e06" -dependencies = [ - "frame-support", - "frame-system", - "pallet-assets", - "pallet-balances", - "pallet-contracts", - "pallet-contracts-proc-macro", - "pallet-contracts-uapi 12.0.0", - "pallet-insecure-randomness-collective-flip", - "pallet-message-queue", - "pallet-proxy", - "pallet-timestamp", - "pallet-utility", - "pallet-xcm", - "parity-scale-codec", - "polkadot-parachain-primitives", - "polkadot-primitives 16.0.0", - "polkadot-runtime-parachains", - "scale-info", - "sp-api", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-keystore 0.40.0", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "xcm-simulator", +checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +dependencies = [ + "polkavm-derive-impl-macro 0.9.0", ] [[package]] -name = "pallet-contracts-proc-macro" -version = "23.0.1" +name = "polkavm-derive-impl" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94226cbd48516b7c310eb5dae8d50798c1ce73a7421dc0977c55b7fc2237a283" +checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d" dependencies = [ + "polkavm-common 0.5.0", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] -name = "pallet-contracts-uapi" -version = "9.0.0" +name = "polkavm-derive-impl" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d7a51646d9ff1d91abd0186d2c074f0dfd3b1a2d55f08a229a2f2e4bc6d1e49" +checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" dependencies = [ - "bitflags 1.3.2", - "paste", - "polkavm-derive 0.9.1", + "polkavm-common 0.8.0", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "pallet-contracts-uapi" -version = "12.0.0" +name = "polkavm-derive-impl" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f74b000590c33fadea48585d3ae3f4b7867e99f0a524c444d5779f36b9a1b6" +checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" dependencies = [ - "bitflags 1.3.2", - "parity-scale-codec", - "paste", - "polkavm-derive 0.9.1", - "scale-info", + "polkavm-common 0.9.0", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "pallet-contracts-uapi-next" -version = "6.0.3" +name = "polkavm-derive-impl-macro" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd549c16296ea5b2eb7c65c56aba548b286c1be4d7675b424ff6ccb8319c97a9" +checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" dependencies = [ - "bitflags 1.3.2", - "parity-scale-codec", - "paste", - "polkavm-derive 0.5.0", - "scale-info", + "polkavm-derive-impl 0.8.0", + "syn 2.0.77", ] [[package]] -name = "pallet-conviction-voting" -version = "38.0.0" +name = "polkavm-derive-impl-macro" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "999c242491b74395b8c5409ef644e782fe426d87ae36ad92240ffbf21ff0a76e" +checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" dependencies = [ - "assert_matches", - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "serde", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "polkavm-derive-impl 0.9.0", + "syn 2.0.77", ] [[package]] -name = "pallet-core-fellowship" -version = "22.0.0" +name = "polling" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d063b41df454bd128d6fefd5800af8a71ac383c9dd6f20096832537efc110a8a" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-ranked-collective", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix 0.38.36", + "tracing", + "windows-sys 0.59.0", ] [[package]] -name = "pallet-delegated-staking" -version = "5.0.0" +name = "poly1305" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117f003a97f980514c6db25a50c22aaec2a9ccb5664b3cb32f52fb990e0b0c12" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "cpufeatures", + "opaque-debug", + "universal-hash", ] [[package]] -name = "pallet-democracy" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d1dc655f50b7c65bb2fb14086608ba11af02ef2936546f7a67db980ec1f133" +name = "pop-cli" +version = "0.5.0" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", + "anyhow", + "assert_cmd", + "axum", + "clap", + "cliclack", + "console", + "dirs", + "duct", + "env_logger", + "git2", + "os_info", + "pop-common", + "pop-contracts", + "pop-parachains", + "pop-telemetry", + "predicates", + "reqwest 0.12.7", "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "serde_json", + "sp-core", + "sp-weights", + "strum 0.26.3", + "strum_macros 0.26.4", + "subxt", + "subxt-signer", + "tempfile", + "tokio", + "tower-http 0.6.2", + "url", ] [[package]] -name = "pallet-dev-mode" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d8050c09c5e003d502c1addc7fdfbde21a854bd57787e94447078032710c8" +name = "pop-common" +version = "0.5.0" dependencies = [ - "frame-support", - "frame-system", - "log", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "anyhow", + "cargo_toml", + "duct", + "flate2", + "git2", + "git2_credentials", + "mockito", + "regex", + "reqwest 0.12.7", + "serde", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "tar", + "tempfile", + "thiserror", + "tokio", + "toml_edit 0.22.20", + "url", ] [[package]] -name = "pallet-election-provider-multi-phase" -version = "37.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f9ad5ae0c13ba3727183dadf1825b6b7b0b0598ed5c366f8697e13fd540f7d" +name = "pop-contracts" +version = "0.5.0" dependencies = [ - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "log", - "pallet-election-provider-support-benchmarking", - "parity-scale-codec", - "rand", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-npos-elections", - "sp-runtime 39.0.2", + "anyhow", + "contract-build", + "contract-extrinsics", + "dirs", + "duct", + "flate2", + "heck 0.5.0", + "ink_env", + "mockito", + "pop-common", + "reqwest 0.12.7", + "sp-core", + "sp-weights", "strum 0.26.3", + "strum_macros 0.26.4", + "subxt", + "subxt-signer", + "tar", + "tempfile", + "thiserror", + "tokio", + "tokio-test", + "url", ] [[package]] -name = "pallet-election-provider-support-benchmarking" -version = "37.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4111d0d27545c260c9dd0d6fc504961db59c1ec4b42e1bcdc28ebd478895c22" +name = "pop-parachains" +version = "0.5.0" dependencies = [ - "frame-benchmarking", - "frame-election-provider-support", - "frame-system", - "parity-scale-codec", - "sp-npos-elections", - "sp-runtime 39.0.2", + "anyhow", + "askama", + "clap", + "duct", + "flate2", + "glob", + "indexmap 2.5.0", + "mockito", + "pop-common", + "reqwest 0.12.7", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "symlink", + "tar", + "tempfile", + "thiserror", + "tokio", + "tokio-test", + "toml_edit 0.22.20", + "url", + "walkdir", + "zombienet-sdk", ] [[package]] -name = "pallet-elections-phragmen" -version = "39.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "705c66d6c231340c6d085a0df0319a6ce42a150f248171e88e389ab1e3ce20f5" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", +name = "pop-telemetry" +version = "0.5.0" +dependencies = [ + "dirs", + "env_logger", "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-npos-elections", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "mockito", + "reqwest 0.12.7", + "serde", + "serde_json", + "tempfile", + "thiserror", + "tokio", ] [[package]] -name = "pallet-fast-unstake" -version = "37.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ee60e8ef10b3936f2700bd61fa45dcc190c61124becc63bed787addcfa0d20" +name = "pop-wallet-integration" +version = "0.5.0" dependencies = [ - "docify", - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "axum", + "serde", + "serde_json", + "tokio", + "tower-http 0.6.2", ] [[package]] -name = "pallet-glutton" -version = "24.0.0" +name = "portable-atomic" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1c79ab340890f6ab088a638c350ac1173a1b2a79c18004787523032025582b4" -dependencies = [ - "blake2", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-inherents", - "sp-io 38.0.0", - "sp-runtime 39.0.2", -] +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] -name = "pallet-grandpa" -version = "38.0.0" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3a570a4aac3173ea46b600408183ca2bcfdaadc077f802f11e6055963e2449" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-authorship", - "pallet-session", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 38.0.0", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-session", - "sp-staking 36.0.0", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "pallet-identity" -version = "38.0.0" +name = "ppv-lite86" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a4288548de9a755e39fcb82ffb9024b6bb1ba0f582464a44423038dd7a892e" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "enumflags2", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "zerocopy", ] [[package]] -name = "pallet-im-online" -version = "37.0.0" +name = "predicates" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fd95270cf029d16cb40fe6bd9f8ab9c78cd966666dccbca4d8bfec35c5bba5" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-authorship", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "anstyle", + "difflib", + "float-cmp", + "normalize-line-endings", + "predicates-core", + "regex", ] [[package]] -name = "pallet-indices" -version = "38.0.0" +name = "predicates-core" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e4b97de630427a39d50c01c9e81ab8f029a00e56321823958b39b438f7b940" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-keyring", - "sp-runtime 39.0.2", -] +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] -name = "pallet-insecure-randomness-collective-flip" -version = "26.0.0" +name = "predicates-tree" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce7ad80675d78bd38a7a66ecbbf2d218dd32955e97f8e301d0afe6c87b0f251" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "safe-mix", - "scale-info", - "sp-runtime 39.0.2", + "predicates-core", + "termtree", ] [[package]] -name = "pallet-lottery" -version = "38.0.0" +name = "prettyplease" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae0920ee53cf7b0665cfb6d275759ae0537dc3850ec78da5f118d814c99d3562" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "proc-macro2", + "syn 2.0.77", ] [[package]] -name = "pallet-membership" -version = "38.0.0" +name = "primitive-types" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868b5dca4bbfd1f4a222cbb80735a5197020712a71577b496bbb7e19aaa5394" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", + "fixed-hash", + "impl-codec", + "impl-serde", "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "uint", ] [[package]] -name = "pallet-message-queue" -version = "41.0.2" +name = "proc-macro-crate" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983f7d1be18e9a089a3e23670918f5085705b4403acd3fdde31878d57b76a1a8" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "environmental", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "once_cell", + "toml_edit 0.19.15", ] [[package]] -name = "pallet-migrations" -version = "8.0.0" +name = "proc-macro-crate" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b417fc975636bce94e7c6d707e42d0706d67dfa513e72f5946918e1044beef1" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "toml_edit 0.22.20", ] [[package]] -name = "pallet-mixnet" -version = "0.14.0" +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3fa2b7f759a47f698a403ab40c54bc8935e2969387947224cbdb4e2bc8a28a" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-io 38.0.0", - "sp-mixnet", - "sp-runtime 39.0.2", + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", ] [[package]] -name = "pallet-mmr" -version = "38.0.0" +name = "proc-macro-error-attr" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6932dfb85f77a57c2d1fdc28a7b3a59ffe23efd8d5bb02dc3039d91347e4a3b" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-mmr-primitives", - "sp-runtime 39.0.2", + "proc-macro2", + "quote", + "version_check", ] [[package]] -name = "pallet-multisig" -version = "38.0.0" +name = "proc-macro2" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e5099c9a4442efcc1568d88ca1d22d624e81ab96358f99f616c67fbd82532d2" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "unicode-ident", ] [[package]] -name = "pallet-nft-fractionalization" -version = "21.0.0" +name = "psm" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168792cf95a32fa3baf9b874efec82a45124da0a79cee1ae3c98a823e6841959" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-assets", - "pallet-nfts", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "cc", ] [[package]] -name = "pallet-nfts" -version = "32.0.0" +name = "ptr_meta" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e2aad461a0849d7f0471576eeb1fe3151795bcf2ec9e15eca5cca5b9d743b2" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" dependencies = [ - "enumflags2", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "ptr_meta_derive", ] [[package]] -name = "pallet-nfts-runtime-api" -version = "24.0.0" +name = "ptr_meta_derive" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a1f50c217e19dc50ff586a71eb5915df6a05bc0b25564ea20674c8cd182c1f" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "pallet-nfts", - "parity-scale-codec", - "sp-api", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "pallet-nis" -version = "38.0.0" +name = "quick-protobuf" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ac349e119880b7df1a7c4c36d919b33a498d0e9548af3c237365c654ae0c73d" +checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "byteorder", ] [[package]] -name = "pallet-node-authorization" -version = "38.0.0" +name = "quote" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec3133be9e767b8feafbb26edd805824faa59956da008d2dc7fcf4b4720e56" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "proc-macro2", ] [[package]] -name = "pallet-nomination-pools" -version = "35.0.0" +name = "radium" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42906923f9f2b65b22f1211136b57c6878296ba6f6228a075c4442cc1fc1659" -dependencies = [ - "frame-support", - "frame-system", - "log", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", - "sp-tracing 17.0.1", -] +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] -name = "pallet-nomination-pools-benchmarking" -version = "36.0.0" +name = "rand" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d2eaca0349bcda923343226b8b64d25a80b67e0a1ebaaa5b0ab1e1b3b225bc" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "pallet-bags-list", - "pallet-delegated-staking", - "pallet-nomination-pools", - "pallet-staking", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "sp-staking 36.0.0", + "libc", + "rand_chacha", + "rand_core 0.6.4", ] [[package]] -name = "pallet-nomination-pools-runtime-api" -version = "33.0.0" +name = "rand_chacha" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9e1cb89cc2e6df06ce274a7fc814e5e688aad04c43902a10191fa3d2a56a96" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ - "pallet-nomination-pools", - "parity-scale-codec", - "sp-api", + "ppv-lite86", + "rand_core 0.6.4", ] [[package]] -name = "pallet-offences" -version = "37.0.0" +name = "rand_core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c4379cf853465696c1c5c03e7e8ce80aeaca0a6139d698abe9ecb3223fd732a" -dependencies = [ - "frame-support", - "frame-system", - "log", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "serde", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", -] +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" [[package]] -name = "pallet-offences-benchmarking" -version = "38.0.0" +name = "rand_core" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69aa1b24cdffc3fa8c89cdea32c83f1bf9c1c82a87fa00e57ae4be8e85f5e24f" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "log", - "pallet-babe", - "pallet-balances", - "pallet-grandpa", - "pallet-im-online", - "pallet-offences", - "pallet-session", - "pallet-staking", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "getrandom", ] [[package]] -name = "pallet-paged-list" -version = "0.16.0" +name = "reconnecting-jsonrpsee-ws-client" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e099fb116068836b17ca4232dc52f762b69dc8cd4e33f509372d958de278b0" +checksum = "06fa4f17e09edfc3131636082faaec633c7baa269396b4004040bc6c52f49f65" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-metadata-ir", - "sp-runtime 39.0.2", + "cfg_aliases", + "finito", + "futures", + "jsonrpsee 0.23.2", + "serde_json", + "thiserror", + "tokio", + "tracing", ] [[package]] -name = "pallet-parameters" -version = "0.9.0" +name = "redox_syscall" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9aba424d55e17b2a2bec766a41586eab878137704d4803c04bebd6a4743db7b" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "paste", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "bitflags 2.6.0", ] [[package]] -name = "pallet-preimage" -version = "38.0.0" +name = "redox_users" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "407828bc48c6193ac076fdf909b2fadcaaecd65f42b0b0a04afe22fe8e563834" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "getrandom", + "libredox", + "thiserror", ] [[package]] -name = "pallet-proxy" -version = "38.0.0" +name = "ref-cast" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39df395f0dbcf07dafe842916adea3266a87ce36ed87b5132184b6bcd746393" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "ref-cast-impl", ] [[package]] -name = "pallet-ranked-collective" -version = "38.0.0" +name = "ref-cast-impl" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2b38708feaed202debf1ac6beffaa5e20c99a9825c5ca0991753c2d4eaaf3ac" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "pallet-recovery" -version = "38.0.0" +name = "regex" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406a116aa6d05f88f3c10d79ff89cf577323680a48abd8e5550efb47317e67fa" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] -name = "pallet-referenda" -version = "38.0.0" +name = "regex-automata" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3008c20531d1730c9b457ae77ecf0e3c9b07aaf8c4f5d798d61ef6f0b9e2d4b" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-arithmetic 26.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "regex-syntax 0.6.29", ] [[package]] -name = "pallet-remark" -version = "38.0.0" +name = "regex-automata" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e8cae0e20888065ec73dda417325c6ecabf797f4002329484b59c25ecc34d4" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", ] [[package]] -name = "pallet-revive" -version = "0.2.0" +name = "regex-syntax" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be02c94dcbadd206a910a244ec19b493aac793eed95e23d37d6699547234569f" -dependencies = [ - "bitflags 1.3.2", - "environmental", - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-balances", - "pallet-revive-fixtures", - "pallet-revive-proc-macro", - "pallet-revive-uapi", - "parity-scale-codec", - "paste", - "polkavm 0.10.0", - "scale-info", - "serde", - "sp-api", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-builder", -] +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] -name = "pallet-revive-fixtures" -version = "0.2.0" +name = "regex-syntax" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a38c27f1531f36e5327f3084eb24cf1c9dd46b372e030c0169e843ce363105e" -dependencies = [ - "anyhow", - "frame-system", - "parity-wasm", - "polkavm-linker 0.10.0", - "sp-runtime 39.0.2", - "tempfile", - "toml 0.8.19", -] +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] -name = "pallet-revive-mock-network" -version = "0.2.0" +name = "rend" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e74591d44dbd78db02c8593f5caa75bd61bcc4d63999302150223fb969ae37" -dependencies = [ - "frame-support", - "frame-system", - "pallet-assets", - "pallet-balances", - "pallet-message-queue", - "pallet-proxy", - "pallet-revive", - "pallet-revive-proc-macro", - "pallet-revive-uapi", - "pallet-timestamp", - "pallet-utility", - "pallet-xcm", - "parity-scale-codec", - "polkadot-parachain-primitives", - "polkadot-primitives 16.0.0", - "polkadot-runtime-parachains", - "scale-info", - "sp-api", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-keystore 0.40.0", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "xcm-simulator", +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", ] [[package]] -name = "pallet-revive-proc-macro" -version = "0.1.1" +name = "reqwest" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc16d1f7cee6a1ee6e8cd710e16230d59fb4935316c1704cf770e4d2335f8d4" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", ] [[package]] -name = "pallet-revive-uapi" -version = "0.1.1" +name = "reqwest" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb4686c8415619cc13e43fadef146ffff46424d9b4d037fe4c069de52708aac" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ - "bitflags 1.3.2", - "parity-scale-codec", - "paste", - "polkavm-derive 0.10.0", - "scale-info", + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls 0.27.3", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.1.3", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "system-configuration 0.6.1", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", ] [[package]] -name = "pallet-root-offences" -version = "35.0.0" +name = "rfc6979" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35774b830928daaeeca7196cead7c56eeed952a6616ad6dc5ec068d8c85c81a" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "frame-support", - "frame-system", - "pallet-session", - "pallet-staking", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "hmac 0.12.1", + "subtle", ] [[package]] -name = "pallet-root-testing" -version = "14.0.0" +name = "ring" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be95e7c320ac1d381715364cd721e67ab3152ab727f8e4defd3a92e41ebbc880" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", ] [[package]] -name = "pallet-safe-mode" -version = "19.0.0" +name = "rkyv" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3e67dd4644c168cedbf257ac3dd2527aad81acf4a0d413112197094e549f76" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "pallet-balances", - "pallet-proxy", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-runtime 39.0.2", + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", ] [[package]] -name = "pallet-salary" -version = "23.0.0" +name = "rkyv_derive" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0544a71dba06a9a29da0778ba8cb37728c3b9a8377ac9737c4b1bc48c618bc2f" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-ranked-collective", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "pallet-scheduler" -version = "39.0.0" +name = "rlibc" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26899a331e7ab5f7d5966cbf203e1cf5bd99cd110356d7ddcaa7597087cdc0b5" -dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", -] +checksum = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" [[package]] -name = "pallet-scored-pool" -version = "38.0.0" +name = "rust_decimal" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f84b48bb4702712c902f43931c4077d3a1cb6773c8d8c290d4a6251f6bc2a5c" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "arrayvec 0.7.6", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", ] [[package]] -name = "pallet-session" -version = "38.0.0" +name = "rustc-demangle" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8474b62b6b7622f891e83d922a589e2ad5be5471f5ca47d45831a797dba0b3f4" -dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-timestamp", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-session", - "sp-staking 36.0.0", - "sp-state-machine 0.43.0", - "sp-trie 37.0.0", -] +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] -name = "pallet-session-benchmarking" -version = "38.0.0" +name = "rustc-hash" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aadce7df0fee981721983795919642648b846dab5ab9096f82c2cea781007d0" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "pallet-session", - "pallet-staking", - "parity-scale-codec", - "rand", - "sp-runtime 39.0.2", - "sp-session", -] +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] -name = "pallet-skip-feeless-payment" -version = "13.0.0" +name = "rustc-hex" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c2cb0dae13d2c2d2e76373f337d408468f571459df1900cbd7458f21cf6c01" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", -] +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] -name = "pallet-society" -version = "38.0.0" +name = "rustc_version" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1dc69fea8a8de343e71691f009d5fece6ae302ed82b7bb357882b2ea6454143" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "rand_chacha", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "semver", ] [[package]] -name = "pallet-staking" -version = "38.0.0" +name = "rustix" +version = "0.36.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c870d123f4f053b56af808a4beae1ffc4309a696e829796c26837936c926db3b" +checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" dependencies = [ - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "log", - "pallet-authorship", - "pallet-session", - "parity-scale-codec", - "scale-info", - "serde", - "sp-application-crypto 38.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.1.4", + "windows-sys 0.45.0", ] [[package]] -name = "pallet-staking-reward-fn" -version = "22.0.0" +name = "rustix" +version = "0.38.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "988a7ebeacc84d4bdb0b12409681e956ffe35438447d8f8bc78db547cffb6ebc" +checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" dependencies = [ - "log", - "sp-arithmetic 26.0.0", + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", ] [[package]] -name = "pallet-staking-runtime-api" -version = "24.0.0" +name = "rustls" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7298559ef3a6b2f5dfbe9a3b8f3d22f2ff9b073c97f4c4853d2b316d973e72d" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-staking 36.0.0", + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", ] [[package]] -name = "pallet-state-trie-migration" -version = "40.0.0" +name = "rustls" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138c15b4200b9dc4c3e031def6a865a235cdc76ff91ee96fba19ca1787c9dda6" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", ] [[package]] -name = "pallet-statement" -version = "20.0.0" +name = "rustls" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e03e147efa900e75cd106337f36da3d7dcd185bd9e5f5c3df474c08c3c37d16" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ - "frame-support", - "frame-system", "log", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-statement-store", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", ] [[package]] -name = "pallet-sudo" -version = "38.0.0" +name = "rustls-native-certs" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1574fe2aed3d52db4a389b77b53d8c9758257b121e3e7bbe24c4904e11681e0e" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework", ] [[package]] -name = "pallet-timestamp" -version = "37.0.0" +name = "rustls-native-certs" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ba9b71bbfd33ae672f23ba7efaeed2755fdac37b8f946cb7474fc37841b7e1" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-inherents", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-storage 21.0.0", - "sp-timestamp", + "openssl-probe", + "rustls-pemfile 2.1.3", + "rustls-pki-types", + "schannel", + "security-framework", ] [[package]] -name = "pallet-tips" -version = "37.0.0" +name = "rustls-pemfile" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa1d4371a70c309ba11624933f8f5262fe4edad0149c556361d31f26190da936" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-treasury", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "base64 0.21.7", ] [[package]] -name = "pallet-transaction-payment" -version = "38.0.0" +name = "rustls-pemfile" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b1aa3498107a30237f941b0f02180db3b79012c3488878ff01a4ac3e8ee04e" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "base64 0.22.1", + "rustls-pki-types", ] [[package]] -name = "pallet-transaction-payment-rpc-runtime-api" -version = "38.0.0" +name = "rustls-pki-types" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49fdf5ab71e9dbcadcf7139736b6ea6bac8ec4a83985d46cbd130e1eec770e41" -dependencies = [ - "pallet-transaction-payment", - "parity-scale-codec", - "sp-api", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", -] +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] -name = "pallet-transaction-storage" -version = "37.0.0" +name = "rustls-platform-verifier" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c337a972a6a796c0a0acc6c03b5e02901c43ad721ce79eb87b45717d75c93b" +checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "core-foundation", + "core-foundation-sys", + "jni", "log", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "serde", - "sp-inherents", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-transaction-storage-proof", + "once_cell", + "rustls 0.23.13", + "rustls-native-certs 0.7.3", + "rustls-platform-verifier-android", + "rustls-webpki 0.102.8", + "security-framework", + "security-framework-sys", + "webpki-roots", + "winapi", ] [[package]] -name = "pallet-treasury" -version = "37.0.0" +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + +[[package]] +name = "rustls-webpki" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98bfdd3bb9b58fb010bcd419ff5bf940817a8e404cdbf7886a53ac730f5dda2b" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "ring", + "untrusted", ] [[package]] -name = "pallet-tx-pause" -version = "19.0.0" +name = "rustls-webpki" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee153f5be5efc84ebd53aa581e5361cde17dc3669ef80d8ad327f4041d89ebe" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "docify", - "frame-benchmarking", - "frame-support", - "frame-system", - "pallet-balances", - "pallet-proxy", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] -name = "pallet-uniques" -version = "38.0.0" +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ruzstd" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2b13cdaedf2d5bd913a5f6e637cb52b5973d8ed4b8d45e56d921bc4d627006f" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "byteorder", + "derive_more", + "twox-hash", ] [[package]] -name = "pallet-utility" -version = "38.0.0" +name = "rw-stream-sink" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fdcade6efc0b66fc7fc4138964802c02d0ffb7380d894e26b9dd5073727d2b3" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", + "futures", + "pin-project", + "static_assertions", ] [[package]] -name = "pallet-vesting" -version = "38.0.0" +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "807df2ef13ab6bf940879352c3013bfa00b670458b4c125c2f60e5753f68e3d5" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", + "winapi-util", ] [[package]] -name = "pallet-whitelist" -version = "37.0.0" +name = "scale-bits" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ef17df925290865cf37096dd0cb76f787df11805bba01b1d0ca3e106d06280b" +checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", "parity-scale-codec", "scale-info", - "sp-api", - "sp-runtime 39.0.2", ] [[package]] -name = "pallet-xcm" -version = "17.0.1" +name = "scale-bits" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989676964dbda5f5275650fbdcd3894fe7fac626d113abf89d572b4952adcc36" +checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" dependencies = [ - "bounded-collections", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-balances", "parity-scale-codec", "scale-info", + "scale-type-resolver", "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "tracing", - "xcm-runtime-apis", ] [[package]] -name = "pallet-xcm-benchmarks" -version = "17.0.0" +name = "scale-decode" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da423463933b42f4a4c74175f9e9295a439de26719579b894ce533926665e4a" +checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", + "derive_more", "parity-scale-codec", + "scale-bits 0.4.0", + "scale-decode-derive 0.10.0", "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", + "smallvec", ] [[package]] -name = "pallet-xcm-bridge-hub" -version = "0.13.0" +name = "scale-decode" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f9670065b7cba92771060a4a3925b6650ff67611443ccfccd5aa356f7d5aac" +checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" dependencies = [ - "bp-messages", - "bp-runtime", - "bp-xcm-bridge-hub", - "frame-support", - "frame-system", - "log", - "pallet-bridge-messages", + "derive_more", "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", + "primitive-types", + "scale-bits 0.6.0", + "scale-decode-derive 0.13.1", + "scale-type-resolver", + "smallvec", ] [[package]] -name = "pallet-xcm-bridge-hub-router" -version = "0.15.1" +name = "scale-decode-derive" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3b5347c826b721098ef39afb0d750e621c77538044fc1e865af1a8747824fdf" +checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" dependencies = [ - "bp-xcm-bridge-hub-router", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-builder", + "darling 0.14.4", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "parachains-common" -version = "18.0.0" +name = "scale-decode-derive" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9460a69f409be27c62161d8b4d36ffc32735d09a4f9097f9c789db0cca7196c" +checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021" dependencies = [ - "cumulus-primitives-core", - "cumulus-primitives-utility", - "frame-support", - "frame-system", - "log", - "pallet-asset-tx-payment", - "pallet-assets", - "pallet-authorship", - "pallet-balances", - "pallet-collator-selection", - "pallet-message-queue", - "pallet-xcm", - "parity-scale-codec", - "polkadot-primitives 16.0.0", - "scale-info", - "sp-consensus-aura", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-parachain-info", - "staging-xcm 14.2.0", - "staging-xcm-executor", - "substrate-wasm-builder", -] - -[[package]] -name = "parachains-runtimes-test-utils" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287d2db0a2d19466caa579a69f021bfdc6fa352f382c8395dade58d1d0c6adfe" -dependencies = [ - "cumulus-pallet-parachain-system", - "cumulus-pallet-xcmp-queue", - "cumulus-primitives-core", - "cumulus-primitives-parachain-inherent", - "cumulus-test-relay-sproof-builder", - "frame-support", - "frame-system", - "pallet-balances", - "pallet-collator-selection", - "pallet-session", - "pallet-timestamp", - "pallet-xcm", - "parity-scale-codec", - "polkadot-parachain-primitives", - "sp-consensus-aura", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", - "staging-parachain-info", - "staging-xcm 14.2.0", - "staging-xcm-executor", - "substrate-wasm-builder", + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "parity-bip39" -version = "2.0.1" +name = "scale-encode" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" dependencies = [ - "bitcoin_hashes 0.13.0", - "rand", - "rand_core 0.5.1", - "serde", - "unicode-normalization", + "derive_more", + "parity-scale-codec", + "scale-encode-derive 0.5.0", + "scale-info", + "smallvec", ] [[package]] -name = "parity-bytes" -version = "0.1.2" +name = "scale-encode" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" +checksum = "4ba0b9c48dc0eb20c60b083c29447c0c4617cb7c4a4c9fef72aa5c5bc539e15e" +dependencies = [ + "derive_more", + "parity-scale-codec", + "primitive-types", + "scale-bits 0.6.0", + "scale-encode-derive 0.7.1", + "scale-type-resolver", + "smallvec", +] [[package]] -name = "parity-scale-codec" -version = "3.7.0" +name = "scale-encode-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be4817d39f3272f69c59fe05d0535ae6456c2dc2fa1ba02910296c7e0a5c590" +checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" dependencies = [ - "arrayvec 0.7.6", - "bitvec", - "byte-slice-cast", - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", + "darling 0.14.4", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "parity-scale-codec-derive" -version = "3.7.0" +name = "scale-encode-derive" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" +checksum = "82ab7e60e2d9c8d47105f44527b26f04418e5e624ffc034f6b4a86c0ba19c5bf" dependencies = [ - "proc-macro-crate 3.2.0", + "darling 0.14.4", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.89", + "syn 1.0.109", ] [[package]] -name = "parity-util-mem" -version = "0.12.0" +name = "scale-info" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" dependencies = [ + "bitvec", "cfg-if", - "ethereum-types", - "hashbrown 0.12.3", - "impl-trait-for-tuples", - "lru 0.8.1", - "parity-util-mem-derive", - "parking_lot", - "primitive-types 0.12.2", - "smallvec", - "winapi", + "derive_more", + "parity-scale-codec", + "scale-info-derive", + "schemars", + "serde", ] [[package]] -name = "parity-util-mem-derive" -version = "0.1.0" +name = "scale-info-derive" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" dependencies = [ + "proc-macro-crate 3.2.0", "proc-macro2", + "quote", "syn 1.0.109", - "synstructure 0.12.6", ] [[package]] -name = "parity-wasm" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" - -[[package]] -name = "parking" -version = "2.2.1" +name = "scale-type-resolver" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +dependencies = [ + "scale-info", + "smallvec", +] [[package]] -name = "parking_lot" -version = "0.12.3" +name = "scale-typegen" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac" dependencies = [ - "lock_api", - "parking_lot_core", + "proc-macro2", + "quote", + "scale-info", + "syn 2.0.77", + "thiserror", ] [[package]] -name = "parking_lot_core" -version = "0.9.10" +name = "scale-value" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "ba4d772cfb7569e03868400344a1695d16560bf62b86b918604773607d39ec84" dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", + "base58", + "blake2", + "derive_more", + "either", + "frame-metadata 15.1.0", + "parity-scale-codec", + "scale-bits 0.6.0", + "scale-decode 0.13.1", + "scale-encode 0.7.1", + "scale-info", + "scale-type-resolver", + "serde", + "yap", ] [[package]] -name = "password-hash" -version = "0.5.0" +name = "schannel" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "windows-sys 0.59.0", ] [[package]] -name = "paste" -version = "1.0.15" +name = "schemars" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] [[package]] -name = "pbkdf2" -version = "0.12.2" +name = "schemars_derive" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ - "digest 0.10.7", - "hmac 0.12.1", - "password-hash", + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.77", ] [[package]] -name = "pem" -version = "3.0.4" +name = "schnellru" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" dependencies = [ - "base64 0.22.1", - "serde", + "ahash 0.8.11", + "cfg-if", + "hashbrown 0.13.2", ] [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "schnorrkel" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "aead", + "arrayref", + "arrayvec 0.7.6", + "curve25519-dalek 4.1.3", + "getrandom_or_panic", + "merlin", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.8", + "subtle", + "zeroize", +] [[package]] -name = "pest" -version = "2.7.14" +name = "scopeguard" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" -dependencies = [ - "memchr", - "thiserror 1.0.69", - "ucd-trie", -] +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "pest_derive" -version = "2.7.14" +name = "scratch" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" -dependencies = [ - "pest", - "pest_generator", -] +checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" [[package]] -name = "pest_generator" -version = "2.7.14" +name = "sct" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.89", + "ring", + "untrusted", ] [[package]] -name = "pest_meta" -version = "2.7.14" +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "sec1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "once_cell", - "pest", - "sha2 0.10.8", + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", ] [[package]] -name = "pin-project" -version = "1.1.7" +name = "secp256k1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "pin-project-internal", + "secp256k1-sys", ] [[package]] -name = "pin-project-internal" -version = "1.1.7" +name = "secp256k1-sys" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", + "cc", ] [[package]] -name = "pin-project-lite" -version = "0.2.15" +name = "secrecy" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "serde", + "zeroize", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "security-framework" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "num-bigint", + "security-framework-sys", +] [[package]] -name = "piper" -version = "0.2.4" +name = "security-framework-sys" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", + "core-foundation-sys", + "libc", ] [[package]] -name = "pkcs8" -version = "0.10.2" +name = "semver" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ - "der", - "spki", + "serde", ] [[package]] -name = "pkg-config" -version = "0.3.31" +name = "serde" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] [[package]] -name = "polkadot-ckb-merkle-mountain-range" +name = "serde-value" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b44320e5f7ce2c18227537a3032ae5b2c476a7e8eddba45333e1011fc31b92" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "cfg-if", - "itertools 0.10.5", + "ordered-float", + "serde", ] [[package]] -name = "polkadot-core-primitives" -version = "15.0.0" +name = "serde_bytes" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2900d3b857e34c480101618a950c3a4fbcddc8c0d50573d48553376185908b8" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "serde", ] [[package]] -name = "polkadot-parachain-primitives" -version = "14.0.0" +name = "serde_derive" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b5648a2e8ce1f9a0f8c41c38def670cefd91932cd793468e1a5b0b0b4e4af1" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ - "bounded-collections", - "derive_more 0.99.18", - "parity-scale-codec", - "polkadot-core-primitives", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "polkadot-primitives" -version = "15.0.0" +name = "serde_derive_internals" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b57bc055fa389372ec5fc0001b99aeffd50f3fd379280ce572d935189bb58dd8" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ - "bitvec", - "hex-literal", - "log", - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-parachain-primitives", - "scale-info", - "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-authority-discovery", - "sp-consensus-slots", - "sp-core 34.0.0", - "sp-inherents", - "sp-io 38.0.0", - "sp-keystore 0.40.0", - "sp-runtime 39.0.2", - "sp-staking 34.0.0", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "polkadot-primitives" -version = "16.0.0" +name = "serde_json" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb20b75d33212150242d39890d7ededab55f1084160c337f15d0eb8ca8c3ad4" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ - "bitvec", - "hex-literal", - "log", - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-parachain-primitives", - "scale-info", + "indexmap 2.5.0", + "itoa", + "memchr", + "ryu", "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-authority-discovery", - "sp-consensus-slots", - "sp-core 34.0.0", - "sp-inherents", - "sp-io 38.0.0", - "sp-keystore 0.40.0", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", ] [[package]] -name = "polkadot-runtime-common" -version = "17.0.0" +name = "serde_path_to_error" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc15154ba5ca55d323fcf7af0f5dcd39d58dcb4dfac3d9b30404840a6d8bbde4" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ - "bitvec", - "frame-benchmarking", - "frame-election-provider-support", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "libsecp256k1", - "log", - "pallet-asset-rate", - "pallet-authorship", - "pallet-balances", - "pallet-broker", - "pallet-election-provider-multi-phase", - "pallet-fast-unstake", - "pallet-identity", - "pallet-session", - "pallet-staking", - "pallet-staking-reward-fn", - "pallet-timestamp", - "pallet-transaction-payment", - "pallet-treasury", - "pallet-vesting", - "parity-scale-codec", - "polkadot-primitives 16.0.0", - "polkadot-runtime-parachains", - "rustc-hex", - "scale-info", + "itoa", "serde", - "serde_derive", - "slot-range-helper", - "sp-api", - "sp-core 34.0.0", - "sp-inherents", - "sp-io 38.0.0", - "sp-npos-elections", - "sp-runtime 39.0.2", - "sp-session", - "sp-staking 36.0.0", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "static_assertions", ] [[package]] -name = "polkadot-runtime-metrics" -version = "17.0.0" +name = "serde_repr" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c306f1ace7644a24de860479f92cf8d6467393bb0c9b0777c57e2d42c9d452a" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ - "bs58", - "frame-benchmarking", - "parity-scale-codec", - "polkadot-primitives 16.0.0", - "sp-tracing 17.0.1", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] -name = "polkadot-runtime-parachains" -version = "17.0.1" +name = "serde_spanned" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd58e3a17e5df678f5737b018cbfec603af2c93bec56bbb9f8fb8b2b017b54b1" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ - "bitflags 1.3.2", - "bitvec", - "derive_more 0.99.18", - "frame-benchmarking", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-balances", - "pallet-broker", - "pallet-message-queue", - "pallet-mmr", - "pallet-session", - "pallet-staking", - "pallet-timestamp", - "pallet-vesting", - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-parachain-primitives", - "polkadot-primitives 16.0.0", - "polkadot-runtime-metrics", - "rand", - "rand_chacha", - "scale-info", "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-inherents", - "sp-io 38.0.0", - "sp-keystore 0.40.0", - "sp-runtime 39.0.2", - "sp-session", - "sp-staking 36.0.0", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-executor", ] [[package]] -name = "polkadot-sdk" -version = "0.7.0" +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb819108697967452fa6d8d96ab4c0d48cbaa423b3156499dcb24f1cf95d6775" -dependencies = [ - "asset-test-utils", - "assets-common", - "binary-merkle-tree", - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-test-utils", - "bp-xcm-bridge-hub", - "bp-xcm-bridge-hub-router", - "bridge-hub-common", - "bridge-hub-test-utils", - "bridge-runtime-common", - "cumulus-pallet-aura-ext", - "cumulus-pallet-dmp-queue", - "cumulus-pallet-parachain-system", - "cumulus-pallet-parachain-system-proc-macro", - "cumulus-pallet-session-benchmarking", - "cumulus-pallet-solo-to-para", - "cumulus-pallet-xcm", - "cumulus-pallet-xcmp-queue", - "cumulus-ping", - "cumulus-primitives-aura", - "cumulus-primitives-core", - "cumulus-primitives-parachain-inherent", - "cumulus-primitives-proof-size-hostfunction", - "cumulus-primitives-storage-weight-reclaim", - "cumulus-primitives-timestamp", - "cumulus-primitives-utility", - "cumulus-test-relay-sproof-builder", - "frame-benchmarking", - "frame-benchmarking-pallet-pov", - "frame-election-provider-support", - "frame-executive", - "frame-metadata-hash-extension", - "frame-support", - "frame-support-procedural", - "frame-system", - "frame-system-benchmarking", - "frame-system-rpc-runtime-api", - "frame-try-runtime", - "pallet-alliance", - "pallet-asset-conversion", - "pallet-asset-conversion-ops", - "pallet-asset-conversion-tx-payment", - "pallet-asset-rate", - "pallet-asset-tx-payment", - "pallet-assets", - "pallet-assets-freezer", - "pallet-atomic-swap", - "pallet-aura", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-bags-list", - "pallet-balances", - "pallet-beefy", - "pallet-beefy-mmr", - "pallet-bounties", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-broker", - "pallet-child-bounties", - "pallet-collator-selection", - "pallet-collective", - "pallet-collective-content", - "pallet-contracts", - "pallet-contracts-mock-network", - "pallet-conviction-voting", - "pallet-core-fellowship", - "pallet-delegated-staking", - "pallet-democracy", - "pallet-dev-mode", - "pallet-election-provider-multi-phase", - "pallet-election-provider-support-benchmarking", - "pallet-elections-phragmen", - "pallet-fast-unstake", - "pallet-glutton", - "pallet-grandpa", - "pallet-identity", - "pallet-im-online", - "pallet-indices", - "pallet-insecure-randomness-collective-flip", - "pallet-lottery", - "pallet-membership", - "pallet-message-queue", - "pallet-migrations", - "pallet-mixnet", - "pallet-mmr", - "pallet-multisig", - "pallet-nft-fractionalization", - "pallet-nfts", - "pallet-nfts-runtime-api", - "pallet-nis", - "pallet-node-authorization", - "pallet-nomination-pools", - "pallet-nomination-pools-benchmarking", - "pallet-nomination-pools-runtime-api", - "pallet-offences", - "pallet-offences-benchmarking", - "pallet-paged-list", - "pallet-parameters", - "pallet-preimage", - "pallet-proxy", - "pallet-ranked-collective", - "pallet-recovery", - "pallet-referenda", - "pallet-remark", - "pallet-revive", - "pallet-revive-fixtures", - "pallet-revive-mock-network", - "pallet-root-offences", - "pallet-root-testing", - "pallet-safe-mode", - "pallet-salary", - "pallet-scheduler", - "pallet-scored-pool", - "pallet-session", - "pallet-session-benchmarking", - "pallet-skip-feeless-payment", - "pallet-society", - "pallet-staking", - "pallet-staking-reward-fn", - "pallet-staking-runtime-api", - "pallet-state-trie-migration", - "pallet-statement", - "pallet-sudo", - "pallet-timestamp", - "pallet-tips", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-transaction-storage", - "pallet-treasury", - "pallet-tx-pause", - "pallet-uniques", - "pallet-utility", - "pallet-vesting", - "pallet-whitelist", - "pallet-xcm", - "pallet-xcm-benchmarks", - "pallet-xcm-bridge-hub", - "pallet-xcm-bridge-hub-router", - "parachains-common", - "parachains-runtimes-test-utils", - "polkadot-core-primitives", - "polkadot-parachain-primitives", - "polkadot-primitives 16.0.0", - "polkadot-runtime-common", - "polkadot-runtime-metrics", - "polkadot-runtime-parachains", - "polkadot-sdk-frame", - "sc-executor", - "slot-range-helper", - "snowbridge-beacon-primitives", - "snowbridge-core", - "snowbridge-ethereum", - "snowbridge-outbound-queue-merkle-tree", - "snowbridge-outbound-queue-runtime-api", - "snowbridge-pallet-ethereum-client", - "snowbridge-pallet-ethereum-client-fixtures", - "snowbridge-pallet-inbound-queue", - "snowbridge-pallet-inbound-queue-fixtures", - "snowbridge-pallet-outbound-queue", - "snowbridge-pallet-system", - "snowbridge-router-primitives", - "snowbridge-runtime-common", - "snowbridge-runtime-test-common", - "snowbridge-system-runtime-api", - "sp-api", - "sp-api-proc-macro", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-authority-discovery", - "sp-block-builder", - "sp-consensus-aura", - "sp-consensus-babe", - "sp-consensus-beefy", - "sp-consensus-grandpa", - "sp-consensus-pow", - "sp-consensus-slots", - "sp-core 34.0.0", - "sp-core-hashing", - "sp-crypto-ec-utils", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.29.0", - "sp-genesis-builder", - "sp-inherents", - "sp-io 38.0.0", - "sp-keyring", - "sp-keystore 0.40.0", - "sp-metadata-ir", - "sp-mixnet", - "sp-mmr-primitives", - "sp-npos-elections", - "sp-offchain", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "sp-session", - "sp-staking 36.0.0", - "sp-state-machine 0.43.0", - "sp-statement-store", - "sp-std", - "sp-storage 21.0.0", - "sp-timestamp", - "sp-tracing 17.0.1", - "sp-transaction-pool", - "sp-transaction-storage-proof", - "sp-trie 37.0.0", - "sp-version", - "sp-wasm-interface 21.0.1", - "sp-weights 31.0.0", - "staging-parachain-info", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "substrate-bip39 0.6.0", - "testnet-parachains-constants", - "xcm-runtime-apis", -] - -[[package]] -name = "polkadot-sdk-frame" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdeb15ce08142082461afe1a62c15f7ce10a731d91b203ad6a8dc8d2e4a6a54" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ - "docify", - "frame-benchmarking", - "frame-executive", - "frame-support", - "frame-system", - "frame-system-benchmarking", - "frame-system-rpc-runtime-api", - "frame-try-runtime", - "log", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-arithmetic 26.0.0", - "sp-block-builder", - "sp-consensus-aura", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-inherents", - "sp-io 38.0.0", - "sp-offchain", - "sp-runtime 39.0.2", - "sp-session", - "sp-storage 21.0.0", - "sp-transaction-pool", - "sp-version", + "form_urlencoded", + "itoa", + "ryu", + "serde", ] [[package]] -name = "polkavm" -version = "0.9.3" +name = "serde_with" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a3693e5efdb2bf74e449cd25fd777a28bd7ed87e41f5d5da75eb31b4de48b94" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ - "libc", - "log", - "polkavm-assembler 0.9.0", - "polkavm-common 0.9.0", - "polkavm-linux-raw 0.9.0", + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.5.0", + "serde", + "serde_derive", + "serde_json", + "time", ] [[package]] -name = "polkavm" -version = "0.10.0" +name = "serde_yaml" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ec0c5935f2eff23cfc4653002f4f8d12b37f87a720e0631282d188c32089d6" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "libc", - "log", - "polkavm-assembler 0.10.0", - "polkavm-common 0.10.0", - "polkavm-linux-raw 0.10.0", + "indexmap 2.5.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", ] [[package]] -name = "polkavm-assembler" -version = "0.9.0" +name = "serdect" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa96d6d868243acc12de813dd48e756cbadcc8e13964c70d272753266deadc1" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" dependencies = [ - "log", + "base16ct", + "serde", ] [[package]] -name = "polkavm-assembler" -version = "0.10.0" +name = "sha-1" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e4fd5a43100bf1afe9727b8130d01f966f5cfc9144d5604b21e795c2bcd80e" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ - "log", + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", ] [[package]] -name = "polkavm-common" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" - -[[package]] -name = "polkavm-common" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" - -[[package]] -name = "polkavm-common" -version = "0.9.0" +name = "sha1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "log", + "cfg-if", + "cpufeatures", + "digest 0.10.7", ] [[package]] -name = "polkavm-common" -version = "0.10.0" +name = "sha2" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ - "log", - "polkavm-assembler 0.10.0", + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", ] [[package]] -name = "polkavm-derive" -version = "0.5.0" +name = "sha2" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "polkavm-derive-impl 0.5.0", - "syn 2.0.89", + "cfg-if", + "cpufeatures", + "digest 0.10.7", ] [[package]] -name = "polkavm-derive" -version = "0.8.0" +name = "sha3" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "polkavm-derive-impl-macro 0.8.0", + "digest 0.10.7", + "keccak", ] [[package]] -name = "polkavm-derive" -version = "0.9.1" +name = "sharded-slab" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "polkavm-derive-impl-macro 0.9.0", + "lazy_static", ] [[package]] -name = "polkavm-derive" -version = "0.10.0" +name = "shared_child" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" dependencies = [ - "polkavm-derive-impl-macro 0.10.0", + "libc", + "windows-sys 0.59.0", ] [[package]] -name = "polkavm-derive-impl" -version = "0.5.0" +name = "shell-words" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d" -dependencies = [ - "polkavm-common 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" [[package]] -name = "polkavm-derive-impl" -version = "0.8.0" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" -dependencies = [ - "polkavm-common 0.8.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] -name = "polkavm-derive-impl" -version = "0.9.0" +name = "signal-hook" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" dependencies = [ - "polkavm-common 0.9.0", - "proc-macro2", - "quote", - "syn 2.0.89", + "libc", + "signal-hook-registry", ] [[package]] -name = "polkavm-derive-impl" -version = "0.10.0" +name = "signal-hook-mio" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7855353a5a783dd5d09e3b915474bddf66575f5a3cf45dec8d1c5e051ba320dc" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ - "polkavm-common 0.10.0", - "proc-macro2", - "quote", - "syn 2.0.89", + "libc", + "mio 0.8.11", + "signal-hook", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.8.0" +name = "signal-hook-registry" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ - "polkavm-derive-impl 0.8.0", - "syn 2.0.89", + "libc", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.9.0" +name = "signature" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "polkavm-derive-impl 0.9.0", - "syn 2.0.89", + "digest 0.10.7", + "rand_core 0.6.4", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.10.0" +name = "simdutf8" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" -dependencies = [ - "polkavm-derive-impl 0.10.0", - "syn 2.0.89", -] +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] -name = "polkavm-linker" -version = "0.9.2" +name = "similar" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" -dependencies = [ - "gimli 0.28.1", - "hashbrown 0.14.5", - "log", - "object 0.32.2", - "polkavm-common 0.9.0", - "regalloc2 0.9.3", - "rustc-demangle", -] +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] -name = "polkavm-linker" -version = "0.10.0" +name = "simple-mermaid" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" -dependencies = [ - "gimli 0.28.1", - "hashbrown 0.14.5", - "log", - "object 0.36.5", - "polkavm-common 0.10.0", - "regalloc2 0.9.3", - "rustc-demangle", -] +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" [[package]] -name = "polkavm-linux-raw" -version = "0.9.0" +name = "siphasher" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] -name = "polkavm-linux-raw" -version = "0.10.0" +name = "slab" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] -name = "polling" -version = "3.7.4" +name = "smallvec" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi 0.4.0", - "pin-project-lite", - "rustix 0.38.41", - "tracing", - "windows-sys 0.59.0", -] +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] -name = "poly1305" -version = "0.8.0" +name = "smawk" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" -dependencies = [ - "cpufeatures", - "opaque-debug", - "universal-hash", -] +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] -name = "polyval" -version = "0.6.2" +name = "smol" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", -] - -[[package]] -name = "pop-cli" -version = "0.5.0" -dependencies = [ - "anyhow", - "assert_cmd", - "axum", - "clap", - "cliclack", - "console", - "dirs", - "duct", - "env_logger 0.11.5", - "git2", - "os_info", - "pop-common", - "pop-contracts", - "pop-parachains", - "pop-telemetry", - "predicates", - "reqwest 0.12.7", - "serde", - "serde_json", - "sp-core 31.0.0", - "sp-weights 30.0.0", - "strum 0.26.3", - "strum_macros 0.26.4", - "subxt", - "subxt-signer", - "tempfile", - "tokio", - "tower-http 0.6.2", - "url", -] - -[[package]] -name = "pop-common" -version = "0.5.0" -dependencies = [ - "anyhow", - "cargo_toml", - "duct", - "flate2", - "git2", - "git2_credentials", - "mockito", - "regex", - "reqwest 0.12.9", - "serde", - "serde_json", - "strum 0.26.3", - "strum_macros 0.26.4", - "tar", - "tempfile", - "thiserror 1.0.69", - "tokio", - "toml_edit 0.22.22", - "url", -] - -[[package]] -name = "pop-contracts" -version = "0.5.0" -dependencies = [ - "anyhow", - "contract-build", - "contract-extrinsics", - "dirs", - "duct", - "flate2", - "heck 0.5.0", - "ink_env", - "mockito", - "pop-common", - "reqwest 0.12.9", - "sp-core 31.0.0", - "sp-weights 30.0.0", - "strum 0.26.3", - "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", - "tar", - "tempfile", - "thiserror 1.0.69", - "tokio", - "tokio-test", - "url", -] - -[[package]] -name = "pop-parachains" -version = "0.5.0" -dependencies = [ - "anyhow", - "askama", - "clap", - "duct", - "flate2", - "glob", - "indexmap 2.6.0", - "mockito", - "pop-common", - "reqwest 0.12.9", - "serde_json", - "strum 0.26.3", - "strum_macros 0.26.4", - "symlink", - "tar", - "tempfile", - "thiserror 1.0.69", - "tokio", - "tokio-test", - "toml_edit 0.22.22", - "url", - "walkdir", - "zombienet-sdk", -] - -[[package]] -name = "pop-telemetry" -version = "0.5.0" -dependencies = [ - "dirs", - "env_logger 0.11.5", - "log", - "mockito", - "reqwest 0.12.9", - "serde", - "serde_json", - "tempfile", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "pop-wallet-integration" -version = "0.5.0" -dependencies = [ - "axum", - "serde", - "serde_json", - "tokio", - "tower-http 0.6.2", -] - -[[package]] -name = "portable-atomic" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "predicates" -version = "3.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" -dependencies = [ - "anstyle", - "difflib", - "float-cmp", - "normalize-line-endings", - "predicates-core", - "regex", -] - -[[package]] -name = "predicates-core" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" - -[[package]] -name = "predicates-tree" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "prettyplease" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" -dependencies = [ - "proc-macro2", - "syn 2.0.89", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "scale-info", - "uint 0.9.5", -] - -[[package]] -name = "primitive-types" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" -dependencies = [ - "fixed-hash", - "impl-codec 0.7.0", - "impl-serde 0.5.0", - "scale-info", - "uint 0.10.0", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit 0.22.22", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "proc-macro-warning" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "proc-macro2" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax 0.8.5", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "psm" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" -dependencies = [ - "cc", -] - -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quick-protobuf" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" -dependencies = [ - "byteorder", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_xorshift" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "rand_core 0.6.4", -] - -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "reconnecting-jsonrpsee-ws-client" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06fa4f17e09edfc3131636082faaec633c7baa269396b4004040bc6c52f49f65" -dependencies = [ - "cfg_aliases", - "finito", - "futures", - "jsonrpsee 0.23.2", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tracing", -] - -[[package]] -name = "redox_syscall" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" -dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom", - "libredox", - "thiserror 1.0.69", -] - -[[package]] -name = "ref-cast" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "regalloc2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80535183cae11b149d618fbd3c37e38d7cda589d82d7769e196ca9a9042d7621" -dependencies = [ - "fxhash", - "log", - "slice-group-by", - "smallvec", -] - -[[package]] -name = "regalloc2" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" -dependencies = [ - "hashbrown 0.13.2", - "log", - "rustc-hash 1.1.0", - "slice-group-by", - "smallvec", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "reqwest" -version = "0.12.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.4.7", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.5.1", - "hyper-rustls 0.27.3", - "hyper-tls 0.6.0", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 2.2.0", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.2", - "system-configuration 0.6.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-registry", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac 0.12.1", - "subtle", -] - -[[package]] -name = "ring" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rkyv" -version = "0.7.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rlibc" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "rococo-runtime-constants" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1ec6683a2e52fe3be2eaf942a80619abd99eb36e973c5ab4489a2f3b100db5c" -dependencies = [ - "frame-support", - "polkadot-primitives 16.0.0", - "polkadot-runtime-common", - "smallvec", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", - "staging-xcm 14.2.0", - "staging-xcm-builder", -] - -[[package]] -name = "ruint" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "bytes", - "fastrlp", - "num-bigint", - "num-traits", - "parity-scale-codec", - "primitive-types 0.12.2", - "proptest", - "rand", - "rlp", - "ruint-macro", - "serde", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rust_decimal" -version = "1.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" -dependencies = [ - "arrayvec 0.7.6", - "borsh", - "bytes", - "num-traits", - "rand", - "rkyv", - "serde", - "serde_json", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.23", -] - -[[package]] -name = "rustix" -version = "0.36.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.45.0", -] - -[[package]] -name = "rustix" -version = "0.38.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls" -version = "0.21.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" -dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.7", - "sct", -] - -[[package]] -name = "rustls" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" -dependencies = [ - "log", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls" -version = "0.23.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" -dependencies = [ - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" -dependencies = [ - "openssl-probe", - "rustls-pemfile 1.0.4", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-native-certs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" -dependencies = [ - "openssl-probe", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "rustls-pki-types" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" - -[[package]] -name = "rustls-platform-verifier" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" -dependencies = [ - "core-foundation", - "core-foundation-sys", - "jni", - "log", - "once_cell", - "rustls 0.23.19", - "rustls-native-certs 0.7.3", - "rustls-platform-verifier-android", - "rustls-webpki 0.102.8", - "security-framework", - "security-framework-sys", - "webpki-roots", - "winapi", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "ruzstd" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" -dependencies = [ - "byteorder", - "derive_more 0.99.18", - "twox-hash", -] - -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", -] - -[[package]] -name = "rw-stream-sink" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" -dependencies = [ - "futures", - "pin-project", - "static_assertions", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "safe-mix" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" -dependencies = [ - "rustc_version 0.2.3", -] - -[[package]] -name = "safe_arch" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "sc-allocator" -version = "29.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b975ee3a95eaacb611e7b415737a7fa2db4d8ad7b880cc1b97371b04e95c7903" -dependencies = [ - "log", - "sp-core 34.0.0", - "sp-wasm-interface 21.0.1", - "thiserror 1.0.69", -] - -[[package]] -name = "sc-executor" -version = "0.40.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0cc0a3728fd033589183460c5a49b2e7545d09dc89a098216ef9e9aadcd9dc" -dependencies = [ - "parity-scale-codec", - "parking_lot", - "sc-executor-common", - "sc-executor-polkavm", - "sc-executor-wasmtime", - "schnellru", - "sp-api", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "sp-io 38.0.0", - "sp-panic-handler", - "sp-runtime-interface 28.0.0", - "sp-trie 37.0.0", - "sp-version", - "sp-wasm-interface 21.0.1", - "tracing", -] - -[[package]] -name = "sc-executor-common" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3b703a33dcb7cddf19176fdf12294b9a6408125836b0f4afee3e6969e7f190" -dependencies = [ - "polkavm 0.9.3", - "sc-allocator", - "sp-maybe-compressed-blob", - "sp-wasm-interface 21.0.1", - "thiserror 1.0.69", - "wasm-instrument", -] - -[[package]] -name = "sc-executor-polkavm" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fe58d9cacfab73e5595fa84b80f7bd03efebe54a0574daaeb221a1d1f7ab80" -dependencies = [ - "log", - "polkavm 0.9.3", - "sc-executor-common", - "sp-wasm-interface 21.0.1", -] - -[[package]] -name = "sc-executor-wasmtime" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd498f2f77ec1f861c30804f5bfd796d4afcc8ce44ea1f11bfbe2847551d161" -dependencies = [ - "anyhow", - "cfg-if", - "libc", - "log", - "parking_lot", - "rustix 0.36.17", - "sc-allocator", - "sc-executor-common", - "sp-runtime-interface 28.0.0", - "sp-wasm-interface 21.0.1", - "wasmtime", -] - -[[package]] -name = "scale-bits" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" -dependencies = [ - "parity-scale-codec", - "scale-type-resolver 0.1.1", -] - -[[package]] -name = "scale-bits" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" -dependencies = [ - "parity-scale-codec", - "scale-info", - "scale-type-resolver 0.2.0", - "serde", -] - -[[package]] -name = "scale-decode" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" -dependencies = [ - "derive_more 0.99.18", - "parity-scale-codec", - "scale-bits 0.5.0", - "scale-decode-derive 0.11.1", - "scale-type-resolver 0.1.1", - "smallvec", -] - -[[package]] -name = "scale-decode" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" -dependencies = [ - "derive_more 0.99.18", - "parity-scale-codec", - "primitive-types 0.12.2", - "scale-bits 0.6.0", - "scale-decode-derive 0.13.1", - "scale-type-resolver 0.2.0", - "smallvec", -] - -[[package]] -name = "scale-decode" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ae9cc099ae85ff28820210732b00f019546f36f33225f509fe25d5816864a0" -dependencies = [ - "derive_more 1.0.0", - "parity-scale-codec", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode-derive 0.14.0", - "scale-type-resolver 0.2.0", - "smallvec", -] - -[[package]] -name = "scale-decode-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" -dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "scale-decode-derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021" -dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "scale-decode-derive" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" -dependencies = [ - "darling 0.20.10", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "scale-encode" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" -dependencies = [ - "derive_more 0.99.18", - "parity-scale-codec", - "scale-encode-derive 0.6.0", - "scale-type-resolver 0.1.1", - "smallvec", -] - -[[package]] -name = "scale-encode" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528464e6ae6c8f98e2b79633bf79ef939552e795e316579dab09c61670d56602" -dependencies = [ - "derive_more 0.99.18", - "parity-scale-codec", - "primitive-types 0.12.2", - "scale-bits 0.6.0", - "scale-encode-derive 0.7.2", - "scale-type-resolver 0.2.0", - "smallvec", -] - -[[package]] -name = "scale-encode" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9271284d05d0749c40771c46180ce89905fd95aa72a2a2fddb4b7c0aa424db" -dependencies = [ - "derive_more 1.0.0", - "parity-scale-codec", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-encode-derive 0.8.0", - "scale-type-resolver 0.2.0", - "smallvec", -] - -[[package]] -name = "scale-encode-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" -dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "scale-encode-derive" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef2618f123c88da9cd8853b69d766068f1eddc7692146d7dfe9b89e25ce2efd" -dependencies = [ - "darling 0.20.10", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "scale-encode-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102fbc6236de6c53906c0b262f12c7aa69c2bdc604862c12728f5f4d370bc137" -dependencies = [ - "darling 0.20.10", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "scale-info" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" -dependencies = [ - "bitvec", - "cfg-if", - "derive_more 1.0.0", - "parity-scale-codec", - "scale-info-derive", - "schemars", - "serde", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "scale-type-resolver" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10b800069bfd43374e0f96f653e0d46882a2cb16d6d961ac43bea80f26c76843" -dependencies = [ - "smallvec", -] - -[[package]] -name = "scale-type-resolver" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" -dependencies = [ - "scale-info", - "smallvec", -] - -[[package]] -name = "scale-typegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac" -dependencies = [ - "proc-macro2", - "quote", - "scale-info", - "syn 2.0.89", - "thiserror 1.0.69", -] - -[[package]] -name = "scale-typegen" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc4c70c7fea2eef1740f0081d3fe385d8bee1eef11e9272d3bec7dc8e5438e0" -dependencies = [ - "proc-macro2", - "quote", - "scale-info", - "syn 2.0.89", - "thiserror 1.0.69", -] - -[[package]] -name = "scale-value" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6ab090d823e75cfdb258aad5fe92e13f2af7d04b43a55d607d25fcc38c811" -dependencies = [ - "base58", - "blake2", - "derive_more 0.99.18", - "either", - "frame-metadata 15.1.0", - "parity-scale-codec", - "scale-bits 0.6.0", - "scale-decode 0.13.1", - "scale-encode 0.7.2", - "scale-info", - "scale-type-resolver 0.2.0", - "serde", - "yap", -] - -[[package]] -name = "scale-value" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e0ef2a0ee1e02a69ada37feb87ea1616ce9808aca072befe2d3131bf28576e" -dependencies = [ - "base58", - "blake2", - "derive_more 1.0.0", - "either", - "parity-scale-codec", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", - "scale-type-resolver 0.2.0", - "serde", - "yap", -] - -[[package]] -name = "schannel" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.89", -] - -[[package]] -name = "schnellru" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" -dependencies = [ - "ahash 0.8.11", - "cfg-if", - "hashbrown 0.13.2", -] - -[[package]] -name = "schnorrkel" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" -dependencies = [ - "aead", - "arrayref", - "arrayvec 0.7.6", - "curve25519-dalek 4.1.3", - "getrandom_or_panic", - "merlin", - "rand_core 0.6.4", - "serde_bytes", - "sha2 0.10.8", - "subtle", - "zeroize", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scratch" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" - -[[package]] -name = "scrypt" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" -dependencies = [ - "password-hash", - "pbkdf2", - "salsa20", - "sha2 0.10.8", -] - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" -dependencies = [ - "secp256k1-sys 0.9.2", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes 0.14.0", - "rand", - "secp256k1-sys 0.10.1", -] - -[[package]] -name = "secp256k1-sys" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" -dependencies = [ - "cc", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "secrecy" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" -dependencies = [ - "serde", - "zeroize", -] - -[[package]] -name = "secrecy" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" -dependencies = [ - "zeroize", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-foundation-sys", - "libc", - "num-bigint", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.3", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.215" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde-big-array" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" -dependencies = [ - "serde", -] - -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - -[[package]] -name = "serde_bytes" -version = "0.11.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.215" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "serde_json" -version = "1.0.133" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" -dependencies = [ - "indexmap 2.6.0", - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" -dependencies = [ - "itoa", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.6.0", - "serde", - "serde_derive", - "serde_json", - "time", -] - -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap 2.6.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct", - "serde", -] - -[[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", - "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", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shared_child" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-mio" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" -dependencies = [ - "libc", - "mio", - "signal-hook", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "simba" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" -dependencies = [ - "approx", - "num-complex", - "num-traits", - "paste", - "wide", -] - -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - -[[package]] -name = "similar" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" - -[[package]] -name = "simple-mermaid" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" - -[[package]] -name = "siphasher" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "slice-group-by" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" - -[[package]] -name = "slot-range-helper" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e34f1146a457a5c554dedeae6c7273aa54c3b031f3e9eb0abd037b5511e2ce9" -dependencies = [ - "enumn", - "parity-scale-codec", - "paste", - "sp-runtime 39.0.2", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "smawk" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" - -[[package]] -name = "smol" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" -dependencies = [ - "async-channel", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-net", - "async-process", - "blocking", - "futures-lite", -] - -[[package]] -name = "smoldot" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9" -dependencies = [ - "arrayvec 0.7.6", - "async-lock", - "atomic-take", - "base64 0.21.7", - "bip39", - "blake2-rfc", - "bs58", - "chacha20", - "crossbeam-queue", - "derive_more 0.99.18", - "ed25519-zebra 4.0.3", - "either", - "event-listener 4.0.3", - "fnv", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "hmac 0.12.1", - "itertools 0.12.1", - "libm", - "libsecp256k1", - "merlin", - "no-std-net", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", - "pin-project", - "poly1305", - "rand", - "rand_chacha", - "ruzstd 0.5.0", - "schnorrkel", - "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "siphasher", - "slab", - "smallvec", - "soketto 0.7.1", - "twox-hash", - "wasmi 0.31.2", - "x25519-dalek", - "zeroize", + "async-channel", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", + "blocking", + "futures-lite", ] [[package]] name = "smoldot" -version = "0.18.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9" dependencies = [ "arrayvec 0.7.6", "async-lock", "atomic-take", - "base64 0.22.1", + "base64 0.21.7", "bip39", "blake2-rfc", "bs58", "chacha20", "crossbeam-queue", - "derive_more 0.99.18", + "derive_more", "ed25519-zebra 4.0.3", "either", - "event-listener 5.3.1", + "event-listener 4.0.3", "fnv", "futures-lite", "futures-util", "hashbrown 0.14.5", "hex", "hmac 0.12.1", - "itertools 0.13.0", + "itertools 0.12.1", "libm", "libsecp256k1", "merlin", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", - "pin-project", - "poly1305", - "rand", - "rand_chacha", - "ruzstd 0.6.0", - "schnorrkel", - "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "siphasher", - "slab", - "smallvec", - "soketto 0.8.0", - "twox-hash", - "wasmi 0.32.3", - "x25519-dalek", - "zeroize", -] - -[[package]] -name = "smoldot-light" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7" -dependencies = [ - "async-channel", - "async-lock", - "base64 0.21.7", - "blake2-rfc", - "derive_more 0.99.18", - "either", - "event-listener 4.0.3", - "fnv", - "futures-channel", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "itertools 0.12.1", - "log", - "lru 0.12.5", "no-std-net", - "parking_lot", - "pin-project", - "rand", - "rand_chacha", - "serde", - "serde_json", - "siphasher", - "slab", - "smol", - "smoldot 0.16.0", - "zeroize", -] - -[[package]] -name = "smoldot-light" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" -dependencies = [ - "async-channel", - "async-lock", - "base64 0.22.1", - "blake2-rfc", - "bs58", - "derive_more 0.99.18", - "either", - "event-listener 5.3.1", - "fnv", - "futures-channel", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "itertools 0.13.0", - "log", - "lru 0.12.5", - "parking_lot", - "pin-project", - "rand", - "rand_chacha", - "serde", - "serde_json", - "siphasher", - "slab", - "smol", - "smoldot 0.18.0", - "zeroize", -] - -[[package]] -name = "snowbridge-amcl" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" -dependencies = [ - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "snowbridge-beacon-primitives" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10bd720997e558beb556d354238fa90781deb38241cf31c1b6368738ef21c279" -dependencies = [ - "byte-slice-cast", - "frame-support", - "hex", - "parity-scale-codec", - "rlp", - "scale-info", - "serde", - "snowbridge-ethereum", - "snowbridge-milagro-bls", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "ssz_rs", - "ssz_rs_derive", -] - -[[package]] -name = "snowbridge-core" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6be61e4db95d1e253a1d5e722953b2d2f6605e5f9761f0a919e5d3fbdbff9da9" -dependencies = [ - "ethabi-decode", - "frame-support", - "frame-system", - "hex-literal", - "parity-scale-codec", - "polkadot-parachain-primitives", - "scale-info", - "serde", - "snowbridge-beacon-primitives", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-builder", -] - -[[package]] -name = "snowbridge-ethereum" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc3d6d549c57df27cf89ec852f932fa4008eea877a6911a87e03e8002104eabd" -dependencies = [ - "ethabi-decode", - "ethbloom", - "ethereum-types", - "hex-literal", - "parity-bytes", - "parity-scale-codec", - "rlp", - "scale-info", - "serde", - "serde-big-array", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "snowbridge-milagro-bls" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "026aa8638f690a53e3f7676024b9e913b1cab0111d1b7b92669d40a188f9d7e6" -dependencies = [ - "hex", - "lazy_static", - "parity-scale-codec", - "rand", - "scale-info", - "snowbridge-amcl", - "zeroize", -] - -[[package]] -name = "snowbridge-outbound-queue-merkle-tree" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c6a9b65fa61711b704f0c6afb3663c6288288e8822ddae5cc1146fe3ad9ce8" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "snowbridge-outbound-queue-runtime-api" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d27b8d9cb8022637a5ce4f52692520fa75874f393e04ef5cd75bd8795087f6" -dependencies = [ - "frame-support", - "parity-scale-codec", - "snowbridge-core", - "snowbridge-outbound-queue-merkle-tree", - "sp-api", - "sp-std", -] - -[[package]] -name = "snowbridge-pallet-ethereum-client" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d53d32d8470c643f9f8c1f508e1e34263f76297e4c9150e10e8f2e0b63992e1" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-timestamp", - "parity-scale-codec", - "scale-info", - "serde", - "snowbridge-beacon-primitives", - "snowbridge-core", - "snowbridge-ethereum", - "snowbridge-pallet-ethereum-client-fixtures", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "static_assertions", -] - -[[package]] -name = "snowbridge-pallet-ethereum-client-fixtures" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3984b98465af1d862d4e87ba783e1731f2a3f851b148d6cb98d526cebd351185" -dependencies = [ - "hex-literal", - "snowbridge-beacon-primitives", - "snowbridge-core", - "sp-core 34.0.0", - "sp-std", -] - -[[package]] -name = "snowbridge-pallet-inbound-queue" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2e6a9d00e60e3744e6b6f0c21fea6694b9c6401ac40e41340a96e561dcf1935" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "serde", - "snowbridge-beacon-primitives", - "snowbridge-core", - "snowbridge-pallet-inbound-queue-fixtures", - "snowbridge-router-primitives", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-executor", -] - -[[package]] -name = "snowbridge-pallet-inbound-queue-fixtures" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b099db83f4c10c0bf84e87deb1596019f91411ea1c8c9733ea9a7f2e7e967073" -dependencies = [ - "hex-literal", - "snowbridge-beacon-primitives", - "snowbridge-core", - "sp-core 34.0.0", - "sp-std", -] - -[[package]] -name = "snowbridge-pallet-outbound-queue" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d49478041b6512c710d0d4655675d146fe00a8e0c1624e5d8a1d6c161d490f" -dependencies = [ - "bridge-hub-common", - "ethabi-decode", - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "serde", - "snowbridge-core", - "snowbridge-outbound-queue-merkle-tree", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "snowbridge-pallet-system" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "674db59b3c8013382e5c07243ad9439b64d81d2e8b3c4f08d752b55aa5de697e" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "snowbridge-core", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-executor", -] - -[[package]] -name = "snowbridge-router-primitives" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025f1e6805753821b1db539369f1fb183fd59fd5df7023f7633a4c0cfd3e62f9" -dependencies = [ - "frame-support", - "hex-literal", - "log", - "parity-scale-codec", - "scale-info", - "snowbridge-core", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-executor", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.7.1", + "twox-hash", + "wasmi", + "x25519-dalek", + "zeroize", ] [[package]] -name = "snowbridge-runtime-common" -version = "0.10.0" +name = "smoldot-light" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093f0e73d6cfdd2eea8712155d1d75b5063fc9b1d854d2665b097b4bb29570d" +checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7" dependencies = [ - "frame-support", + "async-channel", + "async-lock", + "base64 0.21.7", + "blake2-rfc", + "derive_more", + "either", + "event-listener 4.0.3", + "fnv", + "futures-channel", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "itertools 0.12.1", "log", - "parity-scale-codec", - "snowbridge-core", - "sp-arithmetic 26.0.0", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", -] - -[[package]] -name = "snowbridge-runtime-test-common" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "893480d6cde2489051c65efb5d27fa87efe047b3b61216d8e27bb2f0509b7faf" -dependencies = [ - "cumulus-pallet-parachain-system", - "frame-support", - "frame-system", - "pallet-balances", - "pallet-collator-selection", - "pallet-message-queue", - "pallet-session", - "pallet-timestamp", - "pallet-utility", - "pallet-xcm", - "parachains-runtimes-test-utils", - "parity-scale-codec", - "snowbridge-core", - "snowbridge-pallet-ethereum-client", - "snowbridge-pallet-ethereum-client-fixtures", - "snowbridge-pallet-outbound-queue", - "snowbridge-pallet-system", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-keyring", - "sp-runtime 39.0.2", - "staging-parachain-info", - "staging-xcm 14.2.0", - "staging-xcm-executor", -] - -[[package]] -name = "snowbridge-system-runtime-api" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b8b83b3db781c49844312a23965073e4d93341739a35eafe526c53b578d3b7" -dependencies = [ - "parity-scale-codec", - "snowbridge-core", - "sp-api", - "sp-std", - "staging-xcm 14.2.0", + "lru", + "no-std-net", + "parking_lot", + "pin-project", + "rand", + "rand_chacha", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot", + "zeroize", ] [[package]] @@ -12239,71 +6488,20 @@ dependencies = [ "sha1", ] -[[package]] -name = "sp-api" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbce492e0482134128b7729ea36f5ef1a9f9b4de2d48ff8dde7b5e464e28ce75" -dependencies = [ - "docify", - "hash-db", - "log", - "parity-scale-codec", - "scale-info", - "sp-api-proc-macro", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "sp-metadata-ir", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "sp-state-machine 0.43.0", - "sp-trie 37.0.0", - "sp-version", - "thiserror 1.0.69", -] - -[[package]] -name = "sp-api-proc-macro" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9aadf9e97e694f0e343978aa632938c5de309cbcc8afed4136cb71596737278" -dependencies = [ - "Inflector", - "blake2", - "expander", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "sp-application-crypto" -version = "34.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505fad69251900048ddddc6387265e1545d1a366e3b4dcd57b76a03f0a65ae7" +checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 32.0.0", - "sp-io 34.0.0", + "sp-core", + "sp-io", "sp-std", ] -[[package]] -name = "sp-application-crypto" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", -] - [[package]] name = "sp-arithmetic" version = "25.0.0" @@ -12313,251 +6511,17 @@ dependencies = [ "integer-sqrt", "num-traits", "parity-scale-codec", - "scale-info", - "serde", - "sp-std", - "static_assertions", -] - -[[package]] -name = "sp-arithmetic" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d0d0a4c591c421d3231ddd5e27d828618c24456d51445d21a1f79fcee97c23" -dependencies = [ - "docify", - "integer-sqrt", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-std", - "static_assertions", -] - -[[package]] -name = "sp-authority-discovery" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "519c33af0e25ba2dd2eb3790dc404d634b6e4ce0801bcc8fa3574e07c365e734" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-block-builder" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74738809461e3d4bd707b5b94e0e0c064a623a74a6a8fe5c98514417a02858dd" -dependencies = [ - "sp-api", - "sp-inherents", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-consensus-aura" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a8faaa05bbcb9c41f0cc535c4c1315abf6df472b53eae018678d1b4d811ac47" -dependencies = [ - "async-trait", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-consensus-slots", - "sp-inherents", - "sp-runtime 39.0.2", - "sp-timestamp", -] - -[[package]] -name = "sp-consensus-babe" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36ee95e17ee8dcd14db7d584b899a426565ca9abe5a266ab82277977fc547f86" -dependencies = [ - "async-trait", - "parity-scale-codec", - "scale-info", - "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-consensus-slots", - "sp-core 34.0.0", - "sp-inherents", - "sp-runtime 39.0.2", - "sp-timestamp", -] - -[[package]] -name = "sp-consensus-beefy" -version = "22.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d97e8cd75d85d15cda6f1923cf3834e848f80d5a6de1cf4edbbc5f0ad607eb" -dependencies = [ - "lazy_static", - "parity-scale-codec", - "scale-info", - "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-io 38.0.0", - "sp-keystore 0.40.0", - "sp-mmr-primitives", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", - "strum 0.26.3", -] - -[[package]] -name = "sp-consensus-grandpa" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "587b791efe6c5f18e09dbbaf1ece0ee7b5fe51602c233e7151a3676b0de0260b" -dependencies = [ - "finality-grandpa", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-keystore 0.40.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-consensus-pow" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa6b7d199a1c16cea1b74ee7cee174bf08f2120ab66a87bee7b12353100b47c" -dependencies = [ - "parity-scale-codec", - "sp-api", - "sp-core 34.0.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-consensus-slots" -version = "0.40.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbafb7ed44f51c22fa277fb39b33dc601fa426133a8e2b53f3f46b10f07fba43" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-timestamp", -] - -[[package]] -name = "sp-core" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" -dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra 3.1.0", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde 0.4.0", - "itertools 0.10.5", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types 0.12.2", - "rand", - "scale-info", - "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.27.0", - "sp-runtime-interface 26.0.0", - "sp-std", - "sp-storage 20.0.0", - "ss58-registry", - "substrate-bip39 0.5.0", - "thiserror 1.0.69", - "tracing", - "w3f-bls", - "zeroize", -] - -[[package]] -name = "sp-core" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2dac7e47c7ddbb61efe196d5cce99f6ea88926c961fa39909bfeae46fc5a7b" -dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra 3.1.0", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde 0.4.0", - "itertools 0.10.5", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types 0.12.2", - "rand", - "scale-info", - "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.28.0", - "sp-runtime-interface 27.0.0", - "sp-std", - "sp-storage 21.0.0", - "ss58-registry", - "substrate-bip39 0.6.0", - "thiserror 1.0.69", - "tracing", - "w3f-bls", - "zeroize", + "scale-info", + "serde", + "sp-std", + "static_assertions", ] [[package]] name = "sp-core" -version = "34.0.0" +version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" +checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -12565,12 +6529,12 @@ dependencies = [ "bounded-collections", "bs58", "dyn-clonable", - "ed25519-zebra 4.0.3", + "ed25519-zebra 3.1.0", "futures", "hash-db", "hash256-std-hasher", - "impl-serde 0.4.0", - "itertools 0.11.0", + "impl-serde", + "itertools 0.10.5", "k256", "libsecp256k1", "log", @@ -12579,57 +6543,27 @@ dependencies = [ "parity-scale-codec", "parking_lot", "paste", - "primitive-types 0.12.2", + "primitive-types", "rand", "scale-info", "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", + "secp256k1", + "secrecy", "serde", "sp-crypto-hashing", "sp-debug-derive", - "sp-externalities 0.29.0", - "sp-runtime-interface 28.0.0", + "sp-externalities", + "sp-runtime-interface", "sp-std", - "sp-storage 21.0.0", + "sp-storage", "ss58-registry", - "substrate-bip39 0.6.0", - "thiserror 1.0.69", + "substrate-bip39", + "thiserror", "tracing", "w3f-bls", "zeroize", ] -[[package]] -name = "sp-core-hashing" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f812cb2dff962eb378c507612a50f1c59f52d92eb97b710f35be3c2346a3cd7" -dependencies = [ - "sp-crypto-hashing", -] - -[[package]] -name = "sp-crypto-ec-utils" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acb24f8a607a48a87f0ee4c090fc5d577eee49ff39ced6a3c491e06eca03c37" -dependencies = [ - "ark-bls12-377", - "ark-bls12-377-ext", - "ark-bls12-381", - "ark-bls12-381-ext", - "ark-bw6-761", - "ark-bw6-761-ext", - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ed-on-bls12-377-ext", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ed-on-bls12-381-bandersnatch-ext", - "ark-scale", - "sp-runtime-interface 28.0.0", -] - [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -12644,17 +6578,6 @@ dependencies = [ "twox-hash", ] -[[package]] -name = "sp-crypto-hashing-proc-macro" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b85d0f1f1e44bd8617eb2a48203ee854981229e3e79e6f468c7175d5fd37489b" -dependencies = [ - "quote", - "sp-crypto-hashing", - "syn 2.0.89", -] - [[package]] name = "sp-debug-derive" version = "14.0.0" @@ -12663,7 +6586,7 @@ checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -12675,63 +6598,14 @@ dependencies = [ "environmental", "parity-scale-codec", "sp-std", - "sp-storage 20.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-storage 21.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a904407d61cb94228c71b55a9d3708e9d6558991f9e83bd42bd91df37a159d30" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-storage 21.0.0", -] - -[[package]] -name = "sp-genesis-builder" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a646ed222fd86d5680faa4a8967980eb32f644cae6c8523e1c689a6deda3e8" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde_json", - "sp-api", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-inherents" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afffbddc380d99a90c459ba1554bbbc01d62e892de9f1485af6940b89c4c0d57" -dependencies = [ - "async-trait", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "thiserror 1.0.69", + "sp-storage", ] [[package]] name = "sp-io" -version = "34.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44ed47247b6eee76ff703f9fa9f04f99c4104ac1faf629e6d1128e09066b57b" +checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" dependencies = [ "bytes", "ed25519-dalek", @@ -12740,364 +6614,107 @@ dependencies = [ "parity-scale-codec", "polkavm-derive 0.9.1", "rustversion", - "secp256k1 0.28.2", - "sp-core 32.0.0", + "secp256k1", + "sp-core", "sp-crypto-hashing", - "sp-externalities 0.28.0", - "sp-keystore 0.38.0", - "sp-runtime-interface 27.0.0", - "sp-state-machine 0.39.0", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", "sp-std", - "sp-tracing 17.0.1", - "sp-trie 33.0.0", - "tracing", - "tracing-core", -] - -[[package]] -name = "sp-io" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" -dependencies = [ - "bytes", - "docify", - "ed25519-dalek", - "libsecp256k1", - "log", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "rustversion", - "secp256k1 0.28.2", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-externalities 0.29.0", - "sp-keystore 0.40.0", - "sp-runtime-interface 28.0.0", - "sp-state-machine 0.43.0", - "sp-tracing 17.0.1", - "sp-trie 37.0.0", + "sp-tracing", + "sp-trie", "tracing", "tracing-core", ] -[[package]] -name = "sp-keyring" -version = "39.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" -dependencies = [ - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "strum 0.26.3", -] - -[[package]] -name = "sp-keystore" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" -dependencies = [ - "parity-scale-codec", - "parking_lot", - "sp-core 32.0.0", - "sp-externalities 0.28.0", -] - [[package]] name = "sp-keystore" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0248b4d784cb4a01472276928977121fa39d977a5bb24793b6b15e64b046df42" -dependencies = [ - "parity-scale-codec", - "parking_lot", - "sp-core 34.0.0", - "sp-externalities 0.29.0", -] - -[[package]] -name = "sp-maybe-compressed-blob" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c768c11afbe698a090386876911da4236af199cd38a5866748df4d8628aeff" -dependencies = [ - "thiserror 1.0.69", - "zstd 0.12.4", -] - -[[package]] -name = "sp-metadata-ir" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a616fa51350b35326682a472ee8e6ba742fdacb18babac38ecd46b3e05ead869" -dependencies = [ - "frame-metadata 16.0.0", - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "sp-mixnet" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0b017dd54823b6e62f9f7171a1df350972e5c6d0bf17e0c2f78680b5c31942" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-application-crypto 38.0.0", -] - -[[package]] -name = "sp-mmr-primitives" -version = "34.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a12dd76e368f1e48144a84b4735218b712f84b3f976970e2f25a29b30440e10" -dependencies = [ - "log", - "parity-scale-codec", - "polkadot-ckb-merkle-mountain-range", - "scale-info", - "serde", - "sp-api", - "sp-core 34.0.0", - "sp-debug-derive", - "sp-runtime 39.0.2", - "thiserror 1.0.69", -] - -[[package]] -name = "sp-npos-elections" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af922f112c7c1ed199eabe14f12a82ceb75e1adf0804870eccfbcf3399492847" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-offchain" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d9de237d72ecffd07f90826eef18360208b16d8de939d54e61591fac0fcbf99" -dependencies = [ - "sp-api", - "sp-core 34.0.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-panic-handler" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f5a17a0a11de029a8b811cb6e8b32ce7e02183cc04a3e965c383246798c416" -dependencies = [ - "backtrace", - "lazy_static", - "regex", -] - -[[package]] -name = "sp-runtime" -version = "35.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ce931b7fbfdeeca1340801dbd4a1cae54ad4c97a1e3dcfcc79709bc800dd46" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 34.0.0", - "sp-arithmetic 26.0.0", - "sp-core 32.0.0", - "sp-io 34.0.0", - "sp-std", - "sp-weights 31.0.0", -] - -[[package]] -name = "sp-runtime" -version = "39.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "num-traits", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "sp-weights 31.0.0", - "tracing", -] - -[[package]] -name = "sp-runtime-interface" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.8.0", - "primitive-types 0.12.2", - "sp-externalities 0.27.0", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage 20.0.0", - "sp-tracing 16.0.0", - "sp-wasm-interface 20.0.0", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "647db5e1dc481686628b41554e832df6ab400c4b43a6a54e54d3b0a71ca404aa" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types 0.12.2", - "sp-externalities 0.28.0", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage 21.0.0", - "sp-tracing 17.0.1", - "sp-wasm-interface 21.0.1", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface" -version = "28.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types 0.12.2", - "sp-externalities 0.29.0", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage 21.0.0", - "sp-tracing 17.0.1", - "sp-wasm-interface 21.0.1", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" -dependencies = [ - "Inflector", - "expander", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.89", +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core", + "sp-externalities", ] [[package]] -name = "sp-session" -version = "36.0.0" +name = "sp-panic-handler" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00a3a307fedc423fb8cd2a7726a3bbb99014f1b4b52f26153993e2aae3338fe6" +checksum = "d8f5a17a0a11de029a8b811cb6e8b32ce7e02183cc04a3e965c383246798c416" dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-core 34.0.0", - "sp-keystore 0.40.0", - "sp-runtime 39.0.2", - "sp-staking 36.0.0", + "backtrace", + "lazy_static", + "regex", ] [[package]] -name = "sp-staking" +name = "sp-runtime" version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143a764cacbab58347d8b2fd4c8909031fb0888d7b02a0ec9fa44f81f780d732" +checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" dependencies = [ + "docify", + "either", + "hash256-std-hasher", "impl-trait-for-tuples", + "log", "parity-scale-codec", + "paste", + "rand", "scale-info", "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "simple-mermaid", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-std", + "sp-weights", ] [[package]] -name = "sp-staking" -version = "36.0.0" +name = "sp-runtime-interface" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a73eedb4b85f4cd420d31764827546aa22f82ce1646d0fd258993d051de7a90" +checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" dependencies = [ + "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", + "polkavm-derive 0.8.0", + "primitive-types", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", + "static_assertions", ] [[package]] -name = "sp-state-machine" -version = "0.39.0" +name = "sp-runtime-interface-proc-macro" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21d9078306c3066f1824e41153e1ceec34231d39d9a7e7956b101eadf7b9fd3a" +checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot", - "rand", - "smallvec", - "sp-core 32.0.0", - "sp-externalities 0.28.0", - "sp-panic-handler", - "sp-trie 33.0.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.28.0", + "Inflector", + "expander", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] name = "sp-state-machine" -version = "0.43.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930104d6ae882626e8880d9b1578da9300655d337a3ffb45e130c608b6c89660" +checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" dependencies = [ "hash-db", "log", @@ -13105,38 +6722,14 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 34.0.0", - "sp-externalities 0.29.0", + "sp-core", + "sp-externalities", "sp-panic-handler", - "sp-trie 37.0.0", - "thiserror 1.0.69", + "sp-std", + "sp-trie", + "thiserror", "tracing", - "trie-db 0.29.1", -] - -[[package]] -name = "sp-statement-store" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c219bc34ef4d1f9835f3ed881f965643c32034fcc030eb33b759dadbc802c1c2" -dependencies = [ - "aes-gcm", - "curve25519-dalek 4.1.3", - "ed25519-dalek", - "hkdf", - "parity-scale-codec", - "rand", - "scale-info", - "sha2 0.10.8", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-externalities 0.29.0", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "thiserror 1.0.69", - "x25519-dalek", + "trie-db", ] [[package]] @@ -13151,7 +6744,7 @@ version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" dependencies = [ - "impl-serde 0.4.0", + "impl-serde", "parity-scale-codec", "ref-cast", "serde", @@ -13159,32 +6752,6 @@ dependencies = [ "sp-std", ] -[[package]] -name = "sp-storage" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c82989b3a4979a7e1ad848aad9f5d0b4388f1f454cc131766526601ab9e8f8" -dependencies = [ - "impl-serde 0.4.0", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive", -] - -[[package]] -name = "sp-timestamp" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a1cb4df653d62ccc0dbce1db45d1c9443ec60247ee9576962d24da4c9c6f07" -dependencies = [ - "async-trait", - "parity-scale-codec", - "sp-inherents", - "sp-runtime 39.0.2", - "thiserror 1.0.69", -] - [[package]] name = "sp-tracing" version = "16.0.0" @@ -13195,75 +6762,14 @@ dependencies = [ "sp-std", "tracing", "tracing-core", - "tracing-subscriber 0.2.25", -] - -[[package]] -name = "sp-tracing" -version = "17.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf641a1d17268c8fcfdb8e0fa51a79c2d4222f4cfda5f3944dbdbc384dced8d5" -dependencies = [ - "parity-scale-codec", - "tracing", - "tracing-core", - "tracing-subscriber 0.3.18", -] - -[[package]] -name = "sp-transaction-pool" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4bf251059485a7dd38fe4afeda8792983511cc47f342ff4695e2dcae6b5247" -dependencies = [ - "sp-api", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-transaction-storage-proof" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c765c2e9817d95f13d42a9f2295c60723464669765c6e5acbacebd2f54932f67" -dependencies = [ - "async-trait", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-inherents", - "sp-runtime 39.0.2", - "sp-trie 37.0.0", -] - -[[package]] -name = "sp-trie" -version = "33.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f5b3620a1c87c265a83d85d7519c6b60c47acf7f77593966afe313d086f00e" -dependencies = [ - "ahash 0.8.11", - "hash-db", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot", - "rand", - "scale-info", - "schnellru", - "sp-core 32.0.0", - "sp-externalities 0.28.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.28.0", - "trie-root", + "tracing-subscriber", ] [[package]] name = "sp-trie" -version = "37.0.0" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6282aef9f4b6ecd95a67a45bcdb67a71f4a4155c09a53c10add4ffe823db18cd" +checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" dependencies = [ "ahash 0.8.11", "hash-db", @@ -13275,44 +6781,15 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "thiserror 1.0.69", + "sp-core", + "sp-externalities", + "sp-std", + "thiserror", "tracing", - "trie-db 0.29.1", + "trie-db", "trie-root", ] -[[package]] -name = "sp-version" -version = "37.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d521a405707b5be561367cd3d442ff67588993de24062ce3adefcf8437ee9fe1" -dependencies = [ - "impl-serde 0.4.0", - "parity-scale-codec", - "parity-wasm", - "scale-info", - "serde", - "sp-crypto-hashing-proc-macro", - "sp-runtime 39.0.2", - "sp-std", - "sp-version-proc-macro", - "thiserror 1.0.69", -] - -[[package]] -name = "sp-version-proc-macro" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aee8f6730641a65fcf0c8f9b1e448af4b3bb083d08058b47528188bccc7b7a7" -dependencies = [ - "parity-scale-codec", - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "sp-wasm-interface" version = "20.0.0" @@ -13327,19 +6804,6 @@ dependencies = [ "wasmtime", ] -[[package]] -name = "sp-wasm-interface" -version = "21.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "wasmtime", -] - [[package]] name = "sp-weights" version = "30.0.0" @@ -13351,26 +6815,11 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 25.0.0", + "sp-arithmetic", "sp-debug-derive", "sp-std", ] -[[package]] -name = "sp-weights" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" -dependencies = [ - "bounded-collections", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 26.0.0", - "sp-debug-derive", -] - [[package]] name = "spin" version = "0.9.8" @@ -13389,9 +6838,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.51.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" +checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" dependencies = [ "Inflector", "num-format", @@ -13402,148 +6851,17 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "ssz_rs" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" -dependencies = [ - "bitvec", - "num-bigint", - "sha2 0.9.9", - "ssz_rs_derive", -] - -[[package]] -name = "ssz_rs_derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "staging-parachain-info" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d28266dfddbfff721d70ad2f873380845b569adfab32f257cf97d9cedd894b68" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", -] - -[[package]] -name = "staging-xcm" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aded0292274ad473250c22ed3deaf2d9ed47d15786d700e9e83ab7c1cad2ad44" -dependencies = [ - "array-bytes", - "bounded-collections", - "derivative", - "environmental", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-weights 31.0.0", - "xcm-procedural 8.0.0", -] - -[[package]] -name = "staging-xcm" -version = "14.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bee7cd999e9cdf10f8db72342070d456e21e82a0f5962ff3b87edbd5f2b20e" -dependencies = [ - "array-bytes", - "bounded-collections", - "derivative", - "environmental", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", - "xcm-procedural 10.1.0", -] - -[[package]] -name = "staging-xcm-builder" -version = "17.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3746adbbae27b1e6763f0cca622e15482ebcb94835a9e078c212dd7be896e35" -dependencies = [ - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-asset-conversion", - "pallet-transaction-payment", - "parity-scale-codec", - "polkadot-parachain-primitives", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", - "staging-xcm 14.2.0", - "staging-xcm-executor", -] - -[[package]] -name = "staging-xcm-executor" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79dd0c5332a5318e58f0300b20768b71cf9427c906f94a743c9dc7c3ee9e7fa9" -dependencies = [ - "environmental", - "frame-benchmarking", - "frame-support", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", - "staging-xcm 14.2.0", - "tracing", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "string-interner" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" -dependencies = [ - "cfg-if", - "hashbrown 0.14.5", - "serde", -] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strsim" @@ -13595,7 +6913,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -13611,40 +6929,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "substrate-bip39" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" -dependencies = [ - "hmac 0.12.1", - "pbkdf2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - -[[package]] -name = "substrate-wasm-builder" -version = "24.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf035ffe7335fb24053edfe4d0a5780250eda772082a1b80ae25835dd4c09265" -dependencies = [ - "build-helper", - "cargo_metadata 0.15.4", - "console", - "filetime", - "jobserver", - "parity-wasm", - "polkavm-linker 0.9.2", - "sp-maybe-compressed-blob", - "strum 0.26.3", - "tempfile", - "toml 0.8.19", - "walkdir", - "wasm-opt", -] - [[package]] name = "subtle" version = "2.6.1" @@ -13663,65 +6947,28 @@ dependencies = [ "frame-metadata 16.0.0", "futures", "hex", - "impl-serde 0.4.0", + "impl-serde", "instant", "jsonrpsee 0.22.5", "parity-scale-codec", - "primitive-types 0.12.2", + "primitive-types", "reconnecting-jsonrpsee-ws-client", "scale-bits 0.6.0", "scale-decode 0.13.1", - "scale-encode 0.7.2", + "scale-encode 0.7.1", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde", "serde_json", "sp-crypto-hashing", - "subxt-core 0.37.1", - "subxt-lightclient 0.37.0", - "subxt-macro 0.37.0", - "subxt-metadata 0.37.0", - "thiserror 1.0.69", - "tokio-util", - "tracing", - "url", -] - -[[package]] -name = "subxt" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" -dependencies = [ - "async-trait", - "derive-where", - "either", - "frame-metadata 17.0.0", - "futures", - "hex", - "impl-serde 0.5.0", - "jsonrpsee 0.24.7", - "parity-scale-codec", - "polkadot-sdk", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", - "scale-value 0.17.0", - "serde", - "serde_json", - "subxt-core 0.38.0", - "subxt-lightclient 0.38.0", - "subxt-macro 0.38.0", - "subxt-metadata 0.38.0", - "thiserror 1.0.69", - "tokio", + "subxt-core", + "subxt-lightclient", + "subxt-macro", + "subxt-metadata", + "thiserror", "tokio-util", "tracing", "url", - "wasm-bindgen-futures", - "web-time", ] [[package]] @@ -13738,35 +6985,18 @@ dependencies = [ "proc-macro2", "quote", "scale-info", - "scale-typegen 0.8.0", - "subxt-metadata 0.37.0", - "syn 2.0.89", - "thiserror 1.0.69", + "scale-typegen", + "subxt-metadata", + "syn 2.0.77", + "thiserror", "tokio", ] -[[package]] -name = "subxt-codegen" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cfcfb7d9589f3df0ac87c4988661cf3fb370761fcb19f2fd33104cc59daf22a" -dependencies = [ - "heck 0.5.0", - "parity-scale-codec", - "proc-macro2", - "quote", - "scale-info", - "scale-typegen 0.9.0", - "subxt-metadata 0.38.0", - "syn 2.0.89", - "thiserror 1.0.69", -] - [[package]] name = "subxt-core" -version = "0.37.1" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af3b36405538a36b424d229dc908d1396ceb0994c90825ce928709eac1a159a" +checksum = "59f41eb2e2eea6ed45649508cc735f92c27f1fcfb15229e75f8270ea73177345" dependencies = [ "base58", "blake2", @@ -13774,47 +7004,20 @@ dependencies = [ "frame-metadata 16.0.0", "hashbrown 0.14.5", "hex", - "impl-serde 0.4.0", + "impl-serde", "parity-scale-codec", - "primitive-types 0.12.2", + "primitive-types", "scale-bits 0.6.0", "scale-decode 0.13.1", - "scale-encode 0.7.2", + "scale-encode 0.7.1", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde", "serde_json", + "sp-core", "sp-crypto-hashing", - "subxt-metadata 0.37.0", - "tracing", -] - -[[package]] -name = "subxt-core" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea28114366780d23684bd55ab879cd04c9d4cbba3b727a3854a3eca6bf29a1a" -dependencies = [ - "base58", - "blake2", - "derive-where", - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "hex", - "impl-serde 0.5.0", - "keccak-hash", - "parity-scale-codec", - "polkadot-sdk", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", - "scale-value 0.17.0", - "serde", - "serde_json", - "subxt-metadata 0.38.0", + "sp-runtime", + "subxt-metadata", "tracing", ] @@ -13828,25 +7031,8 @@ dependencies = [ "futures-util", "serde", "serde_json", - "smoldot-light 0.14.0", - "thiserror 1.0.69", - "tokio", - "tokio-stream", - "tracing", -] - -[[package]] -name = "subxt-lightclient" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534d4b725183a9fa09ce0e0f135674473297fdd97dee4d683f41117f365ae997" -dependencies = [ - "futures", - "futures-util", - "serde", - "serde_json", - "smoldot-light 0.16.2", - "thiserror 1.0.69", + "smoldot-light", + "thiserror", "tokio", "tokio-stream", "tracing", @@ -13862,25 +7048,9 @@ dependencies = [ "parity-scale-codec", "proc-macro-error", "quote", - "scale-typegen 0.8.0", - "subxt-codegen 0.37.0", - "syn 2.0.89", -] - -[[package]] -name = "subxt-macro" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228db9a5c95a6d8dc6152b4d6cdcbabc4f60821dd3f482a4f8791e022b7caadb" -dependencies = [ - "darling 0.20.10", - "parity-scale-codec", - "proc-macro-error2", - "quote", - "scale-typegen 0.9.0", - "subxt-codegen 0.38.0", - "subxt-utils-fetchmetadata", - "syn 2.0.89", + "scale-typegen", + "subxt-codegen", + "syn 2.0.77", ] [[package]] @@ -13896,20 +7066,6 @@ dependencies = [ "sp-crypto-hashing", ] -[[package]] -name = "subxt-metadata" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" -dependencies = [ - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "parity-scale-codec", - "polkadot-sdk", - "scale-info", -] - [[package]] name = "subxt-signer" version = "0.37.0" @@ -13924,52 +7080,14 @@ dependencies = [ "pbkdf2", "regex", "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", + "secp256k1", + "secrecy", "sha2 0.10.8", "sp-crypto-hashing", - "subxt-core 0.37.1", - "zeroize", -] - -[[package]] -name = "subxt-signer" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7a336d6a1f86f126100a4a717be58352de4c8214300c4f7807f974494efdb9" -dependencies = [ - "base64 0.22.1", - "bip39", - "cfg-if", - "crypto_secretbox", - "hex", - "hmac 0.12.1", - "parity-scale-codec", - "pbkdf2", - "polkadot-sdk", - "regex", - "schnorrkel", - "scrypt", - "secp256k1 0.30.0", - "secrecy 0.10.3", - "serde", - "serde_json", - "sha2 0.10.8", - "subxt-core 0.38.0", + "subxt-core", "zeroize", ] -[[package]] -name = "subxt-utils-fetchmetadata" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3082b17a86e3c3fe45d858d94d68f6b5247caace193dad6201688f24db8ba9bb" -dependencies = [ - "hex", - "parity-scale-codec", - "thiserror 1.0.69", -] - [[package]] name = "symlink" version = "0.1.0" @@ -13989,9 +7107,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.89" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -13999,15 +7117,15 @@ dependencies = [ ] [[package]] -name = "syn-solidity" -version = "0.4.2" +name = "syn_derive" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" dependencies = [ - "paste", + "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -14018,36 +7136,13 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" dependencies = [ "futures-core", ] -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", -] - [[package]] name = "system-configuration" version = "0.5.1" @@ -14098,9 +7193,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.43" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -14115,14 +7210,14 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", "once_cell", - "rustix 0.38.41", + "rustix 0.38.36", "windows-sys 0.59.0", ] @@ -14151,22 +7246,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" -[[package]] -name = "testnet-parachains-constants" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bceae6f7c89d47daff6c7e05f712551a01379f61b07d494661941144878589" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "polkadot-core-primitives", - "rococo-runtime-constants", - "smallvec", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "westend-runtime-constants", -] - [[package]] name = "textwrap" version = "0.16.1" @@ -14175,47 +7254,27 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width 0.1.14", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", + "unicode-width", ] [[package]] name = "thiserror" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" -dependencies = [ - "thiserror-impl 2.0.3", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", + "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.3" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -14259,25 +7318,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" version = "1.8.0" @@ -14295,14 +7335,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", - "mio", + "mio 1.0.2", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -14329,7 +7369,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] @@ -14369,7 +7409,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.19", + "rustls 0.23.13", "rustls-pki-types", "tokio", ] @@ -14425,15 +7465,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -14455,7 +7486,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.22", + "toml_edit 0.22.20", ] [[package]] @@ -14473,7 +7504,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -14482,15 +7513,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.20", + "winnow 0.6.18", ] [[package]] @@ -14586,9 +7617,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", @@ -14598,20 +7629,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -14628,17 +7659,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-serde" version = "0.1.3" @@ -14658,7 +7678,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers 0.0.1", + "matchers", "regex", "serde", "serde_json", @@ -14667,29 +7687,10 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.1.4", + "tracing-log", "tracing-serde", ] -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "matchers 0.1.0", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "time", - "tracing", - "tracing-core", - "tracing-log 0.2.0", -] - [[package]] name = "trie-db" version = "0.28.0" @@ -14703,18 +7704,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "trie-db" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" -dependencies = [ - "hash-db", - "log", - "rustc-hex", - "smallvec", -] - [[package]] name = "trie-root" version = "0.18.0" @@ -14730,12 +7719,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tt-call" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" - [[package]] name = "tungstenite" version = "0.20.1" @@ -14750,16 +7733,10 @@ dependencies = [ "log", "rand", "sha1", - "thiserror 1.0.69", + "thiserror", "url", "utf-8", -] - -[[package]] -name = "tuplex" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" +] [[package]] name = "twox-hash" @@ -14781,9 +7758,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -14798,34 +7775,25 @@ dependencies = [ ] [[package]] -name = "uint" -version = "0.10.0" +name = "unicase" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", + "version_check", ] [[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicase" -version = "2.8.0" +name = "unicode-bidi" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-linebreak" @@ -14844,21 +7812,15 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-width" -version = "0.2.0" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.6" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "universal-hash" @@ -14882,12 +7844,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" -[[package]] -name = "unsigned-varint" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" - [[package]] name = "untrusted" version = "0.9.0" @@ -14896,9 +7852,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -14912,18 +7868,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -14932,9 +7876,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom", ] @@ -14975,15 +7919,15 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.8" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" +checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", + "ark-ff", + "ark-serialize", "ark-serialize-derive", "arrayref", "constcat", @@ -14993,7 +7937,7 @@ dependencies = [ "rand_core 0.6.4", "sha2 0.10.8", "sha3", - "thiserror 1.0.69", + "thiserror", "zeroize", ] @@ -15033,9 +7977,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", "once_cell", @@ -15044,24 +7988,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -15071,9 +8015,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -15081,40 +8025,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-encoder" -version = "0.220.0" +version = "0.207.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" +checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17" dependencies = [ "leb128", - "wasmparser 0.220.0", -] - -[[package]] -name = "wasm-instrument" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" -dependencies = [ - "parity-wasm", + "wasmparser 0.207.0", ] [[package]] @@ -15128,7 +8063,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror 1.0.69", + "thiserror", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -15166,24 +8101,7 @@ dependencies = [ "smallvec", "spin", "wasmi_arena", - "wasmi_core 0.13.0", - "wasmparser-nostd", -] - -[[package]] -name = "wasmi" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50386c99b9c32bd2ed71a55b6dd4040af2580530fae8bdb9a6576571a80d0cca" -dependencies = [ - "arrayvec 0.7.6", - "multi-stash", - "num-derive", - "num-traits", - "smallvec", - "spin", - "wasmi_collections", - "wasmi_core 0.32.3", + "wasmi_core", "wasmparser-nostd", ] @@ -15193,17 +8111,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" -[[package]] -name = "wasmi_collections" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" -dependencies = [ - "ahash 0.8.11", - "hashbrown 0.14.5", - "string-interner", -] - [[package]] name = "wasmi_core" version = "0.13.0" @@ -15216,18 +8123,6 @@ dependencies = [ "paste", ] -[[package]] -name = "wasmi_core" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" -dependencies = [ - "downcast-rs", - "libm", - "num-traits", - "paste", -] - [[package]] name = "wasmparser" version = "0.102.0" @@ -15240,16 +8135,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.220.0" +version = "0.207.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" +checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", "hashbrown 0.14.5", - "indexmap 2.6.0", - "semver 1.0.23", - "serde", + "indexmap 2.5.0", + "semver", ] [[package]] @@ -15277,12 +8171,9 @@ dependencies = [ "once_cell", "paste", "psm", - "rayon", "serde", "target-lexicon", "wasmparser 0.102.0", - "wasmtime-cache", - "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -15298,63 +8189,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "wasmtime-cache" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" -dependencies = [ - "anyhow", - "base64 0.21.7", - "bincode", - "directories-next", - "file-per-thread-logger", - "log", - "rustix 0.36.17", - "serde", - "sha2 0.10.8", - "toml 0.5.11", - "windows-sys 0.45.0", - "zstd 0.11.2+zstd.1.5.2", -] - -[[package]] -name = "wasmtime-cranelift" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "gimli 0.27.3", - "log", - "object 0.30.4", - "target-lexicon", - "thiserror 1.0.69", - "wasmparser 0.102.0", - "wasmtime-cranelift-shared", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-cranelift-shared" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-native", - "gimli 0.27.3", - "object 0.30.4", - "target-lexicon", - "wasmtime-environ", -] - [[package]] name = "wasmtime-environ" version = "8.0.1" @@ -15369,7 +8203,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror 1.0.69", + "thiserror", "wasmparser 0.102.0", "wasmtime-types", ] @@ -15392,7 +8226,6 @@ dependencies = [ "serde", "target-lexicon", "wasmtime-environ", - "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-runtime", "windows-sys 0.45.0", @@ -15404,9 +8237,7 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" dependencies = [ - "object 0.30.4", "once_cell", - "rustix 0.36.17", ] [[package]] @@ -15452,25 +8283,15 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror 1.0.69", + "thiserror", "wasmparser 0.102.0", ] [[package]] name = "web-sys" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -15478,52 +8299,25 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" dependencies = [ "rustls-pki-types", ] -[[package]] -name = "westend-runtime-constants" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06861bf945aadac59f4be23b44c85573029520ea9bd3d6c9ab21c8b306e81cdc" -dependencies = [ - "frame-support", - "polkadot-primitives 16.0.0", - "polkadot-runtime-common", - "smallvec", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", - "staging-xcm 14.2.0", - "staging-xcm-builder", -] - [[package]] name = "which" -version = "7.0.0" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix 0.38.41", + "rustix 0.38.36", "winsafe", ] -[[package]] -name = "wide" -version = "0.7.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" -dependencies = [ - "bytemuck", - "safe_arch", -] - [[package]] name = "winapi" version = "0.3.9" @@ -15819,9 +8613,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -15842,18 +8636,6 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "wyz" version = "0.5.1" @@ -15883,69 +8665,7 @@ checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", "linux-raw-sys 0.4.14", - "rustix 0.38.41", -] - -[[package]] -name = "xcm-procedural" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4717a97970a9cda70d7db53cf50d2615c2f6f6b7c857445325b4a39ea7aa2cd" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "xcm-procedural" -version = "10.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fb4f14094d65c500a59bcf540cf42b99ee82c706edd6226a92e769ad60563e" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 2.0.89", -] - -[[package]] -name = "xcm-runtime-apis" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d4473a5d157e4d437d9ebcb1b99f9693a64983877ee57d97005f0167869935" -dependencies = [ - "frame-support", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-weights 31.0.0", - "staging-xcm 14.2.0", - "staging-xcm-executor", -] - -[[package]] -name = "xcm-simulator" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058e21bfc3e1180bbd83cad3690d0e63f34f43ab309e338afe988160aa776fcf" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "paste", - "polkadot-core-primitives", - "polkadot-parachain-primitives", - "polkadot-primitives 16.0.0", - "polkadot-runtime-parachains", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", + "rustix 0.38.36", ] [[package]] @@ -15960,30 +8680,6 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff4524214bc4629eba08d78ceb1d6507070cc0bcbbed23af74e19e6e924a24cf" -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", - "synstructure 0.13.1", -] - [[package]] name = "zerocopy" version = "0.7.35" @@ -16002,28 +8698,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", -] - -[[package]] -name = "zerofrom" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", - "synstructure 0.13.1", + "syn 2.0.77", ] [[package]] @@ -16043,51 +8718,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", -] - -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", + "syn 2.0.77", ] [[package]] name = "zip" -version = "2.2.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" +checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" dependencies = [ "arbitrary", "crc32fast", "crossbeam-utils", "displaydoc", - "indexmap 2.6.0", + "indexmap 2.5.0", "memchr", - "thiserror 2.0.3", + "thiserror", ] [[package]] name = "zombienet-configuration" -version = "0.2.17" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de034c8aeb865b528ec76da9c26e91acec88b31709b75c053ffd50999a70443" +checksum = "c8ab4af5d47f03cb8ae0fa96ffbf3881ca050c51e62367685ebdd3e8ae52b220" dependencies = [ "anyhow", "lazy_static", @@ -16096,7 +8749,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", "tokio", "toml 0.7.8", "url", @@ -16105,9 +8758,9 @@ dependencies = [ [[package]] name = "zombienet-orchestrator" -version = "0.2.17" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5ee915b0c296af3591c7e80ce80beab963f9fec12ddd7dca5b818bdc8ad7304" +checksum = "580e01019655a2bd296e42f48876c2e78c94a989147376e025c0e64daf717cf7" dependencies = [ "anyhow", "async-trait", @@ -16123,10 +8776,10 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "sp-core 31.0.0", - "subxt 0.38.0", - "subxt-signer 0.38.0", - "thiserror 1.0.69", + "sp-core", + "subxt", + "subxt-signer", + "thiserror", "tokio", "tracing", "uuid", @@ -16138,20 +8791,20 @@ dependencies = [ [[package]] name = "zombienet-prom-metrics-parser" -version = "0.2.17" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049d19866bac35574ccc7e6558f2ca2b802a4d7325e48978d55e7337e9cece20" +checksum = "4d026607c1a6e198b653c5979fb07078740861978ddecfd5460f2c32cdc182b1" dependencies = [ "pest", "pest_derive", - "thiserror 1.0.69", + "thiserror", ] [[package]] name = "zombienet-provider" -version = "0.2.17" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5890668321c0f4c324830e5c47925d82458e484213caa57798ffd350d35f007" +checksum = "55583d8be6b2ca2e679d85ee2e17eb0802fbf8d2ee05c1b326fff81fd6b3b5c3" dependencies = [ "anyhow", "async-trait", @@ -16168,7 +8821,7 @@ dependencies = [ "serde_yaml", "sha2 0.10.8", "tar", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-util", "tracing", @@ -16180,14 +8833,14 @@ dependencies = [ [[package]] name = "zombienet-sdk" -version = "0.2.17" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e713dd9911efe9238e0e1c30dec12884052da456d105014b5de2a5e914350476" +checksum = "300f3f07aa72df21a52611a0df1033325a454252e36d964c4308b0a8b7356f77" dependencies = [ "async-trait", "futures", "lazy_static", - "subxt 0.38.0", + "subxt", "tokio", "zombienet-configuration", "zombienet-orchestrator", @@ -16197,9 +8850,9 @@ dependencies = [ [[package]] name = "zombienet-support" -version = "0.2.17" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba603a3cda55bef37fe4a9036521f7e4345726190aa54f4fa0ca7df77d2f7c39" +checksum = "e566ea145dab27c6fbb24b13d4c789efa7e675e1fdaf6d007dfe1154d59317c6" dependencies = [ "anyhow", "async-trait", @@ -16208,56 +8861,8 @@ dependencies = [ "rand", "regex", "reqwest 0.11.27", - "thiserror 1.0.69", + "thiserror", "tokio", "tracing", "uuid", ] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", -] - -[[package]] -name = "zstd" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" -dependencies = [ - "zstd-safe 6.0.6", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-safe" -version = "6.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 9a970fcd..8a450937 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -8,14 +8,14 @@ use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; /// Data to be sent to frontend for signing. -#[derive(Serialize)] +#[derive(Serialize, Debug)] pub struct Data { chain_rpc: String, data_type: DataType, } /// The type of transaction with specific data for signing (contract or parachain). -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq)] pub enum DataType { /// Parachain call, where Vec is the encoded call data. Parachain(Vec), @@ -25,7 +25,7 @@ pub enum DataType { /// Contract specific data variations. pub mod contracts { use super::Serialize; - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct ContractArgs { call_type: ContractCallType, storage_deposit_limit: Option, @@ -33,7 +33,7 @@ pub mod contracts { code: Option>, } - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub enum ContractCallType { // no unique fields. Upload, @@ -42,7 +42,7 @@ pub mod contracts { } /// Arguments for instantiating a contract. - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct InstantiateArgs { constructor: String, args: Vec, @@ -53,7 +53,7 @@ pub mod contracts { } /// Arguments for calling a contract. - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct CallArgs { address: String, message: String, @@ -62,6 +62,50 @@ pub mod contracts { gas_limit: Option, proof_size: Option, } + + #[cfg(test)] + mod tests { + use super::*; + use crate::*; + use serde_json::json; + + #[test] + fn json_serialize_parachain_data_works() { + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Parachain(vec![0, 1, 2, 3]), + }; + let json_data = serde_json::to_value(&data).unwrap(); + + assert_eq!( + json_data, + json!({"chain_rpc": "localhost:9944", "data_type": {"Parachain": [0,1,2,3]}}) + ); + } + #[test] + fn json_serialize_contract_upload_data_works() { + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Contract(ContractArgs { + call_type: ContractCallType::Upload, + storage_deposit_limit: Some("1234".to_string()), + code: Some(vec![0, 1, 2]), + }), + }; + let json_data = serde_json::to_value(&data).unwrap(); + + assert_eq!( + json_data, + json!({"chain_rpc": "localhost:9944", "data_type": {"Contract": { + "call_type": "Upload", + "storage_deposit_limit": "1234", + "code": [0,1,2] + }}}) + ); + } + + // TODO: after high level review, complete serialization tests. + } } use crate::contracts::ContractArgs; @@ -146,16 +190,20 @@ mod routes { #[cfg(test)] mod tests { use super::*; + use serde_json::json; - #[tokio::test] - async fn wallet_integration_manager() { - let path = PathBuf::from("/Users/peter/dev/r0gue/react-teleport-example/dist"); - let data = - Data { chain_rpc: "chain_rpc".to_string(), data_type: DataType::Parachain(vec![]) }; - let mut wim = WalletIntegrationManager::new(path, data); - - wim.run().await; - - println!("{:?}", wim.signed_payload); + #[test] + fn new_works() { + let path = PathBuf::from("/path/to/frontend"); + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Parachain(vec![]), + }; + let wim = WalletIntegrationManager::new(path.clone(), data); + + assert_eq!(wim.frontend_path, path); + assert_eq!(wim.data.chain_rpc, "localhost:9944"); + assert_eq!(wim.data.data_type, DataType::Parachain(vec![])); + assert_eq!(wim.signed_payload, None); } } From 1bffd86fd76677c99c58c01da178b1896b02b321 Mon Sep 17 00:00:00 2001 From: Peter White Date: Wed, 4 Dec 2024 21:52:31 -0700 Subject: [PATCH 015/143] refactor(wallet-integration): just use call_data, remove data types --- crates/pop-wallet-integration/src/lib.rs | 128 +++-------------------- 1 file changed, 15 insertions(+), 113 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 8a450937..7d18a605 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -7,108 +7,13 @@ use std::{path::PathBuf, sync::Arc}; use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; -/// Data to be sent to frontend for signing. +/// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -pub struct Data { +pub struct TransactionData { chain_rpc: String, - data_type: DataType, + call_data: Vec, } -/// The type of transaction with specific data for signing (contract or parachain). -#[derive(Serialize, Debug, PartialEq)] -pub enum DataType { - /// Parachain call, where Vec is the encoded call data. - Parachain(Vec), - Contract(ContractArgs), -} - -/// Contract specific data variations. -pub mod contracts { - use super::Serialize; - #[derive(Serialize, Debug, PartialEq)] - pub struct ContractArgs { - call_type: ContractCallType, - storage_deposit_limit: Option, - /// The binary (wasm, polkavm) of the contract. - code: Option>, - } - - #[derive(Serialize, Debug, PartialEq)] - pub enum ContractCallType { - // no unique fields. - Upload, - Instantiate(InstantiateArgs), - Call(CallArgs), - } - - /// Arguments for instantiating a contract. - #[derive(Serialize, Debug, PartialEq)] - pub struct InstantiateArgs { - constructor: String, - args: Vec, - value: String, - gas_limit: Option, - proof_size: Option, - salt: Option>, - } - - /// Arguments for calling a contract. - #[derive(Serialize, Debug, PartialEq)] - pub struct CallArgs { - address: String, - message: String, - args: Vec, - value: String, - gas_limit: Option, - proof_size: Option, - } - - #[cfg(test)] - mod tests { - use super::*; - use crate::*; - use serde_json::json; - - #[test] - fn json_serialize_parachain_data_works() { - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Parachain(vec![0, 1, 2, 3]), - }; - let json_data = serde_json::to_value(&data).unwrap(); - - assert_eq!( - json_data, - json!({"chain_rpc": "localhost:9944", "data_type": {"Parachain": [0,1,2,3]}}) - ); - } - #[test] - fn json_serialize_contract_upload_data_works() { - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Contract(ContractArgs { - call_type: ContractCallType::Upload, - storage_deposit_limit: Some("1234".to_string()), - code: Some(vec![0, 1, 2]), - }), - }; - let json_data = serde_json::to_value(&data).unwrap(); - - assert_eq!( - json_data, - json!({"chain_rpc": "localhost:9944", "data_type": {"Contract": { - "call_type": "Upload", - "storage_deposit_limit": "1234", - "code": [0,1,2] - }}}) - ); - } - - // TODO: after high level review, complete serialization tests. - } -} -use crate::contracts::ContractArgs; - struct StateHandler { shutdown_tx: Option>, signed_payload: Option, @@ -117,16 +22,16 @@ struct StateHandler { /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { frontend_path: PathBuf, - // cloning can be expensive (e.g. contract code stored in-memory) - data: Arc, + // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. + payload: Arc, signed_payload: Option, } impl WalletIntegrationManager { /// - frontend_path: Path to the wallet-integration frontend. /// - data: Data to be sent to the frontend for signing. - pub fn new(frontend_path: PathBuf, data: Data) -> Self { - Self { frontend_path, data: Arc::new(data), signed_payload: Default::default() } + pub fn new(frontend_path: PathBuf, payload: TransactionData) -> Self { + Self { frontend_path, payload: Arc::new(payload), signed_payload: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -142,7 +47,7 @@ impl WalletIntegrationManager { // will shutdown when the signed payload is received let app = Router::new() // cloning Arcs is cheap - .route("/data", get(routes::get_data_handler).with_state(self.data.clone())) + .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) .route("/submit", post(routes::handle_submit).with_state(state.clone())) .nest_service("/", ServeDir::new(self.frontend_path.clone())); @@ -159,13 +64,15 @@ impl WalletIntegrationManager { } mod routes { - use super::{Arc, Data, Mutex, StateHandler}; + use super::{Arc, Mutex, StateHandler, TransactionData}; use axum::{extract::State, Json}; use serde_json::json; /// Responds with the serialized JSON data for signing. - pub(super) async fn get_data_handler(State(data): State>) -> Json { - Json(serde_json::to_value(&*data).unwrap()) + pub(super) async fn get_payload_handler( + State(payload): State>, + ) -> Json { + Json(serde_json::to_value(&*payload).unwrap()) } /// Receives the signed payload from the wallet. @@ -190,20 +97,15 @@ mod routes { #[cfg(test)] mod tests { use super::*; - use serde_json::json; #[test] fn new_works() { let path = PathBuf::from("/path/to/frontend"); - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Parachain(vec![]), - }; + let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; let wim = WalletIntegrationManager::new(path.clone(), data); assert_eq!(wim.frontend_path, path); - assert_eq!(wim.data.chain_rpc, "localhost:9944"); - assert_eq!(wim.data.data_type, DataType::Parachain(vec![])); + assert_eq!(wim.payload.chain_rpc, "localhost:9944"); assert_eq!(wim.signed_payload, None); } } From 31bd99cb1027c79eff09a8ab41094aedceda082f Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 13:27:05 -0700 Subject: [PATCH 016/143] feat(wallet-integration): add frontend type for flexible serving --- crates/pop-wallet-integration/src/lib.rs | 51 +++++++++++++++++++----- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 7d18a605..61b5348f 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -1,4 +1,5 @@ use axum::{ + response::Html, routing::{get, post}, Router, }; @@ -7,6 +8,13 @@ use std::{path::PathBuf, sync::Arc}; use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; +/// Make frontend sourcing more flexible by allowing a custom route +/// to be defined. For example, sourcing frontend from a cached directory, +/// or simply an HTML string built-in to the binary. +pub trait Frontend { + fn serve_content(&self) -> Router; +} + /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] pub struct TransactionData { @@ -14,24 +22,28 @@ pub struct TransactionData { call_data: Vec, } +// Shared state between routes. Serves two purposes: +// - Maintains a channel to signal shutdown to the main app. +// - Stores the signed payload received from the wallet. struct StateHandler { shutdown_tx: Option>, signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend_path: PathBuf, +pub struct WalletIntegrationManager { + frontend: F, // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. payload: Arc, + // The final payload signed by the wallet. Updated after server closure. signed_payload: Option, } -impl WalletIntegrationManager { - /// - frontend_path: Path to the wallet-integration frontend. - /// - data: Data to be sent to the frontend for signing. - pub fn new(frontend_path: PathBuf, payload: TransactionData) -> Self { - Self { frontend_path, payload: Arc::new(payload), signed_payload: Default::default() } +impl WalletIntegrationManager { + /// - frontend: A frontend with custom route to serve content. + /// - payload: Payload to be sent to the frontend for signing. + pub fn new(frontend: F, payload: TransactionData) -> Self { + Self { frontend, payload: Arc::new(payload), signed_payload: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -49,7 +61,7 @@ impl WalletIntegrationManager { // cloning Arcs is cheap .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) .route("/submit", post(routes::handle_submit).with_state(state.clone())) - .nest_service("/", ServeDir::new(self.frontend_path.clone())); + .merge(self.frontend.serve_content()); // custom route for serving frontend let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); axum::serve(listener, app) @@ -90,7 +102,23 @@ mod routes { } // graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success", "payload": payload})) + Json(json!({"status": "success"})) + } +} + +/// Default frontend. Current implementation serves static files from a directory. +pub struct DefaultFrontend { + content: PathBuf, +} +impl DefaultFrontend { + pub fn new(content: PathBuf) -> Self { + Self { content } + } +} + +impl Frontend for DefaultFrontend { + fn serve_content(&self) -> Router { + Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } @@ -101,10 +129,11 @@ mod tests { #[test] fn new_works() { let path = PathBuf::from("/path/to/frontend"); + let default_frontend = DefaultFrontend::new(path.clone()); let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(path.clone(), data); + let wim = WalletIntegrationManager::new(default_frontend, data); - assert_eq!(wim.frontend_path, path); + assert_eq!(wim.frontend.content, path); assert_eq!(wim.payload.chain_rpc, "localhost:9944"); assert_eq!(wim.signed_payload, None); } From 8b371d6606b8ada518235e9898fb21e9a2f13fc2 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:09:14 -0700 Subject: [PATCH 017/143] feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method --- crates/pop-wallet-integration/src/lib.rs | 29 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 61b5348f..c76e4a53 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -1,5 +1,4 @@ use axum::{ - response::Html, routing::{get, post}, Router, }; @@ -25,6 +24,7 @@ pub struct TransactionData { // Shared state between routes. Serves two purposes: // - Maintains a channel to signal shutdown to the main app. // - Stores the signed payload received from the wallet. +#[derive(Default)] struct StateHandler { shutdown_tx: Option>, signed_payload: Option, @@ -35,15 +35,14 @@ pub struct WalletIntegrationManager { frontend: F, // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. payload: Arc, - // The final payload signed by the wallet. Updated after server closure. - signed_payload: Option, + state: Arc>, } impl WalletIntegrationManager { /// - frontend: A frontend with custom route to serve content. /// - payload: Payload to be sent to the frontend for signing. pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), signed_payload: Default::default() } + Self { frontend, payload: Arc::new(payload), state: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -55,8 +54,9 @@ impl WalletIntegrationManager { // shared state between routes. Will be used to store the signed payload. let state = Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + self.state = state.clone(); - // will shutdown when the signed payload is received + // will shut down when the signed payload is received let app = Router::new() // cloning Arcs is cheap .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) @@ -70,8 +70,13 @@ impl WalletIntegrationManager { }) .await .unwrap(); + } - self.signed_payload = state.lock().await.signed_payload.take(); + pub async fn terminate(&mut self) { + // signal shutdown + if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } } } @@ -96,7 +101,9 @@ mod routes { let mut state = state.lock().await; state.signed_payload = Some(payload.clone()); - // signal shutdown + // signal shutdown. + // TODO: decide if we want to shutdown on submit, or at some other time. + // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. if let Some(shutdown_tx) = state.shutdown_tx.take() { let _ = shutdown_tx.send(()); } @@ -126,8 +133,8 @@ impl Frontend for DefaultFrontend { mod tests { use super::*; - #[test] - fn new_works() { + #[tokio::test] + async fn new_works() { let path = PathBuf::from("/path/to/frontend"); let default_frontend = DefaultFrontend::new(path.clone()); let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; @@ -135,6 +142,8 @@ mod tests { assert_eq!(wim.frontend.content, path); assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.signed_payload, None); + assert_eq!(wim.payload.call_data, vec![] as Vec); + assert!(wim.state.lock().await.shutdown_tx.is_none()); + assert!(wim.state.lock().await.signed_payload.is_none()); } } From 093f344cf92d678077215b54c64c16664ab49f26 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:27:06 -0700 Subject: [PATCH 018/143] refactor(wallet-integration): move to module with pop-cli crate --- Cargo.lock | 11 - crates/pop-cli/src/wallet_integration.rs | 537 +++-------------------- crates/pop-wallet-integration/Cargo.toml | 14 - crates/pop-wallet-integration/src/lib.rs | 149 ------- 4 files changed, 72 insertions(+), 639 deletions(-) delete mode 100644 crates/pop-wallet-integration/Cargo.toml delete mode 100644 crates/pop-wallet-integration/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 58487700..8e20ea95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4923,17 +4923,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "pop-wallet-integration" -version = "0.5.0" -dependencies = [ - "axum", - "serde", - "serde_json", - "tokio", - "tower-http 0.6.2", -] - [[package]] name = "portable-atomic" version = "1.7.0" diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 4b9d6e7e..c76e4a53 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -1,542 +1,149 @@ use axum::{ - response::Html, routing::{get, post}, Router, }; use serde::Serialize; use std::{path::PathBuf, sync::Arc}; -use tokio::{ - sync::{oneshot, Mutex}, - task::JoinHandle, -}; +use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; /// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. +/// to be defined. For example, sourcing frontend from a cached directory, +/// or simply an HTML string built-in to the binary. pub trait Frontend { fn serve_content(&self) -> Router; } /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(serde::Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, } -impl TransactionData { - pub fn new(chain_rpc: String, call_data: Vec) -> Self { - Self { chain_rpc, call_data } - } - pub fn call_data(&self) -> Vec { - self.call_data.clone() - } -} - -/// Shared state between routes. Serves two purposes: -/// - Maintains a channel to signal shutdown to the main app. -/// - Stores the signed payload received from the wallet. +// Shared state between routes. Serves two purposes: +// - Maintains a channel to signal shutdown to the main app. +// - Stores the signed payload received from the wallet. #[derive(Default)] -pub struct StateHandler { - /// Channel to signal shutdown to the main app. +struct StateHandler { shutdown_tx: Option>, - /// Received from UI. - pub signed_payload: Option, - /// Holds a single error message. - /// Only method for consuming error removes (takes) it from state. - error: Option, + signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - /// Shared state between routes. - pub state: Arc>, - /// Node rpc address. - pub rpc_url: String, - /// Web server task handle. - pub task_handle: JoinHandle>, +pub struct WalletIntegrationManager { + frontend: F, + // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. + payload: Arc, + state: Arc>, } -impl WalletIntegrationManager { - /// Launches a server for hosting the wallet integration. Server launched in separate task. - /// Uses default address of 127.0.0.1:9090. - /// # Arguments - /// * `frontend`: A frontend with custom route to serve content. - /// * `payload`: Payload to be sent to the frontend for signing. - /// - /// # Returns - /// A `WalletIntegrationManager` instance, with access to the state and task handle for the - /// server. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self::new_with_address(frontend, payload, "127.0.0.1:9090") +impl WalletIntegrationManager { + /// - frontend: A frontend with custom route to serve content. + /// - payload: Payload to be sent to the frontend for signing. + pub fn new(frontend: F, payload: TransactionData) -> Self { + Self { frontend, payload: Arc::new(payload), state: Default::default() } } - /// Same as `new`, but allows specifying the address to bind to. - pub fn new_with_address(frontend: F, payload: TransactionData, rpc: &str) -> Self { - // Channel to signal shutdown. + /// Serves the wallet-integration frontend and an API for the wallet to get + /// the necessary data and submit the signed payload. + pub async fn run(&mut self) { + // used to signal shutdown. let (tx, rx) = oneshot::channel(); - let state = Arc::new(Mutex::new(StateHandler { - shutdown_tx: Some(tx), - signed_payload: None, - error: None, - })); - - let payload = Arc::new(payload); + // shared state between routes. Will be used to store the signed payload. + let state = + Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + self.state = state.clone(); + // will shut down when the signed payload is received let app = Router::new() - .route("/payload", get(routes::get_payload_handler).with_state(payload)) - .route("/submit", post(routes::submit_handler).with_state(state.clone())) - .route("/error", post(routes::error_handler).with_state(state.clone())) - .route("/terminate", post(routes::terminate_handler).with_state(state.clone())) - .merge(frontend.serve_content()); // Custom route for serving frontend. - - let rpc_owned = rpc.to_string(); - - // Will shut down when the signed payload is received. - let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(&rpc_owned) - .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", rpc_owned, e))?; - - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; - Ok(()) - }); - - Self { state, rpc_url: rpc.to_string(), task_handle } - } - - /// Signals the wallet integration server to shut down. - #[allow(dead_code)] - pub async fn terminate(&mut self) -> anyhow::Result<()> { - terminate_helper(&self.state).await - } - - /// Checks if the server task is still running. - pub fn is_running(&self) -> bool { - !self.task_handle.is_finished() + // cloning Arcs is cheap + .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) + .route("/submit", post(routes::handle_submit).with_state(state.clone())) + .merge(self.frontend.serve_content()); // custom route for serving frontend + + let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .unwrap(); } - /// Takes the error from the state if it exists. - pub async fn take_error(&mut self) -> Option { - self.state.lock().await.error.take() + pub async fn terminate(&mut self) { + // signal shutdown + if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } } } mod routes { - use super::{terminate_helper, Arc, Mutex, StateHandler, TransactionData}; - use anyhow::Error; - use axum::{ - extract::State, - http::StatusCode, - response::{IntoResponse, Response}, - Json, - }; + use super::{Arc, Mutex, StateHandler, TransactionData}; + use axum::{extract::State, Json}; use serde_json::json; - pub(super) struct ApiError(Error); - - impl From for ApiError { - fn from(err: Error) -> Self { - ApiError(err) - } - } - - // Implementing IntoResponse for ApiError allows us to return it directly from a route handler. - impl IntoResponse for ApiError { - fn into_response(self) -> Response { - let body = json!({ - "error": self.0.to_string(), - }); - (StatusCode::INTERNAL_SERVER_ERROR, Json(body)).into_response() - } - } - /// Responds with the serialized JSON data for signing. pub(super) async fn get_payload_handler( State(payload): State>, - ) -> Result, ApiError> { - // Error should never occur. - let json_payload = serde_json::to_value(&*payload) - .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; - Ok(Json(json_payload)) + ) -> Json { + Json(serde_json::to_value(&*payload).unwrap()) } /// Receives the signed payload from the wallet. /// Will signal for shutdown on success. - pub(super) async fn submit_handler( + pub(super) async fn handle_submit( State(state): State>>, Json(payload): Json, - ) -> Result, ApiError> { - // Signal shutdown. - let res = terminate_helper(&state).await; - - let mut state_locked = state.lock().await; - state_locked.signed_payload = Some(payload); - - res?; - - // Graceful shutdown ensures response is sent before shutdown. - Ok(Json(json!({"status": "success"}))) - } - - /// Receives an error message from the wallet. - pub(super) async fn error_handler( - State(state): State>>, - Json(error): Json, - ) { + ) -> Json { let mut state = state.lock().await; - state.error = Some(error); - } + state.signed_payload = Some(payload.clone()); - /// Allows the server to be terminated from the frontend. - pub(super) async fn terminate_handler( - State(state): State>>, - ) -> Result<(), ApiError> { - Ok(terminate_helper(&state).await?) - } -} + // signal shutdown. + // TODO: decide if we want to shutdown on submit, or at some other time. + // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } -async fn terminate_helper(handle: &Arc>) -> anyhow::Result<()> { - if let Some(shutdown_tx) = handle.lock().await.shutdown_tx.take() { - shutdown_tx - .send(()) - .map_err(|_| anyhow::anyhow!("Failed to send shutdown signal"))?; + // graceful shutdown ensures response is sent before shutdown. + Json(json!({"status": "success"})) } - Ok(()) } -/// Serves static files from a directory. -pub struct FrontendFromDir { +/// Default frontend. Current implementation serves static files from a directory. +pub struct DefaultFrontend { content: PathBuf, } -impl FrontendFromDir { +impl DefaultFrontend { pub fn new(content: PathBuf) -> Self { Self { content } } } -impl Frontend for FrontendFromDir { +impl Frontend for DefaultFrontend { fn serve_content(&self) -> Router { Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } -/// Serves a hard-coded HTML string as the frontend. -pub struct FrontendFromString { - content: String, -} - -#[allow(dead_code)] -impl FrontendFromString { - pub fn new(content: String) -> Self { - Self { content } - } -} - -impl Frontend for FrontendFromString { - fn serve_content(&self) -> Router { - let content = self.content.clone(); - Router::new().route("/", get(move || async { Html(content) })) - } -} - #[cfg(test)] mod tests { use super::*; - use serde_json::json; - - const TEST_HTML: &str = "Hello, world!"; - - // Wait for server to launch. - async fn wait() { - tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; - } - - fn default_payload() -> TransactionData { - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] } - } #[tokio::test] async fn new_works() { - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - - assert_eq!(wim.rpc_url, "127.0.0.1:9090"); - assert_eq!(wim.is_running(), true); - assert!(wim.state.lock().await.shutdown_tx.is_some()); + let path = PathBuf::from("/path/to/frontend"); + let default_frontend = DefaultFrontend::new(path.clone()); + let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; + let wim = WalletIntegrationManager::new(default_frontend, data); + + assert_eq!(wim.frontend.content, path); + assert_eq!(wim.payload.chain_rpc, "localhost:9944"); + assert_eq!(wim.payload.call_data, vec![] as Vec); + assert!(wim.state.lock().await.shutdown_tx.is_none()); assert!(wim.state.lock().await.signed_payload.is_none()); - - // Terminate the server and make sure result is ok. - wim.terminate().await.expect("Termination should not fail."); - assert!(wim.task_handle.await.is_ok()); - } - - #[test] - fn new_transaction_data_works() { - let chain_rpc = "localhost:9944".to_string(); - let call_data = vec![1, 2, 3]; - let transaction_data = TransactionData::new(chain_rpc.clone(), call_data.clone()); - - assert_eq!(transaction_data.chain_rpc, chain_rpc); - assert_eq!(transaction_data.call_data, call_data); - } - - #[tokio::test] - async fn take_error_works() { - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - - assert_eq!(wim.take_error().await, None); - - let error = "An error occurred".to_string(); - wim.state.lock().await.error = Some(error.clone()); - - let taken_error = wim.take_error().await; - assert_eq!(taken_error, Some(error)); - } - - #[tokio::test] - async fn payload_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9091"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = - WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let actual_payload = reqwest::get(&format!("{}/payload", addr)) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); - assert_eq!(actual_payload.call_data, expected_payload.call_data); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn submit_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9092"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/submit", addr)) - .json(&"0xDEADBEEF") - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse response"); - - assert_eq!(response, json!({"status": "success"})); - assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn error_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9093"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/error", addr)) - .json(&"an error occurred") - .send() - .await - .expect("Failed to submit error") - .text() - .await - .expect("Failed to parse response"); - - // no response expected - assert_eq!(response.len(), 0); - assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); - assert_eq!(wim.is_running(), true); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn terminate_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9094"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/terminate", addr)) - .send() - .await - .expect("Failed to terminate") - .text() - .await - .expect("Failed to parse response"); - - // No response expected. - assert_eq!(response.len(), 0); - assert_eq!(wim.is_running(), false); - - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn wallet_terminate_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9095"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - - assert_eq!(wim.is_running(), true); - wim.terminate().await.expect("Termination should not fail"); - wait().await; - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn frontend_from_string_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9096"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let actual_content = reqwest::get(&format!("http://{}", addr)) - .await - .expect("Failed to get web page") - .text() - .await - .expect("Failed to parse page"); - - assert_eq!(actual_content, TEST_HTML); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn frontend_from_dir_works() { - use std::fs; - use tempfile::tempdir; - - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9097"; - - let temp_dir = tempdir().expect("Failed to create temp directory"); - let index_file_path = temp_dir.path().join("index.html"); - - let test_html = "Hello, world from Directory!"; - fs::write(&index_file_path, test_html).expect("Failed to write index.html"); - - let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let actual_content = reqwest::get(&format!("http://{}", addr)) - .await - .expect("Failed to get web page") - .text() - .await - .expect("Failed to parse page"); - - assert_eq!(actual_content, test_html); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn large_payload_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9098"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; - - let expected_payload = TransactionData { - chain_rpc: "localhost:9944".to_string(), - call_data: call_data_5mb.clone(), - }; - let mut wim = - WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let actual_payload = reqwest::get(&format!("{}/payload", addr)) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); - assert_eq!(actual_payload.call_data, call_data_5mb); - - wim.terminate().await.expect("Termination should not fail."); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn new_with_conflicting_address_fails() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9099"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - assert_eq!(wim.is_running(), true); - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let wim_conflict = - WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - assert_eq!(wim_conflict.is_running(), false); - let task_result = wim_conflict.task_handle.await.unwrap(); - match task_result { - Err(e) => assert!(e - .to_string() - .starts_with(&format!("Failed to bind to {}: Address already in use", addr))), - Ok(_) => panic!("Expected error, but task succeeded"), - } } } diff --git a/crates/pop-wallet-integration/Cargo.toml b/crates/pop-wallet-integration/Cargo.toml deleted file mode 100644 index 02339d3b..00000000 --- a/crates/pop-wallet-integration/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "pop-wallet-integration" -edition.workspace = true -documentation.workspace = true -license.workspace = true -repository.workspace = true -version.workspace = true - -[dependencies] -axum.workspace = true -tokio.workspace = true -tower-http = { workspace = true, features = ["fs"] } -serde_json.workspace = true -serde = { workspace = true, features = ["derive"] } diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs deleted file mode 100644 index c76e4a53..00000000 --- a/crates/pop-wallet-integration/src/lib.rs +++ /dev/null @@ -1,149 +0,0 @@ -use axum::{ - routing::{get, post}, - Router, -}; -use serde::Serialize; -use std::{path::PathBuf, sync::Arc}; -use tokio::sync::{oneshot, Mutex}; -use tower_http::services::ServeDir; - -/// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. For example, sourcing frontend from a cached directory, -/// or simply an HTML string built-in to the binary. -pub trait Frontend { - fn serve_content(&self) -> Router; -} - -/// Transaction payload to be sent to frontend for signing. -#[derive(Serialize, Debug)] -pub struct TransactionData { - chain_rpc: String, - call_data: Vec, -} - -// Shared state between routes. Serves two purposes: -// - Maintains a channel to signal shutdown to the main app. -// - Stores the signed payload received from the wallet. -#[derive(Default)] -struct StateHandler { - shutdown_tx: Option>, - signed_payload: Option, -} - -/// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend: F, - // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. - payload: Arc, - state: Arc>, -} - -impl WalletIntegrationManager { - /// - frontend: A frontend with custom route to serve content. - /// - payload: Payload to be sent to the frontend for signing. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), state: Default::default() } - } - - /// Serves the wallet-integration frontend and an API for the wallet to get - /// the necessary data and submit the signed payload. - pub async fn run(&mut self) { - // used to signal shutdown. - let (tx, rx) = oneshot::channel(); - - // shared state between routes. Will be used to store the signed payload. - let state = - Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); - self.state = state.clone(); - - // will shut down when the signed payload is received - let app = Router::new() - // cloning Arcs is cheap - .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) - .route("/submit", post(routes::handle_submit).with_state(state.clone())) - .merge(self.frontend.serve_content()); // custom route for serving frontend - - let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .unwrap(); - } - - pub async fn terminate(&mut self) { - // signal shutdown - if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } - } -} - -mod routes { - use super::{Arc, Mutex, StateHandler, TransactionData}; - use axum::{extract::State, Json}; - use serde_json::json; - - /// Responds with the serialized JSON data for signing. - pub(super) async fn get_payload_handler( - State(payload): State>, - ) -> Json { - Json(serde_json::to_value(&*payload).unwrap()) - } - - /// Receives the signed payload from the wallet. - /// Will signal for shutdown on success. - pub(super) async fn handle_submit( - State(state): State>>, - Json(payload): Json, - ) -> Json { - let mut state = state.lock().await; - state.signed_payload = Some(payload.clone()); - - // signal shutdown. - // TODO: decide if we want to shutdown on submit, or at some other time. - // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } - - // graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success"})) - } -} - -/// Default frontend. Current implementation serves static files from a directory. -pub struct DefaultFrontend { - content: PathBuf, -} -impl DefaultFrontend { - pub fn new(content: PathBuf) -> Self { - Self { content } - } -} - -impl Frontend for DefaultFrontend { - fn serve_content(&self) -> Router { - Router::new().nest_service("/", ServeDir::new(self.content.clone())) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[tokio::test] - async fn new_works() { - let path = PathBuf::from("/path/to/frontend"); - let default_frontend = DefaultFrontend::new(path.clone()); - let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(default_frontend, data); - - assert_eq!(wim.frontend.content, path); - assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.payload.call_data, vec![] as Vec); - assert!(wim.state.lock().await.shutdown_tx.is_none()); - assert!(wim.state.lock().await.signed_payload.is_none()); - } -} From 182035a0097cee9c188fea2eea2902fb72cf7142 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:50:28 -0700 Subject: [PATCH 019/143] feat(wallet-integration): server-side error handling, update port to 9090 --- crates/pop-cli/src/wallet_integration.rs | 43 ++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index c76e4a53..2f515ef6 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -47,7 +47,7 @@ impl WalletIntegrationManager { /// Serves the wallet-integration frontend and an API for the wallet to get /// the necessary data and submit the signed payload. - pub async fn run(&mut self) { + pub async fn run(&mut self) -> anyhow::Result<()> { // used to signal shutdown. let (tx, rx) = oneshot::channel(); @@ -63,13 +63,18 @@ impl WalletIntegrationManager { .route("/submit", post(routes::handle_submit).with_state(state.clone())) .merge(self.frontend.serve_content()); // custom route for serving frontend - let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + let addr = "127.0.0.1:9090"; + let listener = tokio::net::TcpListener::bind(addr) + .await + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + axum::serve(listener, app) .with_graceful_shutdown(async move { let _ = rx.await.ok(); }) .await - .unwrap(); + .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; + Ok(()) } pub async fn terminate(&mut self) { @@ -82,14 +87,40 @@ impl WalletIntegrationManager { mod routes { use super::{Arc, Mutex, StateHandler, TransactionData}; - use axum::{extract::State, Json}; + use anyhow::Error; + use axum::{ + extract::State, + http::StatusCode, + response::{IntoResponse, Response}, + Json, + }; use serde_json::json; + pub struct ApiError(Error); + + impl From for ApiError { + fn from(err: Error) -> Self { + ApiError(err) + } + } + + // Implementing IntoResponse for ApiError allows us to return it directly from a route handler. + impl IntoResponse for ApiError { + fn into_response(self) -> Response { + let body = json!({ + "error": self.0.to_string(), + }); + (StatusCode::INTERNAL_SERVER_ERROR, Json(body)).into_response() + } + } + /// Responds with the serialized JSON data for signing. pub(super) async fn get_payload_handler( State(payload): State>, - ) -> Json { - Json(serde_json::to_value(&*payload).unwrap()) + ) -> Result, ApiError> { + let json_payload = serde_json::to_value(&*payload) + .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; + Ok(Json(json_payload)) } /// Receives the signed payload from the wallet. From 711c896685019b295e8ef3c25c550152517846b5 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 19:16:12 -0700 Subject: [PATCH 020/143] refactor(wallet-integration): restructure server for easier use in thread --- crates/pop-cli/src/wallet_integration.rs | 71 +++++++++++++----------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 2f515ef6..cc062b59 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -25,56 +25,53 @@ pub struct TransactionData { // - Maintains a channel to signal shutdown to the main app. // - Stores the signed payload received from the wallet. #[derive(Default)] -struct StateHandler { +pub struct StateHandler { shutdown_tx: Option>, - signed_payload: Option, + pub signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend: F, - // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. - payload: Arc, - state: Arc>, +pub struct WalletIntegrationManager { + pub state: Arc>, + pub addr: String, + pub task_handle: tokio::task::JoinHandle>, } -impl WalletIntegrationManager { +impl WalletIntegrationManager { /// - frontend: A frontend with custom route to serve content. /// - payload: Payload to be sent to the frontend for signing. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), state: Default::default() } - } - - /// Serves the wallet-integration frontend and an API for the wallet to get - /// the necessary data and submit the signed payload. - pub async fn run(&mut self) -> anyhow::Result<()> { - // used to signal shutdown. + pub fn new(frontend: F, payload: TransactionData) -> Self { + // Self { frontend, payload: Arc::new(payload), state: Default::default() } let (tx, rx) = oneshot::channel(); - // shared state between routes. Will be used to store the signed payload. let state = Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); - self.state = state.clone(); - // will shut down when the signed payload is received + let payload = Arc::new(payload); + let app = Router::new() // cloning Arcs is cheap - .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) + .route("/payload", get(routes::get_payload_handler).with_state(payload)) .route("/submit", post(routes::handle_submit).with_state(state.clone())) - .merge(self.frontend.serve_content()); // custom route for serving frontend - + .merge(frontend.serve_content()); // custom route for serving frontend let addr = "127.0.0.1:9090"; - let listener = tokio::net::TcpListener::bind(addr) - .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; - - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; - Ok(()) + + // will shut down when the signed payload is received + let task_handle = tokio::spawn(async move { + let listener = tokio::net::TcpListener::bind(addr) + .await + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; + Ok(()) + }); + + Self { state, addr: addr.to_string(), task_handle } } pub async fn terminate(&mut self) { @@ -83,6 +80,14 @@ impl WalletIntegrationManager { let _ = shutdown_tx.send(()); } } + + pub fn is_running(&self) -> bool { + !self.task_handle.is_finished() + } + + pub async fn finish(self) -> anyhow::Result<()> { + self.task_handle.await? + } } mod routes { From 60c05d83dd883f469af4d6d94cc282246c835846 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 21:33:20 -0700 Subject: [PATCH 021/143] fix(wallet-integration): remove invalid fn `finish` --- crates/pop-cli/src/wallet_integration.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index cc062b59..91a5d083 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -84,10 +84,6 @@ impl WalletIntegrationManager { pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } - - pub async fn finish(self) -> anyhow::Result<()> { - self.task_handle.await? - } } mod routes { From 57b747d389ef0c917de84c56c278f0dbff7726aa Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 15:00:33 -0700 Subject: [PATCH 022/143] docs(wallet-integration): inline comments --- crates/pop-cli/src/wallet_integration.rs | 29 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 91a5d083..78bcede8 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -8,8 +8,7 @@ use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; /// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. For example, sourcing frontend from a cached directory, -/// or simply an HTML string built-in to the binary. +/// to be defined. pub trait Frontend { fn serve_content(&self) -> Router; } @@ -27,21 +26,31 @@ pub struct TransactionData { #[derive(Default)] pub struct StateHandler { shutdown_tx: Option>, + // signed payload received from UI. pub signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { + // shared state between routes. pub state: Arc>, + // node rpc address pub addr: String, + // axum server task handle pub task_handle: tokio::task::JoinHandle>, } impl WalletIntegrationManager { - /// - frontend: A frontend with custom route to serve content. - /// - payload: Payload to be sent to the frontend for signing. + /// Launches a server for hosting the wallet integration. Server launched in separate task. + /// # Arguments + /// * `frontend`: A frontend with custom route to serve content. + /// * `payload`: Payload to be sent to the frontend for signing. + /// + /// # Returns + /// A `WalletIntegrationManager` instance, with access to the state and task handle for the + /// server. pub fn new(frontend: F, payload: TransactionData) -> Self { - // Self { frontend, payload: Arc::new(payload), state: Default::default() } + // channel to signal shutdown let (tx, rx) = oneshot::channel(); let state = @@ -50,7 +59,6 @@ impl WalletIntegrationManager { let payload = Arc::new(payload); let app = Router::new() - // cloning Arcs is cheap .route("/payload", get(routes::get_payload_handler).with_state(payload)) .route("/submit", post(routes::handle_submit).with_state(state.clone())) .merge(frontend.serve_content()); // custom route for serving frontend @@ -74,6 +82,7 @@ impl WalletIntegrationManager { Self { state, addr: addr.to_string(), task_handle } } + /// Signals the wallet integration server to shut down. pub async fn terminate(&mut self) { // signal shutdown if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { @@ -81,6 +90,7 @@ impl WalletIntegrationManager { } } + /// Checks if the server task is still running. pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } @@ -97,7 +107,7 @@ mod routes { }; use serde_json::json; - pub struct ApiError(Error); + struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -133,9 +143,8 @@ mod routes { let mut state = state.lock().await; state.signed_payload = Some(payload.clone()); - // signal shutdown. - // TODO: decide if we want to shutdown on submit, or at some other time. - // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. + // Signal shutdown. + // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. if let Some(shutdown_tx) = state.shutdown_tx.take() { let _ = shutdown_tx.send(()); } From adfcc5ae0446dde279c9f647cc7de906619c2400 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 17:04:54 -0700 Subject: [PATCH 023/143] test(wallet-integration): unit tests for wallet-integration server. Add new frontend type --- crates/pop-cli/src/wallet_integration.rs | 273 +++++++++++++++++++++-- 1 file changed, 255 insertions(+), 18 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 78bcede8..d7931863 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -1,8 +1,9 @@ use axum::{ + response::Html, routing::{get, post}, Router, }; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use std::{path::PathBuf, sync::Arc}; use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; @@ -15,6 +16,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] +#[cfg_attr(test, derive(Deserialize))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -42,6 +44,7 @@ pub struct WalletIntegrationManager { impl WalletIntegrationManager { /// Launches a server for hosting the wallet integration. Server launched in separate task. + /// Uses default address of 127.0.0.1:9090. /// # Arguments /// * `frontend`: A frontend with custom route to serve content. /// * `payload`: Payload to be sent to the frontend for signing. @@ -50,6 +53,15 @@ impl WalletIntegrationManager { /// A `WalletIntegrationManager` instance, with access to the state and task handle for the /// server. pub fn new(frontend: F, payload: TransactionData) -> Self { + Self::new_with_address(frontend, payload, "127.0.0.1:9090") + } + + /// Same as `new`, but allows specifying the address to bind to. + pub fn new_with_address( + frontend: F, + payload: TransactionData, + addr: &str, + ) -> Self { // channel to signal shutdown let (tx, rx) = oneshot::channel(); @@ -62,13 +74,14 @@ impl WalletIntegrationManager { .route("/payload", get(routes::get_payload_handler).with_state(payload)) .route("/submit", post(routes::handle_submit).with_state(state.clone())) .merge(frontend.serve_content()); // custom route for serving frontend - let addr = "127.0.0.1:9090"; + + let addr_owned = addr.to_string(); // will shut down when the signed payload is received let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(addr) + let listener = tokio::net::TcpListener::bind(&addr_owned) .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr_owned, e))?; axum::serve(listener, app) .with_graceful_shutdown(async move { @@ -107,7 +120,8 @@ mod routes { }; use serde_json::json; - struct ApiError(Error); + // must be public for axum + pub struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -129,6 +143,7 @@ mod routes { pub(super) async fn get_payload_handler( State(payload): State>, ) -> Result, ApiError> { + // error should never occur. let json_payload = serde_json::to_value(&*payload) .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; Ok(Json(json_payload)) @@ -154,37 +169,259 @@ mod routes { } } -/// Default frontend. Current implementation serves static files from a directory. -pub struct DefaultFrontend { +/// Serves static files from a directory. +pub struct FrontendFromDir { content: PathBuf, } -impl DefaultFrontend { +impl FrontendFromDir { pub fn new(content: PathBuf) -> Self { Self { content } } } -impl Frontend for DefaultFrontend { +impl Frontend for FrontendFromDir { fn serve_content(&self) -> Router { Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } +/// Serves a hard-coded HTML string as the frontend. +pub struct FrontendFromString { + content: String, +} + +impl FrontendFromString { + pub fn new(content: String) -> Self { + Self { content } + } +} + +impl Frontend for FrontendFromString { + fn serve_content(&self) -> Router { + let content = self.content.clone(); + Router::new().route("/", get(move || async { Html(content) })) + } +} + #[cfg(test)] mod tests { use super::*; + use serde_json::json; + + const TEST_HTML: &str = "Hello, world!"; + + // wait for server to launch + async fn wait() { + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + } #[tokio::test] async fn new_works() { - let path = PathBuf::from("/path/to/frontend"); - let default_frontend = DefaultFrontend::new(path.clone()); - let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(default_frontend, data); - - assert_eq!(wim.frontend.content, path); - assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.payload.call_data, vec![] as Vec); - assert!(wim.state.lock().await.shutdown_tx.is_none()); + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; + let mut wim = WalletIntegrationManager::new(frontend, payload); + + assert_eq!(wim.addr, "127.0.0.1:9090"); + assert_eq!(wim.is_running(), true); + assert!(wim.state.lock().await.shutdown_tx.is_some()); assert!(wim.state.lock().await.signed_payload.is_none()); + + // terminate the server and make sure result is ok + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn payload_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9091"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.call_data, vec![1, 2, 3]); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn submit_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9092"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/submit", addr)) + .json(&"0xDEADBEEF") + .send() + .await + .expect("Failed to submit payload") + .json::() + .await + .expect("Failed to parse JSON response"); + + assert_eq!(response, json!({"status": "success"})); + assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn terminate_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9093"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + + assert_eq!(wim.is_running(), true); + wim.terminate().await; + wait().await; + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_string_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9094"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let actual_payload = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_payload, TEST_HTML); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_dir_works() { + use std::fs; + use tempfile::tempdir; + + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9095"; + + let temp_dir = tempdir().expect("Failed to create temp directory"); + let index_file_path = temp_dir.path().join("index.html"); + + let test_html = "Hello, world from Directory!"; + fs::write(&index_file_path, test_html).expect("Failed to write index.html"); + + let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let actual_payload = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_payload, test_html); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn large_payload_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9096"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; + + let expected_payload = TransactionData { + chain_rpc: "localhost:9944".to_string(), + call_data: call_data_5mb.clone(), + }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.call_data, call_data_5mb); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn new_fails_on_conflicting_address() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9097"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + assert_eq!(wim.is_running(), true); + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let wim_conflict = + WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + assert_eq!(wim_conflict.is_running(), false); + let task_result = wim_conflict.task_handle.await.unwrap(); + match task_result { + Err(e) => assert!(e + .to_string() + .starts_with(&format!("Failed to bind to {}: Address already in use", addr))), + Ok(_) => panic!("Expected error, but task succeeded"), + } } } From 48b67b10203753c18d1309b166b8d329af7de488 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 18:09:28 -0700 Subject: [PATCH 024/143] feat(wallet-integration): two new routes: error and terminate --- crates/pop-cli/src/wallet_integration.rs | 107 ++++++++++++++++++++--- 1 file changed, 95 insertions(+), 12 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index d7931863..fe4a59ab 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -30,6 +30,7 @@ pub struct StateHandler { shutdown_tx: Option>, // signed payload received from UI. pub signed_payload: Option, + pub error: Option, } /// Manages the wallet integration for secure signing of transactions. @@ -65,14 +66,19 @@ impl WalletIntegrationManager { // channel to signal shutdown let (tx, rx) = oneshot::channel(); - let state = - Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + let state = Arc::new(Mutex::new(StateHandler { + shutdown_tx: Some(tx), + signed_payload: None, + error: None, + })); let payload = Arc::new(payload); let app = Router::new() .route("/payload", get(routes::get_payload_handler).with_state(payload)) - .route("/submit", post(routes::handle_submit).with_state(state.clone())) + .route("/submit", post(routes::submit_handler).with_state(state.clone())) + .route("/error", post(routes::error_handler).with_state(state.clone())) + .route("/terminate", post(routes::terminate_handler).with_state(state.clone())) .merge(frontend.serve_content()); // custom route for serving frontend let addr_owned = addr.to_string(); @@ -151,7 +157,7 @@ mod routes { /// Receives the signed payload from the wallet. /// Will signal for shutdown on success. - pub(super) async fn handle_submit( + pub(super) async fn submit_handler( State(state): State>>, Json(payload): Json, ) -> Json { @@ -167,6 +173,23 @@ mod routes { // graceful shutdown ensures response is sent before shutdown. Json(json!({"status": "success"})) } + + /// Receives an error message from the wallet. + pub(super) async fn error_handler( + State(state): State>>, + Json(error): Json, + ) { + let mut state = state.lock().await; + state.error = Some(error); + } + + /// Allows the server to be terminated from the frontend. + pub(super) async fn terminate_handler(State(state): State>>) { + let mut state = state.lock().await; + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } + } } /// Serves static files from a directory. @@ -233,7 +256,7 @@ mod tests { } #[tokio::test] - async fn payload_works() { + async fn payload_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9091"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -259,7 +282,7 @@ mod tests { } #[tokio::test] - async fn submit_works() { + async fn submit_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9092"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -289,9 +312,69 @@ mod tests { } #[tokio::test] - async fn terminate_works() { + async fn error_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9093"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/error", addr)) + .json(&"an error occurred") + .send() + .await + .expect("Failed to submit error") + .text() + .await + .expect("Failed to parse response"); + + // no response expected + assert_eq!(response.len(), 0); + assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); + assert_eq!(wim.is_running(), true); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn terminate_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9094"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/terminate", addr)) + .send() + .await + .expect("Failed to terminate") + .text() + .await + .expect("Failed to parse response"); + + // no response expected + assert_eq!(response.len(), 0); + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn wallet_terminate_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9095"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -311,7 +394,7 @@ mod tests { #[tokio::test] async fn frontend_from_string_works() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9094"; + let addr = "127.0.0.1:9096"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let expected_payload = @@ -338,7 +421,7 @@ mod tests { use tempfile::tempdir; // offset port per test to avoid conflicts - let addr = "127.0.0.1:9095"; + let addr = "127.0.0.1:9097"; let temp_dir = tempdir().expect("Failed to create temp directory"); let index_file_path = temp_dir.path().join("index.html"); @@ -368,7 +451,7 @@ mod tests { #[tokio::test] async fn large_payload_works() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9096"; + let addr = "127.0.0.1:9098"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; @@ -396,9 +479,9 @@ mod tests { } #[tokio::test] - async fn new_fails_on_conflicting_address() { + async fn new_with_conflicting_address_fails() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9097"; + let addr = "127.0.0.1:9099"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let expected_payload = From 3def6189f379c67e5dffe5e574d4092df95ffdf6 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 14:51:56 -0700 Subject: [PATCH 025/143] refactor(wallet-integration): consistent comments, remove unnecessary code in tests --- crates/pop-cli/src/wallet_integration.rs | 143 +++++++++++------------ 1 file changed, 68 insertions(+), 75 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index fe4a59ab..4fa50ff5 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -5,7 +5,10 @@ use axum::{ }; use serde::{Deserialize, Serialize}; use std::{path::PathBuf, sync::Arc}; -use tokio::sync::{oneshot, Mutex}; +use tokio::{ + sync::{oneshot, Mutex}, + task::JoinHandle, +}; use tower_http::services::ServeDir; /// Make frontend sourcing more flexible by allowing a custom route @@ -16,31 +19,34 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(Deserialize))] +#[cfg_attr(test, derive(Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, } -// Shared state between routes. Serves two purposes: -// - Maintains a channel to signal shutdown to the main app. -// - Stores the signed payload received from the wallet. +/// Shared state between routes. Serves two purposes: +/// - Maintains a channel to signal shutdown to the main app. +/// - Stores the signed payload received from the wallet. #[derive(Default)] pub struct StateHandler { + /// Channel to signal shutdown to the main app. shutdown_tx: Option>, - // signed payload received from UI. + /// Received from UI. pub signed_payload: Option, - pub error: Option, + /// Holds a single error message. + /// Only method for consuming error removes (takes) it from state. + error: Option, } /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { - // shared state between routes. + /// Shared state between routes. pub state: Arc>, - // node rpc address - pub addr: String, - // axum server task handle - pub task_handle: tokio::task::JoinHandle>, + /// Node rpc address. + pub rpc_url: String, + /// Web server task handle. + pub task_handle: JoinHandle>, } impl WalletIntegrationManager { @@ -58,12 +64,8 @@ impl WalletIntegrationManager { } /// Same as `new`, but allows specifying the address to bind to. - pub fn new_with_address( - frontend: F, - payload: TransactionData, - addr: &str, - ) -> Self { - // channel to signal shutdown + pub fn new_with_address(frontend: F, payload: TransactionData, rpc: &str) -> Self { + // Channel to signal shutdown. let (tx, rx) = oneshot::channel(); let state = Arc::new(Mutex::new(StateHandler { @@ -79,15 +81,15 @@ impl WalletIntegrationManager { .route("/submit", post(routes::submit_handler).with_state(state.clone())) .route("/error", post(routes::error_handler).with_state(state.clone())) .route("/terminate", post(routes::terminate_handler).with_state(state.clone())) - .merge(frontend.serve_content()); // custom route for serving frontend + .merge(frontend.serve_content()); // Custom route for serving frontend. - let addr_owned = addr.to_string(); + let rpc_owned = rpc.to_string(); - // will shut down when the signed payload is received + // Will shut down when the signed payload is received. let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(&addr_owned) + let listener = tokio::net::TcpListener::bind(&rpc_owned) .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr_owned, e))?; + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", rpc_owned, e))?; axum::serve(listener, app) .with_graceful_shutdown(async move { @@ -98,12 +100,11 @@ impl WalletIntegrationManager { Ok(()) }); - Self { state, addr: addr.to_string(), task_handle } + Self { state, rpc_url: rpc.to_string(), task_handle } } /// Signals the wallet integration server to shut down. pub async fn terminate(&mut self) { - // signal shutdown if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { let _ = shutdown_tx.send(()); } @@ -113,6 +114,11 @@ impl WalletIntegrationManager { pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } + + /// Takes the error from the state if it exists. + pub async fn take_error(&mut self) -> Option { + self.state.lock().await.error.take() + } } mod routes { @@ -126,8 +132,7 @@ mod routes { }; use serde_json::json; - // must be public for axum - pub struct ApiError(Error); + pub(super) struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -149,7 +154,7 @@ mod routes { pub(super) async fn get_payload_handler( State(payload): State>, ) -> Result, ApiError> { - // error should never occur. + // Error should never occur. let json_payload = serde_json::to_value(&*payload) .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; Ok(Json(json_payload)) @@ -162,7 +167,7 @@ mod routes { Json(payload): Json, ) -> Json { let mut state = state.lock().await; - state.signed_payload = Some(payload.clone()); + state.signed_payload = Some(payload); // Signal shutdown. // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. @@ -170,7 +175,7 @@ mod routes { let _ = shutdown_tx.send(()); } - // graceful shutdown ensures response is sent before shutdown. + // Graceful shutdown ensures response is sent before shutdown. Json(json!({"status": "success"})) } @@ -233,24 +238,26 @@ mod tests { const TEST_HTML: &str = "Hello, world!"; - // wait for server to launch + // Wait for server to launch. async fn wait() { tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; } + fn default_payload() -> TransactionData { + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] } + } + #[tokio::test] async fn new_works() { let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let mut wim = WalletIntegrationManager::new(frontend, payload); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - assert_eq!(wim.addr, "127.0.0.1:9090"); + assert_eq!(wim.rpc_url, "127.0.0.1:9090"); assert_eq!(wim.is_running(), true); assert!(wim.state.lock().await.shutdown_tx.is_some()); assert!(wim.state.lock().await.signed_payload.is_none()); - // terminate the server and make sure result is ok + // Terminate the server and make sure result is ok. wim.terminate().await; assert!(wim.task_handle.await.is_ok()); } @@ -263,10 +270,11 @@ mod tests { let expected_payload = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let actual_payload = reqwest::get(&format!("{}/payload", addr)) .await .expect("Failed to get payload") @@ -274,8 +282,8 @@ mod tests { .await .expect("Failed to parse payload"); - assert_eq!(actual_payload.chain_rpc, "localhost:9944"); - assert_eq!(actual_payload.call_data, vec![1, 2, 3]); + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); + assert_eq!(actual_payload.call_data, expected_payload.call_data); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -287,12 +295,10 @@ mod tests { let addr = "127.0.0.1:9092"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/submit", addr)) .json(&"0xDEADBEEF") @@ -317,12 +323,10 @@ mod tests { let addr = "127.0.0.1:9093"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/error", addr)) .json(&"an error occurred") @@ -348,12 +352,10 @@ mod tests { let addr = "127.0.0.1:9094"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/terminate", addr)) .send() @@ -363,7 +365,7 @@ mod tests { .await .expect("Failed to parse response"); - // no response expected + // No response expected. assert_eq!(response.len(), 0); assert_eq!(wim.is_running(), false); @@ -378,9 +380,7 @@ mod tests { let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); assert_eq!(wim.is_running(), true); wim.terminate().await; @@ -397,19 +397,17 @@ mod tests { let addr = "127.0.0.1:9096"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let actual_payload = reqwest::get(&format!("http://{}", addr)) + let actual_content = reqwest::get(&format!("http://{}", addr)) .await .expect("Failed to get web page") .text() .await .expect("Failed to parse page"); - assert_eq!(actual_payload, TEST_HTML); + assert_eq!(actual_content, TEST_HTML); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -430,19 +428,17 @@ mod tests { fs::write(&index_file_path, test_html).expect("Failed to write index.html"); let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let actual_payload = reqwest::get(&format!("http://{}", addr)) + let actual_content = reqwest::get(&format!("http://{}", addr)) .await .expect("Failed to get web page") .text() .await .expect("Failed to parse page"); - assert_eq!(actual_payload, test_html); + assert_eq!(actual_content, test_html); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -460,10 +456,11 @@ mod tests { chain_rpc: "localhost:9944".to_string(), call_data: call_data_5mb.clone(), }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let actual_payload = reqwest::get(&format!("{}/payload", addr)) .await .expect("Failed to get payload") @@ -471,7 +468,7 @@ mod tests { .await .expect("Failed to parse payload"); - assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, call_data_5mb); wim.terminate().await; @@ -484,18 +481,14 @@ mod tests { let addr = "127.0.0.1:9099"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; assert_eq!(wim.is_running(), true); let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; let wim_conflict = - WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; assert_eq!(wim_conflict.is_running(), false); From f74c9bbe98f9aa4de67b078c6ba261c62940b814 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 14:58:46 -0700 Subject: [PATCH 026/143] feat: add TransactionData::new --- crates/pop-cli/src/wallet_integration.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 4fa50ff5..a76d4f69 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -25,6 +25,12 @@ pub struct TransactionData { call_data: Vec, } +impl TransactionData { + pub fn new(chain_rpc: String, call_data: Vec) -> Self { + Self { chain_rpc, call_data } + } +} + /// Shared state between routes. Serves two purposes: /// - Maintains a channel to signal shutdown to the main app. /// - Stores the signed payload received from the wallet. From ef6dd5d765164a89f3b8fc5486d53d825f7a98bb Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Fri, 29 Nov 2024 15:16:00 +0100 Subject: [PATCH 027/143] feat: guide user to call a contract (#306) * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: parse user inputs for Option arguments (#332) * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> * test: fix unit test * feat: allow users to specify custom contract metadata files (#347) * chore: allow the user specify the metadata file to call a contract * test: unit test to parse metadata from a file * docs: fix docs * refactor: ensure_contract_built after user input path * fix: call contract when metadata file * fix: remove default_input in contract address * docs: rename metadata with artifact * fix: panic at has_contract_been_built * fix: clippy * refactor: keep ensure_contract_built as a CallContractCommand function * fix: ensure_contract_built * docs: improve comments * fix: feedback and include wasm file for testing * fix: clippy * chore: after build contract prompt the user if the contract is already deployed * refactor: ensure_contract_built * refactor: has_contract_been_built function * docs: fix comments and messages * refactor: get_messages and get_constructors * test: fix unit tests call ui --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> --- Cargo.lock | 2 + Cargo.toml | 3 + crates/pop-cli/src/cli.rs | 232 +++- crates/pop-cli/src/commands/call/contract.rs | 1048 ++++++++++++++++- crates/pop-cli/src/commands/up/contract.rs | 30 +- crates/pop-cli/src/common/contracts.rs | 48 +- crates/pop-contracts/Cargo.toml | 3 +- crates/pop-contracts/src/call.rs | 138 ++- crates/pop-contracts/src/errors.rs | 12 +- crates/pop-contracts/src/lib.rs | 8 +- crates/pop-contracts/src/testing.rs | 39 + crates/pop-contracts/src/up.rs | 91 +- crates/pop-contracts/src/utils/metadata.rs | 549 +++++++++ crates/pop-contracts/src/utils/mod.rs | 1 + .../tests/files/testing.contract | 2 +- crates/pop-contracts/tests/files/testing.json | 528 +++++++++ crates/pop-contracts/tests/files/testing.wasm | Bin 0 -> 3710 bytes 17 files changed, 2559 insertions(+), 175 deletions(-) create mode 100644 crates/pop-contracts/src/testing.rs create mode 100644 crates/pop-contracts/src/utils/metadata.rs create mode 100644 crates/pop-contracts/tests/files/testing.json create mode 100644 crates/pop-contracts/tests/files/testing.wasm diff --git a/Cargo.lock b/Cargo.lock index 8e20ea95..f4cab745 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4856,6 +4856,7 @@ dependencies = [ "anyhow", "contract-build", "contract-extrinsics", + "contract-transcode", "dirs", "duct", "flate2", @@ -4864,6 +4865,7 @@ dependencies = [ "mockito", "pop-common", "reqwest 0.12.7", + "scale-info", "sp-core", "sp-weights", "strum 0.26.3", diff --git a/Cargo.toml b/Cargo.toml index a88d80ca..49ca3e68 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,6 +53,8 @@ sp-weights = "30" contract-build = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } #contract-extrinsics = "5.0.0-alpha" contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } +#contractcontract-transcode = "5.0.0-alpha" +contract-transcode = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" # parachains @@ -62,6 +64,7 @@ walkdir = "2.5" indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" +scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.14" diff --git a/crates/pop-cli/src/cli.rs b/crates/pop-cli/src/cli.rs index 353a4704..968c1a4f 100644 --- a/crates/pop-cli/src/cli.rs +++ b/crates/pop-cli/src/cli.rs @@ -13,6 +13,8 @@ pub(crate) mod traits { fn confirm(&mut self, prompt: impl Display) -> impl Confirm; /// Prints an info message. fn info(&mut self, text: impl Display) -> Result<()>; + /// Constructs a new [`Input`] prompt. + fn input(&mut self, prompt: impl Display) -> impl Input; /// Prints a header of the prompt sequence. fn intro(&mut self, title: impl Display) -> Result<()>; /// Constructs a new [`MultiSelect`] prompt. @@ -21,6 +23,8 @@ pub(crate) mod traits { fn outro(&mut self, message: impl Display) -> Result<()>; /// Prints a footer of the prompt sequence with a failure style. fn outro_cancel(&mut self, message: impl Display) -> Result<()>; + /// Constructs a new [`Select`] prompt. + fn select(&mut self, prompt: impl Display) -> impl Select; /// Prints a success message. fn success(&mut self, message: impl Display) -> Result<()>; /// Prints a warning message. @@ -29,10 +33,29 @@ pub(crate) mod traits { /// A confirmation prompt. pub trait Confirm { + /// Sets the initially selected value. + fn initial_value(self, initial_value: bool) -> Self; /// Starts the prompt interaction. fn interact(&mut self) -> Result; } + /// A text input prompt. + pub trait Input { + /// Sets the default value for the input. + fn default_input(self, value: &str) -> Self; + /// Starts the prompt interaction. + fn interact(&mut self) -> Result; + /// Sets the placeholder (hint) text for the input. + fn placeholder(self, value: &str) -> Self; + /// Sets whether the input is required. + fn required(self, required: bool) -> Self; + /// Sets a validation callback for the input that is called when the user submits. + fn validate( + self, + validator: impl Fn(&String) -> std::result::Result<(), &'static str> + 'static, + ) -> Self; + } + /// A multi-select prompt. pub trait MultiSelect { /// Starts the prompt interaction. @@ -42,6 +65,14 @@ pub(crate) mod traits { /// Sets whether the input is required. fn required(self, required: bool) -> Self; } + + /// A select prompt. + pub trait Select { + /// Starts the prompt interaction. + fn interact(&mut self) -> Result; + /// Adds an item to the selection prompt. + fn item(self, value: T, label: impl Display, hint: impl Display) -> Self; + } } /// A command line interface using cliclack. @@ -57,6 +88,11 @@ impl traits::Cli for Cli { cliclack::log::info(text) } + /// Constructs a new [`Input`] prompt. + fn input(&mut self, prompt: impl Display) -> impl traits::Input { + Input(cliclack::input(prompt)) + } + /// Prints a header of the prompt sequence. fn intro(&mut self, title: impl Display) -> Result<()> { cliclack::clear_screen()?; @@ -79,6 +115,11 @@ impl traits::Cli for Cli { cliclack::outro_cancel(message) } + /// Constructs a new [`Select`] prompt. + fn select(&mut self, prompt: impl Display) -> impl traits::Select { + Select::(cliclack::select(prompt)) + } + /// Prints a success message. fn success(&mut self, message: impl Display) -> Result<()> { cliclack::log::success(message) @@ -97,6 +138,43 @@ impl traits::Confirm for Confirm { fn interact(&mut self) -> Result { self.0.interact() } + /// Sets the initially selected value. + fn initial_value(mut self, initial_value: bool) -> Self { + self.0 = self.0.initial_value(initial_value); + self + } +} + +/// A input prompt using cliclack. +struct Input(cliclack::Input); +impl traits::Input for Input { + /// Sets the default value for the input. + fn default_input(mut self, value: &str) -> Self { + self.0 = self.0.default_input(value); + self + } + /// Starts the prompt interaction. + fn interact(&mut self) -> Result { + self.0.interact() + } + /// Sets the placeholder (hint) text for the input. + fn placeholder(mut self, placeholder: &str) -> Self { + self.0 = self.0.placeholder(placeholder); + self + } + /// Sets whether the input is required. + fn required(mut self, required: bool) -> Self { + self.0 = self.0.required(required); + self + } + /// Sets a validation callback for the input that is called when the user submits. + fn validate( + mut self, + validator: impl Fn(&String) -> std::result::Result<(), &'static str> + 'static, + ) -> Self { + self.0 = self.0.validate(validator); + self + } } /// A multi-select prompt using cliclack. @@ -121,21 +199,40 @@ impl traits::MultiSelect for MultiSelect { } } +/// A select prompt using cliclack. +struct Select(cliclack::Select); + +impl traits::Select for Select { + /// Starts the prompt interaction. + fn interact(&mut self) -> Result { + self.0.interact() + } + + /// Adds an item to the selection prompt. + fn item(mut self, value: T, label: impl Display, hint: impl Display) -> Self { + self.0 = self.0.item(value, label, hint); + self + } +} + #[cfg(test)] pub(crate) mod tests { use super::traits::*; - use std::{fmt::Display, io::Result}; + use std::{fmt::Display, io::Result, usize}; /// Mock Cli with optional expectations #[derive(Default)] pub(crate) struct MockCli { - confirm_expectation: Option<(String, bool)>, + confirm_expectation: Vec<(String, bool)>, info_expectations: Vec, + input_expectations: Vec<(String, String)>, intro_expectation: Option, outro_expectation: Option, multiselect_expectation: Option<(String, Option, bool, Option>)>, outro_cancel_expectation: Option, + select_expectation: + Option<(String, Option, bool, Option>, usize)>, success_expectations: Vec, warning_expectations: Vec, } @@ -146,7 +243,12 @@ pub(crate) mod tests { } pub(crate) fn expect_confirm(mut self, prompt: impl Display, confirm: bool) -> Self { - self.confirm_expectation = Some((prompt.to_string(), confirm)); + self.confirm_expectation.push((prompt.to_string(), confirm)); + self + } + + pub(crate) fn expect_input(mut self, prompt: impl Display, input: String) -> Self { + self.input_expectations.push((prompt.to_string(), input)); self } @@ -181,6 +283,18 @@ pub(crate) mod tests { self } + pub(crate) fn expect_select( + mut self, + prompt: impl Display, + required: Option, + collect: bool, + items: Option>, + item: usize, + ) -> Self { + self.select_expectation = Some((prompt.to_string(), required, collect, items, item)); + self + } + pub(crate) fn expect_success(mut self, message: impl Display) -> Self { self.success_expectations.push(message.to_string()); self @@ -192,12 +306,15 @@ pub(crate) mod tests { } pub(crate) fn verify(self) -> anyhow::Result<()> { - if let Some((expectation, _)) = self.confirm_expectation { - panic!("`{expectation}` confirm expectation not satisfied") + if !self.confirm_expectation.is_empty() { + panic!("`{:?}` confirm expectations not satisfied", self.confirm_expectation) } if !self.info_expectations.is_empty() { panic!("`{}` info log expectations not satisfied", self.info_expectations.join(",")) } + if !self.input_expectations.is_empty() { + panic!("`{:?}` input expectation not satisfied", self.input_expectations) + } if let Some(expectation) = self.intro_expectation { panic!("`{expectation}` intro expectation not satisfied") } @@ -210,6 +327,9 @@ pub(crate) mod tests { if let Some(expectation) = self.outro_cancel_expectation { panic!("`{expectation}` outro cancel expectation not satisfied") } + if let Some((prompt, _, _, _, _)) = self.select_expectation { + panic!("`{prompt}` select prompt expectation not satisfied") + } if !self.success_expectations.is_empty() { panic!( "`{}` success log expectations not satisfied", @@ -229,7 +349,7 @@ pub(crate) mod tests { impl Cli for MockCli { fn confirm(&mut self, prompt: impl Display) -> impl Confirm { let prompt = prompt.to_string(); - if let Some((expectation, confirm)) = self.confirm_expectation.take() { + if let Some((expectation, confirm)) = self.confirm_expectation.pop() { assert_eq!(expectation, prompt, "prompt does not satisfy expectation"); return MockConfirm { confirm }; } @@ -242,6 +362,20 @@ pub(crate) mod tests { Ok(()) } + fn input(&mut self, prompt: impl Display) -> impl Input { + let prompt = prompt.to_string(); + if let Some((expectation, input)) = self.input_expectations.pop() { + assert_eq!(expectation, prompt, "prompt does not satisfy expectation"); + return MockInput { + prompt: input.clone(), + input, + placeholder: "".to_string(), + required: false, + }; + } + MockInput::default() + } + fn intro(&mut self, title: impl Display) -> Result<()> { if let Some(expectation) = self.intro_expectation.take() { assert_eq!(expectation, title.to_string(), "intro does not satisfy expectation"); @@ -288,6 +422,18 @@ pub(crate) mod tests { Ok(()) } + fn select(&mut self, prompt: impl Display) -> impl Select { + let prompt = prompt.to_string(); + if let Some((expectation, _, collect, items_expectation, item)) = + self.select_expectation.take() + { + assert_eq!(expectation, prompt, "prompt does not satisfy expectation"); + return MockSelect { items_expectation, collect, items: vec![], item }; + } + + MockSelect::default() + } + fn success(&mut self, message: impl Display) -> Result<()> { let message = message.to_string(); self.success_expectations.retain(|x| *x != message); @@ -308,11 +454,51 @@ pub(crate) mod tests { } impl Confirm for MockConfirm { + fn initial_value(mut self, _initial_value: bool) -> Self { + self.confirm = self.confirm; // Ignore initial value and always return mock value + self + } fn interact(&mut self) -> Result { Ok(self.confirm) } } + /// Mock input prompt + #[derive(Default)] + struct MockInput { + prompt: String, + input: String, + placeholder: String, + required: bool, + } + + impl Input for MockInput { + fn interact(&mut self) -> Result { + Ok(self.prompt.clone()) + } + fn default_input(mut self, value: &str) -> Self { + self.input = value.to_string(); + self + } + + fn placeholder(mut self, value: &str) -> Self { + self.placeholder = value.to_string(); + self + } + + fn required(mut self, value: bool) -> Self { + self.required = value; + self + } + + fn validate( + self, + _validator: impl Fn(&String) -> std::result::Result<(), &'static str> + 'static, + ) -> Self { + self + } + } + /// Mock multi-select prompt pub(crate) struct MockMultiSelect { required_expectation: Option, @@ -360,4 +546,38 @@ pub(crate) mod tests { self } } + + /// Mock select prompt + pub(crate) struct MockSelect { + items_expectation: Option>, + collect: bool, + items: Vec, + item: usize, + } + + impl MockSelect { + pub(crate) fn default() -> Self { + Self { items_expectation: None, collect: false, items: vec![], item: 0 } + } + } + + impl Select for MockSelect { + fn interact(&mut self) -> Result { + Ok(self.items[self.item].clone()) + } + + fn item(mut self, value: T, label: impl Display, hint: impl Display) -> Self { + // Check expectations + if let Some(items) = self.items_expectation.as_mut() { + let item = (label.to_string(), hint.to_string()); + assert!(items.contains(&item), "`{item:?}` item does not satisfy any expectations"); + items.retain(|x| *x != item); + } + // Collect if specified + if self.collect { + self.items.push(value); + } + self + } + } } diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 52210cf0..4e00e37b 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -1,71 +1,355 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::style::Theme; -use anyhow::anyhow; +use crate::{ + cli::{self, traits::*}, + common::contracts::has_contract_been_built, +}; +use anyhow::{anyhow, Result}; use clap::Args; -use cliclack::{clear_screen, intro, log, outro, outro_cancel, set_theme}; -use console::style; +use cliclack::spinner; use pop_contracts::{ - call_smart_contract, dry_run_call, dry_run_gas_estimate_call, set_up_call, CallOpts, + build_smart_contract, call_smart_contract, dry_run_call, dry_run_gas_estimate_call, + get_messages, parse_account, set_up_call, CallOpts, Verbosity, }; use sp_weights::Weight; use std::path::PathBuf; -#[derive(Args)] +const DEFAULT_URL: &str = "ws://localhost:9944/"; +const DEFAULT_URI: &str = "//Alice"; +const DEFAULT_PAYABLE_VALUE: &str = "0"; + +#[derive(Args, Clone)] pub struct CallContractCommand { - /// Path to the contract build directory. - #[arg(short = 'p', long)] + /// Path to the contract build directory or a contract artifact. + #[arg(short, long)] path: Option, /// The address of the contract to call. - #[clap(name = "contract", long, env = "CONTRACT")] - contract: String, + #[arg(name = "contract", short, long, env = "CONTRACT")] + contract: Option, /// The name of the contract message to call. - #[clap(long, short)] - message: String, - /// The constructor arguments, encoded as strings. - #[clap(long, num_args = 0..)] + #[arg(long, short)] + message: Option, + /// The message arguments, encoded as strings. + #[arg(short, long, num_args = 0..,)] args: Vec, - /// Transfers an initial balance to the instantiated contract. - #[clap(name = "value", long, default_value = "0")] + /// The value to be transferred as part of the call. + #[arg(name = "value", short, long, default_value = DEFAULT_PAYABLE_VALUE)] value: String, /// Maximum amount of gas to be used for this command. /// If not specified it will perform a dry-run to estimate the gas consumed for the - /// instantiation. - #[clap(name = "gas", long)] + /// call. + #[arg(name = "gas", short, long)] gas_limit: Option, /// Maximum proof size for this command. /// If not specified it will perform a dry-run to estimate the proof size required. - #[clap(long)] + #[arg(short = 'P', long)] proof_size: Option, /// Websocket endpoint of a node. - #[clap(name = "url", long, value_parser, default_value = "ws://localhost:9944")] + #[arg(name = "url", short, long, value_parser, default_value = DEFAULT_URL)] url: url::Url, - /// Secret key URI for the account deploying the contract. + /// Secret key URI for the account calling the contract. /// /// e.g. /// - for a dev account "//Alice" /// - with a password "//Alice///SECRET_PASSWORD" - #[clap(name = "suri", long, short, default_value = "//Alice")] + #[arg(name = "suri", long, short, default_value = DEFAULT_URI)] suri: String, /// Submit an extrinsic for on-chain execution. - #[clap(short('x'), long)] + #[arg(short('x'), long)] execute: bool, /// Perform a dry-run via RPC to estimate the gas usage. This does not submit a transaction. - #[clap(long, conflicts_with = "execute")] + #[arg(short = 'D', long, conflicts_with = "execute")] dry_run: bool, + /// Enables developer mode, bypassing certain user prompts for faster testing. + /// Recommended for testing and local development only. + #[arg(name = "dev", long, short, default_value = "false")] + dev_mode: bool, } - impl CallContractCommand { /// Executes the command. - pub(crate) async fn execute(self) -> anyhow::Result<()> { - clear_screen()?; - intro(format!("{}: Calling a contract", style(" Pop CLI ").black().on_magenta()))?; - set_theme(Theme); + pub(crate) async fn execute(mut self) -> Result<()> { + // Check if message specified via command line argument. + let prompt_to_repeat_call = self.message.is_none(); + // Configure the call based on command line arguments/call UI. + if let Err(e) = self.configure(&mut cli::Cli, false).await { + match e.to_string().as_str() { + "Contract not deployed." => { + display_message( + "Use `pop up contract` to deploy your contract.", + true, // Not an error, just a message. + &mut cli::Cli, + )?; + }, + _ => { + display_message(&e.to_string(), false, &mut cli::Cli)?; + }, + } + return Ok(()); + }; + // Finally execute the call. + if let Err(e) = self.execute_call(&mut cli::Cli, prompt_to_repeat_call).await { + display_message(&e.to_string(), false, &mut cli::Cli)?; + } + Ok(()) + } + + fn display(&self) -> String { + let mut full_message = "pop call contract".to_string(); + if let Some(path) = &self.path { + full_message.push_str(&format!(" --path {}", path.display())); + } + if let Some(contract) = &self.contract { + full_message.push_str(&format!(" --contract {}", contract)); + } + if let Some(message) = &self.message { + full_message.push_str(&format!(" --message {}", message)); + } + if !self.args.is_empty() { + let args: Vec<_> = self.args.iter().map(|a| format!("\"{a}\"")).collect(); + full_message.push_str(&format!(" --args {}", args.join(", "))); + } + if self.value != DEFAULT_PAYABLE_VALUE { + full_message.push_str(&format!(" --value {}", self.value)); + } + if let Some(gas_limit) = self.gas_limit { + full_message.push_str(&format!(" --gas {}", gas_limit)); + } + if let Some(proof_size) = self.proof_size { + full_message.push_str(&format!(" --proof_size {}", proof_size)); + } + full_message.push_str(&format!(" --url {} --suri {}", self.url, self.suri)); + if self.execute { + full_message.push_str(" --execute"); + } + if self.dry_run { + full_message.push_str(" --dry_run"); + } + full_message + } + + /// If the contract has not been built, build it in release mode. + async fn ensure_contract_built(&self, cli: &mut impl Cli) -> Result<()> { + // Build the contract in release mode + cli.warning("NOTE: contract has not yet been built.")?; + let spinner = spinner(); + spinner.start("Building contract in RELEASE mode..."); + let result = match build_smart_contract(self.path.as_deref(), true, Verbosity::Quiet) { + Ok(result) => result, + Err(e) => { + return Err(anyhow!(format!( + "🚫 An error occurred building your contract: {}\nUse `pop build` to retry with build output.", + e.to_string() + ))); + }, + }; + spinner.stop(format!( + "Your contract artifacts are ready. You can find them in: {}", + result.target_directory.display() + )); + Ok(()) + } + + /// Prompts the user to confirm if the contract has already been deployed. + fn confirm_contract_deployment(&self, cli: &mut impl Cli) -> Result<()> { + let is_contract_deployed = cli + .confirm("Has the contract already been deployed?") + .initial_value(false) + .interact()?; + if !is_contract_deployed { + return Err(anyhow!("Contract not deployed.")); + } + Ok(()) + } + + /// Checks whether building the contract is required + fn is_contract_build_required(&self) -> bool { + self.path + .as_ref() + .map(|p| p.is_dir() && !has_contract_been_built(Some(&p))) + .unwrap_or_default() + } - let call_exec = set_up_call(CallOpts { + /// Configure the call based on command line arguments/call UI. + async fn configure(&mut self, cli: &mut impl Cli, repeat: bool) -> Result<()> { + // Show intro on first run. + if !repeat { + cli.intro("Call a contract")?; + } + + // If message has been specified via command line arguments, return early. + if self.message.is_some() { + return Ok(()); + } + + // Resolve path. + if self.path.is_none() { + let input_path: String = cli + .input("Where is your project or contract artifact located?") + .placeholder("./") + .default_input("./") + .interact()?; + self.path = Some(PathBuf::from(input_path)); + } + let contract_path = self + .path + .as_ref() + .expect("path is guaranteed to be set as input as prompted when None; qed"); + + // Ensure contract is built and check if deployed. + if self.is_contract_build_required() { + self.ensure_contract_built(&mut cli::Cli).await?; + self.confirm_contract_deployment(&mut cli::Cli)?; + } + + // Parse the contract metadata provided. If there is an error, do not prompt for more. + let messages = match get_messages(contract_path) { + Ok(messages) => messages, + Err(e) => { + return Err(anyhow!(format!( + "Unable to fetch contract metadata: {}", + e.to_string().replace("Anyhow error: ", "") + ))); + }, + }; + + // Resolve url. + if !repeat && self.url.as_str() == DEFAULT_URL { + // Prompt for url. + let url: String = cli + .input("Where is your contract deployed?") + .placeholder("ws://localhost:9944") + .default_input("ws://localhost:9944") + .interact()?; + self.url = url::Url::parse(&url)? + }; + + // Resolve contract address. + if self.contract.is_none() { + // Prompt for contract address. + let contract_address: String = cli + .input("Provide the on-chain contract address:") + .placeholder("e.g. 5DYs7UGBm2LuX4ryvyqfksozNAW5V47tPbGiVgnjYWCZ29bt") + .validate(|input: &String| match parse_account(input) { + Ok(_) => Ok(()), + Err(_) => Err("Invalid address."), + }) + .interact()?; + self.contract = Some(contract_address); + }; + + // Resolve message. + let message = { + let mut prompt = cli.select("Select the message to call:"); + for select_message in &messages { + prompt = prompt.item( + select_message, + format!("{}\n", &select_message.label), + &select_message.docs, + ); + } + let message = prompt.interact()?; + self.message = Some(message.label.clone()); + message + }; + + // Resolve message arguments. + let mut contract_args = Vec::new(); + for arg in &message.args { + let mut input = cli + .input(format!("Enter the value for the parameter: {}", arg.label)) + .placeholder(&format!("Type required: {}", arg.type_name)); + + // Set default input only if the parameter type is `Option` (Not mandatory) + if arg.type_name.starts_with("Option<") { + input = input.default_input(""); + } + contract_args.push(input.interact()?); + } + self.args = contract_args; + + // Resolve value. + if message.payable && self.value == DEFAULT_PAYABLE_VALUE { + self.value = cli + .input("Value to transfer to the call:") + .placeholder("0") + .default_input("0") + .validate(|input: &String| match input.parse::() { + Ok(_) => Ok(()), + Err(_) => Err("Invalid value."), + }) + .interact()?; + } + + // Resolve gas limit. + if message.mutates && !self.dev_mode && self.gas_limit.is_none() { + // Prompt for gas limit and proof_size of the call. + let gas_limit_input: String = cli + .input("Enter the gas limit:") + .required(false) + .default_input("") + .placeholder("If left blank, an estimation will be used") + .interact()?; + self.gas_limit = gas_limit_input.parse::().ok(); // If blank or bad input, estimate it. + } + + // Resolve proof size. + if message.mutates && !self.dev_mode && self.proof_size.is_none() { + let proof_size_input: String = cli + .input("Enter the proof size limit:") + .required(false) + .placeholder("If left blank, an estimation will be used") + .default_input("") + .interact()?; + self.proof_size = proof_size_input.parse::().ok(); // If blank or bad input, estimate it. + } + + // Resolve who is calling the contract. + if self.suri == DEFAULT_URI { + // Prompt for uri. + self.suri = cli + .input("Signer calling the contract:") + .placeholder("//Alice") + .default_input("//Alice") + .interact()?; + }; + + // Finally prompt for confirmation. + let is_call_confirmed = if message.mutates && !self.dev_mode { + cli.confirm("Do you want to execute the call? (Selecting 'No' will perform a dry run)") + .initial_value(true) + .interact()? + } else { + true + }; + self.execute = is_call_confirmed && message.mutates; + self.dry_run = !is_call_confirmed; + + cli.info(self.display())?; + Ok(()) + } + + /// Execute the call. + async fn execute_call( + &mut self, + cli: &mut impl Cli, + prompt_to_repeat_call: bool, + ) -> Result<()> { + let message = match &self.message { + Some(message) => message.to_string(), + None => { + return Err(anyhow!("Please specify the message to call.")); + }, + }; + let contract = match &self.contract { + Some(contract) => contract.to_string(), + None => { + return Err(anyhow!("Please specify the contract address.")); + }, + }; + let call_exec = match set_up_call(CallOpts { path: self.path.clone(), - contract: self.contract.clone(), - message: self.message.clone(), + contract, + message, args: self.args.clone(), value: self.value.clone(), gas_limit: self.gas_limit, @@ -74,63 +358,725 @@ impl CallContractCommand { suri: self.suri.clone(), execute: self.execute, }) - .await?; + .await + { + Ok(call_exec) => call_exec, + Err(e) => { + return Err(anyhow!(format!("{}", e.to_string()))); + }, + }; if self.dry_run { - let spinner = cliclack::spinner(); + let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); match dry_run_gas_estimate_call(&call_exec).await { Ok(w) => { - log::info(format!("Gas limit: {:?}", w))?; - log::warning("Your call has not been executed.")?; + cli.info(format!("Gas limit: {:?}", w))?; + cli.warning("Your call has not been executed.")?; }, Err(e) => { spinner.error(format!("{e}")); - outro_cancel("Call failed.")?; + display_message("Call failed.", false, cli)?; }, }; return Ok(()); } if !self.execute { - let spinner = cliclack::spinner(); + let spinner = spinner(); spinner.start("Calling the contract..."); let call_dry_run_result = dry_run_call(&call_exec).await?; - log::info(format!("Result: {}", call_dry_run_result))?; - log::warning("Your call has not been executed.")?; - log::warning(format!( - "To submit the transaction and execute the call on chain, add {} flag to the command.", - "-x/--execute" - ))?; + cli.info(format!("Result: {}", call_dry_run_result))?; + cli.warning("Your call has not been executed.")?; } else { let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) } else { - let spinner = cliclack::spinner(); + let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); match dry_run_gas_estimate_call(&call_exec).await { Ok(w) => { - log::info(format!("Gas limit: {:?}", w))?; + cli.info(format!("Gas limit: {:?}", w))?; w }, Err(e) => { spinner.error(format!("{e}")); - outro_cancel("Call failed.")?; - return Ok(()); + return Err(anyhow!("Call failed.")); }, } }; - let spinner = cliclack::spinner(); + let spinner = spinner(); spinner.start("Calling the contract..."); let call_result = call_smart_contract(call_exec, weight_limit, &self.url) .await .map_err(|err| anyhow!("{} {}", "ERROR:", format!("{err:?}")))?; - log::info(call_result)?; + cli.info(call_result)?; } - outro("Call completed successfully!")?; + // Prompt for any additional calls. + if !prompt_to_repeat_call { + display_message("Call completed successfully!", true, cli)?; + return Ok(()); + } + if cli + .confirm("Do you want to perform another call using the existing smart contract?") + .initial_value(false) + .interact()? + { + // Reset specific items from the last call and repeat. + self.reset_for_new_call(); + self.configure(cli, true).await?; + Box::pin(self.execute_call(cli, prompt_to_repeat_call)).await + } else { + display_message("Contract calling complete.", true, cli)?; + Ok(()) + } + } + + /// Resets message specific fields to default values for a new call. + fn reset_for_new_call(&mut self) { + self.message = None; + self.value = DEFAULT_PAYABLE_VALUE.to_string(); + self.gas_limit = None; + self.proof_size = None; + } +} + +fn display_message(message: &str, success: bool, cli: &mut impl Cli) -> Result<()> { + if success { + cli.outro(message)?; + } else { + cli.outro_cancel(message)?; + } + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::cli::MockCli; + use pop_contracts::{mock_build_process, new_environment}; + use std::{env, fs::write}; + use url::Url; + + #[tokio::test] + async fn execute_query_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + // Contract deployed on Pop Network testnet, test get + CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()), + message: Some("get".to_string()), + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: false, + execute: false, + dev_mode: false, + } + .execute() + .await?; Ok(()) } + + #[tokio::test] + async fn call_contract_dry_run_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + + let mut cli = MockCli::new() + .expect_intro(&"Call a contract") + .expect_warning("Your call has not been executed.") + .expect_info("Gas limit: Weight { ref_time: 100, proof_size: 10 }"); + + let mut call_config = CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()), + message: Some("flip".to_string()), + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: Some(100), + proof_size: Some(10), + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: true, + execute: false, + dev_mode: false, + }; + call_config.configure(&mut cli, false).await?; + assert_eq!(call_config.display(), format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + temp_dir.path().join("testing").display().to_string(), + )); + // Contract deployed on Pop Network testnet, test dry-run + call_config.execute_call(&mut cli, false).await?; + + cli.verify() + } + + #[tokio::test] + async fn call_contract_dry_run_with_artifact_file_works() -> Result<()> { + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + + let mut cli = MockCli::new() + .expect_intro(&"Call a contract") + .expect_warning("Your call has not been executed.") + .expect_info("Gas limit: Weight { ref_time: 100, proof_size: 10 }"); + + // From .contract file + let mut call_config = CallContractCommand { + path: Some(current_dir.join("pop-contracts/tests/files/testing.contract")), + contract: Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()), + message: Some("flip".to_string()), + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: Some(100), + proof_size: Some(10), + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: true, + execute: false, + dev_mode: false, + }; + call_config.configure(&mut cli, false).await?; + assert_eq!(call_config.display(), format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + current_dir.join("pop-contracts/tests/files/testing.contract").display().to_string(), + )); + // Contract deployed on Pop Network testnet, test dry-run + call_config.execute_call(&mut cli, false).await?; + + // From .json file + call_config.path = Some(current_dir.join("pop-contracts/tests/files/testing.json")); + call_config.configure(&mut cli, false).await?; + assert_eq!(call_config.display(), format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + current_dir.join("pop-contracts/tests/files/testing.json").display().to_string(), + )); + + // From .wasm file + call_config.path = Some(current_dir.join("pop-contracts/tests/files/testing.wasm")); + call_config.configure(&mut cli, false).await?; + assert_eq!(call_config.display(), format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + current_dir.join("pop-contracts/tests/files/testing.wasm").display().to_string(), + )); + // Contract deployed on Pop Network testnet, test dry-run + call_config.execute_call(&mut cli, false).await?; + + cli.verify() + } + + #[tokio::test] + async fn call_contract_query_duplicate_call_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + let items = vec![ + ("flip\n".into(), " A message that can be called on instantiated contracts. This one flips the value of the stored `bool` from `true` to `false` and vice versa.".into()), + ("get\n".into(), " Simply returns the current value of our `bool`.".into()), + ("specific_flip\n".into(), " A message for testing, flips the value of the stored `bool` with `new_value` and is payable".into()) + ]; + let mut cli = MockCli::new() + .expect_intro(&"Call a contract") + .expect_warning("Your call has not been executed.") + .expect_confirm( + "Do you want to perform another call using the existing smart contract?", + false, + ) + .expect_confirm( + "Do you want to perform another call using the existing smart contract?", + true, + ) + .expect_select::( + "Select the message to call:", + Some(false), + true, + Some(items), + 1, // "get" message + ) + .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_info(format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", + temp_dir.path().join("testing").display().to_string(), + )) + .expect_warning("Your call has not been executed.") + .expect_outro("Contract calling complete."); + + // Contract deployed on Pop Network testnet, test get + let mut call_config = CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()), + message: Some("get".to_string()), + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }; + call_config.configure(&mut cli, false).await?; + // Test the query. With true, it will prompt for another call. + call_config.execute_call(&mut cli, true).await?; + + cli.verify() + } + + // This test only covers the interactive portion of the call contract command, without actually + // calling the contract. + #[tokio::test] + async fn guide_user_to_query_contract_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + + let items = vec![ + ("flip\n".into(), " A message that can be called on instantiated contracts. This one flips the value of the stored `bool` from `true` to `false` and vice versa.".into()), + ("get\n".into(), " Simply returns the current value of our `bool`.".into()), + ("specific_flip\n".into(), " A message for testing, flips the value of the stored `bool` with `new_value` and is payable".into()) + ]; + // The inputs are processed in reverse order. + let mut cli = MockCli::new() + .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_select::( + "Select the message to call:", + Some(false), + true, + Some(items), + 1, // "get" message + ) + .expect_input( + "Provide the on-chain contract address:", + "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + ) + .expect_input( + "Where is your contract deployed?", + "wss://rpc1.paseo.popnetwork.xyz".into(), + ) + .expect_input( + "Where is your project or contract artifact located?", + temp_dir.path().join("testing").display().to_string(), + ).expect_info(format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", + temp_dir.path().join("testing").display().to_string(), + )); + + let mut call_config = CallContractCommand { + path: None, + contract: None, + message: None, + args: vec![].to_vec(), + value: DEFAULT_PAYABLE_VALUE.to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse(DEFAULT_URL)?, + suri: DEFAULT_URI.to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }; + call_config.configure(&mut cli, false).await?; + assert_eq!( + call_config.contract, + Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()) + ); + assert_eq!(call_config.message, Some("get".to_string())); + assert_eq!(call_config.args.len(), 0); + assert_eq!(call_config.value, "0".to_string()); + assert_eq!(call_config.gas_limit, None); + assert_eq!(call_config.proof_size, None); + assert_eq!(call_config.url.to_string(), "wss://rpc1.paseo.popnetwork.xyz/"); + assert_eq!(call_config.suri, "//Alice"); + assert!(!call_config.execute); + assert!(!call_config.dry_run); + assert_eq!(call_config.display(), format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", + temp_dir.path().join("testing").display().to_string(), + )); + + cli.verify() + } + + // This test only covers the interactive portion of the call contract command, without actually + // calling the contract. + #[tokio::test] + async fn guide_user_to_call_contract_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + + let items = vec![ + ("flip\n".into(), " A message that can be called on instantiated contracts. This one flips the value of the stored `bool` from `true` to `false` and vice versa.".into()), + ("get\n".into(), " Simply returns the current value of our `bool`.".into()), + ("specific_flip\n".into(), " A message for testing, flips the value of the stored `bool` with `new_value` and is payable".into()) + ]; + // The inputs are processed in reverse order. + let mut cli = MockCli::new() + .expect_confirm("Do you want to execute the call? (Selecting 'No' will perform a dry run)", true) + .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_input("Enter the proof size limit:", "".into()) // Only if call + .expect_input("Enter the gas limit:", "".into()) // Only if call + .expect_input("Value to transfer to the call:", "50".into()) // Only if payable + .expect_input("Enter the value for the parameter: number", "2".into()) // Args for specific_flip + .expect_input("Enter the value for the parameter: new_value", "true".into()) // Args for specific_flip + .expect_select::( + "Select the message to call:", + Some(false), + true, + Some(items), + 2, // "specific_flip" message + ) + .expect_input( + "Provide the on-chain contract address:", + "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + ) + .expect_input( + "Where is your contract deployed?", + "wss://rpc1.paseo.popnetwork.xyz".into(), + ) + .expect_input( + "Where is your project or contract artifact located?", + temp_dir.path().join("testing").display().to_string(), + ).expect_info(format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", + temp_dir.path().join("testing").display().to_string(), + )); + + let mut call_config = CallContractCommand { + path: None, + contract: None, + message: None, + args: vec![].to_vec(), + value: DEFAULT_PAYABLE_VALUE.to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse(DEFAULT_URL)?, + suri: DEFAULT_URI.to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }; + call_config.configure(&mut cli, false).await?; + assert_eq!( + call_config.contract, + Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()) + ); + assert_eq!(call_config.message, Some("specific_flip".to_string())); + assert_eq!(call_config.args.len(), 2); + assert_eq!(call_config.args[0], "true".to_string()); + assert_eq!(call_config.args[1], "2".to_string()); + assert_eq!(call_config.value, "50".to_string()); + assert_eq!(call_config.gas_limit, None); + assert_eq!(call_config.proof_size, None); + assert_eq!(call_config.url.to_string(), "wss://rpc1.paseo.popnetwork.xyz/"); + assert_eq!(call_config.suri, "//Alice"); + assert!(call_config.execute); + assert!(!call_config.dry_run); + assert_eq!(call_config.display(), format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", + temp_dir.path().join("testing").display().to_string(), + )); + + cli.verify() + } + + // This test only covers the interactive portion of the call contract command, without actually + // calling the contract. + #[tokio::test] + async fn guide_user_to_call_contract_in_dev_mode_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + + let items = vec![ + ("flip\n".into(), " A message that can be called on instantiated contracts. This one flips the value of the stored `bool` from `true` to `false` and vice versa.".into()), + ("get\n".into(), " Simply returns the current value of our `bool`.".into()), + ("specific_flip\n".into(), " A message for testing, flips the value of the stored `bool` with `new_value` and is payable".into()) + ]; + // The inputs are processed in reverse order. + let mut cli = MockCli::new() + .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_input("Value to transfer to the call:", "50".into()) // Only if payable + .expect_input("Enter the value for the parameter: number", "2".into()) // Args for specific_flip + .expect_input("Enter the value for the parameter: new_value", "true".into()) // Args for specific_flip + .expect_select::( + "Select the message to call:", + Some(false), + true, + Some(items), + 2, // "specific_flip" message + ) + .expect_input( + "Provide the on-chain contract address:", + "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + ) + .expect_input( + "Where is your contract deployed?", + "wss://rpc1.paseo.popnetwork.xyz".into(), + ) + .expect_input( + "Where is your project or contract artifact located?", + temp_dir.path().join("testing").display().to_string(), + ).expect_info(format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", + temp_dir.path().join("testing").display().to_string(), + )); + + let mut call_config = CallContractCommand { + path: None, + contract: None, + message: None, + args: vec![].to_vec(), + value: DEFAULT_PAYABLE_VALUE.to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse(DEFAULT_URL)?, + suri: DEFAULT_URI.to_string(), + dry_run: false, + execute: false, + dev_mode: true, + }; + call_config.configure(&mut cli, false).await?; + assert_eq!( + call_config.contract, + Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()) + ); + assert_eq!(call_config.message, Some("specific_flip".to_string())); + assert_eq!(call_config.args.len(), 2); + assert_eq!(call_config.args[0], "true".to_string()); + assert_eq!(call_config.args[1], "2".to_string()); + assert_eq!(call_config.value, "50".to_string()); + assert_eq!(call_config.gas_limit, None); + assert_eq!(call_config.proof_size, None); + assert_eq!(call_config.url.to_string(), "wss://rpc1.paseo.popnetwork.xyz/"); + assert_eq!(call_config.suri, "//Alice"); + assert!(call_config.execute); + assert!(!call_config.dry_run); + assert!(call_config.dev_mode); + assert_eq!(call_config.display(), format!( + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", + temp_dir.path().join("testing").display().to_string(), + )); + + cli.verify() + } + + #[tokio::test] + async fn guide_user_to_call_contract_fails_not_build() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + // Create invalid `.json`, `.contract` and `.wasm` files for testing + let invalid_contract_path = temp_dir.path().join("testing.contract"); + let invalid_json_path = temp_dir.path().join("testing.json"); + let invalid_wasm_path = temp_dir.path().join("testing.wasm"); + write(&invalid_contract_path, b"This is an invalid contract file")?; + write(&invalid_json_path, b"This is an invalid JSON file")?; + write(&invalid_wasm_path, b"This is an invalid WASM file")?; + // Mock the build process to simulate a scenario where the contract is not properly built. + mock_build_process( + temp_dir.path().join("testing"), + invalid_contract_path.clone(), + invalid_contract_path.clone(), + )?; + // Test the path is a folder with an invalid build. + let mut command = CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: None, + message: None, + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }; + let mut cli = MockCli::new(); + assert!( + matches!(command.configure(&mut cli, false).await, Err(message) if message.to_string().contains("Unable to fetch contract metadata")) + ); + // Test the path is a file with invalid `.contract` file. + command.path = Some(invalid_contract_path); + assert!( + matches!(command.configure(&mut cli, false).await, Err(message) if message.to_string().contains("Unable to fetch contract metadata")) + ); + // Test the path is a file with invalid `.json` file. + command.path = Some(invalid_json_path); + assert!( + matches!(command.configure(&mut cli, false).await, Err(message) if message.to_string().contains("Unable to fetch contract metadata")) + ); + // Test the path is a file with invalid `.wasm` file. + command.path = Some(invalid_wasm_path); + assert!( + matches!(command.configure(&mut cli, false).await, Err(message) if message.to_string().contains("Unable to fetch contract metadata")) + ); + cli.verify() + } + + #[tokio::test] + async fn execute_contract_fails_no_message_or_contract() -> Result<()> { + let temp_dir = new_environment("testing")?; + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + + let mut cli = MockCli::new(); + assert!(matches!( + CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()), + message: None, + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }.execute_call(&mut cli, false).await, + anyhow::Result::Err(message) if message.to_string() == "Please specify the message to call." + )); + + assert!(matches!( + CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: None, + message: Some("get".to_string()), + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }.execute_call(&mut cli, false).await, + anyhow::Result::Err(message) if message.to_string() == "Please specify the contract address." + )); + + cli.verify() + } + + #[tokio::test] + async fn confirm_contract_deployment_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let call_config = CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()), + message: None, + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }; + // Contract is not deployed. + let mut cli = + MockCli::new().expect_confirm("Has the contract already been deployed?", false); + assert!( + matches!(call_config.confirm_contract_deployment(&mut cli), anyhow::Result::Err(message) if message.to_string() == "Contract not deployed.") + ); + cli.verify()?; + // Contract is deployed. + cli = MockCli::new().expect_confirm("Has the contract already been deployed?", true); + call_config.confirm_contract_deployment(&mut cli)?; + cli.verify() + } + + #[tokio::test] + async fn is_contract_build_required_works() -> Result<()> { + let temp_dir = new_environment("testing")?; + let call_config = CallContractCommand { + path: Some(temp_dir.path().join("testing")), + contract: Some("15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".to_string()), + message: None, + args: vec![].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, + suri: "//Alice".to_string(), + dry_run: false, + execute: false, + dev_mode: false, + }; + // Contract not build. Build is required. + assert!(call_config.is_contract_build_required()); + // Mock build process. Build is not required. + let mut current_dir = env::current_dir().expect("Failed to get current directory"); + current_dir.pop(); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("pop-contracts/tests/files/testing.contract"), + current_dir.join("pop-contracts/tests/files/testing.json"), + )?; + assert!(!call_config.is_contract_build_required()); + Ok(()) + } + + #[test] + fn display_message_works() -> Result<()> { + let mut cli = MockCli::new().expect_outro(&"Call completed successfully!"); + display_message("Call completed successfully!", true, &mut cli)?; + cli.verify()?; + let mut cli = MockCli::new().expect_outro_cancel("Call failed."); + display_message("Call failed.", false, &mut cli)?; + cli.verify() + } } diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 9b19ef6c..cc50619f 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -2,14 +2,13 @@ use crate::{ cli::{traits::Cli as _, Cli}, - common::contracts::check_contracts_node_and_prompt, + common::contracts::{check_contracts_node_and_prompt, has_contract_been_built}, style::style, wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; use console::{Emoji, Style}; -use pop_common::manifest::from_path; use pop_contracts::{ build_smart_contract, dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, @@ -20,7 +19,7 @@ use pop_contracts::{ use sp_core::Bytes; use sp_weights::Weight; use std::{ - path::{Path, PathBuf}, + path::PathBuf, process::{Child, Command}, }; use tempfile::NamedTempFile; @@ -39,7 +38,7 @@ pub struct UpContractCommand { #[clap(name = "constructor", long, default_value = "new")] constructor: String, /// The constructor arguments, encoded as strings. - #[clap(long, num_args = 0..)] + #[clap(long, num_args = 0..,)] args: Vec, /// Transfers an initial balance to the instantiated contract. #[clap(name = "value", long, default_value = "0")] @@ -234,7 +233,7 @@ impl UpContractCommand { Self::terminate_node(process)?; Cli.outro(COMPLETE)?; - return Ok(()) + return Ok(()); } // Check for upload only. @@ -426,23 +425,6 @@ impl From for UpOpts { } } -/// Checks if a contract has been built by verifying the existence of the build directory and the -/// .contract file. -/// -/// # Arguments -/// * `path` - An optional path to the project directory. If no path is provided, the current -/// directory is used. -pub fn has_contract_been_built(path: Option<&Path>) -> bool { - let project_path = path.unwrap_or_else(|| Path::new("./")); - let manifest = match from_path(Some(project_path)) { - Ok(manifest) => manifest, - Err(_) => return false, - }; - let contract_name = manifest.package().name(); - project_path.join("target/ink").exists() && - project_path.join(format!("target/ink/{}.contract", contract_name)).exists() -} - fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Option) { spinner.stop(format!( "Contract deployed and instantiated:\n{}", @@ -476,7 +458,7 @@ mod tests { UpContractCommand { path: None, constructor: "new".to_string(), - args: vec!["false".to_string()].to_vec(), + args: vec![], value: "0".to_string(), gas_limit: None, proof_size: None, @@ -499,7 +481,7 @@ mod tests { UpOpts { path: None, constructor: "new".to_string(), - args: vec!["false".to_string()].to_vec(), + args: vec![].to_vec(), value: "0".to_string(), gas_limit: None, proof_size: None, diff --git a/crates/pop-cli/src/common/contracts.rs b/crates/pop-cli/src/common/contracts.rs index e04f51b7..338ca84b 100644 --- a/crates/pop-cli/src/common/contracts.rs +++ b/crates/pop-cli/src/common/contracts.rs @@ -1,8 +1,9 @@ // SPDX-License-Identifier: GPL-3.0 use cliclack::{confirm, log::warning, spinner}; +use pop_common::manifest::from_path; use pop_contracts::contracts_node_generator; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; /// Checks the status of the `substrate-contracts-node` binary, sources it if necessary, and /// prompts the user to update it if the existing binary is not the latest version. @@ -65,3 +66,48 @@ pub async fn check_contracts_node_and_prompt(skip_confirm: bool) -> anyhow::Resu Ok(node_path) } + +/// Checks if a contract has been built by verifying the existence of the build directory and the +/// .contract file. +/// +/// # Arguments +/// * `path` - An optional path to the project directory. If no path is provided, the current +/// directory is used. +pub fn has_contract_been_built(path: Option<&Path>) -> bool { + let project_path = path.unwrap_or_else(|| Path::new("./")); + let Ok(manifest) = from_path(Some(project_path)) else { + return false; + }; + manifest + .package + .map(|p| project_path.join(format!("target/ink/{}.contract", p.name())).exists()) + .unwrap_or_default() +} + +#[cfg(test)] +mod tests { + use super::*; + use duct::cmd; + use std::fs::{self, File}; + + #[test] + fn has_contract_been_built_works() -> anyhow::Result<()> { + let temp_dir = tempfile::tempdir()?; + let path = temp_dir.path(); + + // Standard rust project + let name = "hello_world"; + cmd("cargo", ["new", name]).dir(&path).run()?; + let contract_path = path.join(name); + assert!(!has_contract_been_built(Some(&contract_path))); + + cmd("cargo", ["build"]).dir(&contract_path).run()?; + // Mock build directory + fs::create_dir(&contract_path.join("target/ink"))?; + assert!(!has_contract_been_built(Some(&path.join(name)))); + // Create a mocked .contract file inside the target directory + File::create(contract_path.join(format!("target/ink/{}.contract", name)))?; + assert!(has_contract_been_built(Some(&path.join(name)))); + Ok(()) + } +} diff --git a/crates/pop-contracts/Cargo.toml b/crates/pop-contracts/Cargo.toml index 23c6f0a6..3d4f15fb 100644 --- a/crates/pop-contracts/Cargo.toml +++ b/crates/pop-contracts/Cargo.toml @@ -33,7 +33,8 @@ subxt.workspace = true # cargo-contracts contract-build.workspace = true contract-extrinsics.workspace = true - +contract-transcode.workspace = true +scale-info.workspace = true # pop pop-common = { path = "../pop-common", version = "0.5.0" } diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 92ef55c6..a554bc2f 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -4,13 +4,14 @@ use crate::{ errors::Error, utils::{ helpers::{get_manifest_path, parse_account, parse_balance}, + metadata::{process_function_args, FunctionType}, signer::create_signer, }, }; use anyhow::Context; use contract_build::Verbosity; use contract_extrinsics::{ - BalanceVariant, CallCommandBuilder, CallExec, DisplayEvents, ErrorVariant, + BalanceVariant, CallCommandBuilder, CallExec, ContractArtifacts, DisplayEvents, ErrorVariant, ExtrinsicOptsBuilder, TokenMetadata, }; use ink_env::{DefaultEnvironment, Environment}; @@ -28,7 +29,7 @@ pub struct CallOpts { pub contract: String, /// The name of the contract message to call. pub message: String, - /// The constructor arguments, encoded as strings. + /// The message arguments, encoded as strings. pub args: Vec, /// Transfers an initial balance to the instantiated contract. pub value: String, @@ -51,24 +52,43 @@ pub struct CallOpts { /// * `call_opts` - options for the `call` command. pub async fn set_up_call( call_opts: CallOpts, -) -> anyhow::Result> { +) -> Result, Error> { let token_metadata = TokenMetadata::query::(&call_opts.url).await?; - let manifest_path = get_manifest_path(call_opts.path.as_deref())?; let signer = create_signer(&call_opts.suri)?; - let extrinsic_opts = ExtrinsicOptsBuilder::new(signer) - .manifest_path(Some(manifest_path)) - .url(call_opts.url.clone()) - .done(); + let extrinsic_opts = match &call_opts.path { + // If path is a file construct the ExtrinsicOptsBuilder from the file. + Some(path) if path.is_file() => { + let artifacts = ContractArtifacts::from_manifest_or_file(None, Some(path))?; + ExtrinsicOptsBuilder::new(signer) + .file(Some(artifacts.artifact_path())) + .url(call_opts.url.clone()) + .done() + }, + _ => { + let manifest_path = get_manifest_path(call_opts.path.as_deref())?; + ExtrinsicOptsBuilder::new(signer) + .manifest_path(Some(manifest_path)) + .url(call_opts.url.clone()) + .done() + }, + }; let value: BalanceVariant<::Balance> = parse_balance(&call_opts.value)?; let contract: ::AccountId = parse_account(&call_opts.contract)?; + // Process the provided argument values. + let args = process_function_args( + call_opts.path.unwrap_or_else(|| PathBuf::from("./")), + &call_opts.message, + call_opts.args, + FunctionType::Message, + )?; let call_exec: CallExec = CallCommandBuilder::new(contract.clone(), &call_opts.message, extrinsic_opts) - .args(call_opts.args.clone()) + .args(args) .value(value.denominate_balance(&token_metadata)?) .gas_limit(call_opts.gas_limit) .proof_size(call_opts.proof_size) @@ -158,43 +178,48 @@ pub async fn call_smart_contract( mod tests { use super::*; use crate::{ - contracts_node_generator, create_smart_contract, dry_run_gas_estimate_instantiate, - errors::Error, instantiate_smart_contract, run_contracts_node, set_up_deployment, Contract, - UpOpts, + contracts_node_generator, dry_run_gas_estimate_instantiate, errors::Error, + instantiate_smart_contract, mock_build_process, new_environment, run_contracts_node, + set_up_deployment, UpOpts, }; use anyhow::Result; use sp_core::Bytes; - use std::{env, fs, process::Command}; + use std::{env, process::Command}; const CONTRACTS_NETWORK_URL: &str = "wss://rpc2.paseo.popnetwork.xyz"; - fn generate_smart_contract_test_environment() -> Result { - let temp_dir = tempfile::tempdir().expect("Could not create temp dir"); - let temp_contract_dir = temp_dir.path().join("testing"); - fs::create_dir(&temp_contract_dir)?; - create_smart_contract("testing", temp_contract_dir.as_path(), &Contract::Standard)?; - Ok(temp_dir) - } - // Function that mocks the build process generating the contract artifacts. - fn mock_build_process(temp_contract_dir: PathBuf) -> Result<(), Error> { - // Create a target directory - let target_contract_dir = temp_contract_dir.join("target"); - fs::create_dir(&target_contract_dir)?; - fs::create_dir(&target_contract_dir.join("ink"))?; - // Copy a mocked testing.contract file inside the target directory + #[tokio::test] + async fn test_set_up_call() -> Result<()> { + let temp_dir = new_environment("testing")?; let current_dir = env::current_dir().expect("Failed to get current directory"); - let contract_file = current_dir.join("tests/files/testing.contract"); - fs::copy(contract_file, &target_contract_dir.join("ink/testing.contract"))?; + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; + + let call_opts = CallOpts { + path: Some(temp_dir.path().join("testing")), + contract: "5CLPm1CeUvJhZ8GCDZCR7nWZ2m3XXe4X5MtAQK69zEjut36A".to_string(), + message: "get".to_string(), + args: [].to_vec(), + value: "1000".to_string(), + gas_limit: None, + proof_size: None, + url: Url::parse(CONTRACTS_NETWORK_URL)?, + suri: "//Alice".to_string(), + execute: false, + }; + let call = set_up_call(call_opts).await?; + assert_eq!(call.message(), "get"); Ok(()) } #[tokio::test] - async fn test_set_up_call() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; - + async fn test_set_up_call_from_artifact_file() -> Result<()> { + let current_dir = env::current_dir().expect("Failed to get current directory"); let call_opts = CallOpts { - path: Some(temp_dir.path().join("testing")), + path: Some(current_dir.join("./tests/files/testing.json")), contract: "5CLPm1CeUvJhZ8GCDZCR7nWZ2m3XXe4X5MtAQK69zEjut36A".to_string(), message: "get".to_string(), args: [].to_vec(), @@ -212,7 +237,7 @@ mod tests { #[tokio::test] async fn test_set_up_call_error_contract_not_build() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; + let temp_dir = new_environment("testing")?; let call_opts = CallOpts { path: Some(temp_dir.path().join("testing")), contract: "5CLPm1CeUvJhZ8GCDZCR7nWZ2m3XXe4X5MtAQK69zEjut36A".to_string(), @@ -225,11 +250,9 @@ mod tests { suri: "//Alice".to_string(), execute: false, }; - let call = set_up_call(call_opts).await; - assert!(call.is_err()); - let error = call.err().unwrap(); - assert_eq!(error.root_cause().to_string(), "Failed to find any contract artifacts in target directory. \nRun `cargo contract build --release` to generate the artifacts."); - + assert!( + matches!(set_up_call(call_opts).await, Err(Error::AnyhowError(message)) if message.root_cause().to_string() == "Failed to find any contract artifacts in target directory. \nRun `cargo contract build --release` to generate the artifacts.") + ); Ok(()) } #[tokio::test] @@ -246,18 +269,21 @@ mod tests { suri: "//Alice".to_string(), execute: false, }; - let call = set_up_call(call_opts).await; - assert!(call.is_err()); - let error = call.err().unwrap(); - assert_eq!(error.root_cause().to_string(), "No 'ink' dependency found"); - + assert!( + matches!(set_up_call(call_opts).await, Err(Error::AnyhowError(message)) if message.root_cause().to_string() == "No 'ink' dependency found") + ); Ok(()) } #[tokio::test] async fn test_dry_run_call_error_contract_not_deployed() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let call_opts = CallOpts { path: Some(temp_dir.path().join("testing")), @@ -278,8 +304,13 @@ mod tests { #[tokio::test] async fn test_dry_run_estimate_call_error_contract_not_deployed() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let call_opts = CallOpts { path: Some(temp_dir.path().join("testing")), @@ -304,8 +335,13 @@ mod tests { #[tokio::test] async fn call_works() -> Result<()> { const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let cache = temp_dir.path().join(""); diff --git a/crates/pop-contracts/src/errors.rs b/crates/pop-contracts/src/errors.rs index a0ea14ad..b59031a0 100644 --- a/crates/pop-contracts/src/errors.rs +++ b/crates/pop-contracts/src/errors.rs @@ -24,10 +24,16 @@ pub enum Error { HexParsing(String), #[error("HTTP error: {0}")] HttpError(#[from] reqwest::Error), + #[error("Incorrect number of arguments provided. Expecting {expected}, {provided} provided")] + IncorrectArguments { expected: usize, provided: usize }, #[error("Failed to install {0}")] InstallContractsNode(String), #[error("{0}")] InstantiateContractError(String), + #[error("Invalid constructor name: {0}")] + InvalidConstructorName(String), + #[error("Invalid message name: {0}")] + InvalidMessageName(String), #[error("Invalid name: {0}")] InvalidName(String), #[error("IO error: {0}")] @@ -36,6 +42,8 @@ pub enum Error { KeyPairCreation(String), #[error("Failed to get manifest path: {0}")] ManifestPath(String), + #[error("Argument {0} is required")] + MissingArgument(String), #[error("Failed to create new contract project: {0}")] NewContract(String), #[error("ParseError error: {0}")] @@ -44,12 +52,12 @@ pub enum Error { ParseSecretURI(String), #[error("The `Repository` property is missing from the template variant")] RepositoryMissing, + #[error("Sourcing error {0}")] + SourcingError(SourcingError), #[error("Failed to execute test command: {0}")] TestCommand(String), #[error("Unsupported platform: {os}")] UnsupportedPlatform { os: &'static str }, #[error("{0}")] UploadContractError(String), - #[error("Sourcing error {0}")] - SourcingError(SourcingError), } diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 231b144f..077b76fe 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -8,6 +8,7 @@ mod new; mod node; mod templates; mod test; +mod testing; mod up; mod utils; @@ -19,10 +20,15 @@ pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; +pub use testing::{mock_build_process, new_environment}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_contract_signed, instantiate_smart_contract, set_up_deployment, set_up_upload, submit_signed_payload, upload_contract_signed, upload_smart_contract, ContractInfo, UpOpts, }; -pub use utils::signer::parse_hex_bytes; +pub use utils::{ + helpers::parse_account, + metadata::{get_messages, ContractFunction}, + signer::parse_hex_bytes, +}; diff --git a/crates/pop-contracts/src/testing.rs b/crates/pop-contracts/src/testing.rs new file mode 100644 index 00000000..6a8abfcd --- /dev/null +++ b/crates/pop-contracts/src/testing.rs @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::{create_smart_contract, Contract}; +use anyhow::Result; +use std::{ + fs::{copy, create_dir}, + path::Path, +}; + +/// Generates a smart contract test environment. +/// +/// * `name` - The name of the contract to be created. +pub fn new_environment(name: &str) -> Result { + let temp_dir = tempfile::tempdir().expect("Could not create temp dir"); + let temp_contract_dir = temp_dir.path().join(name); + create_dir(&temp_contract_dir)?; + create_smart_contract(name, temp_contract_dir.as_path(), &Contract::Standard)?; + Ok(temp_dir) +} + +/// Mocks the build process by generating contract artifacts in a specified temporary directory. +/// +/// * `temp_contract_dir` - The root directory where the `target` folder and artifacts will be +/// created. +/// * `contract_file` - The path to the mocked contract file to be copied. +/// * `metadata_file` - The path to the mocked metadata file to be copied. +pub fn mock_build_process

(temp_contract_dir: P, contract_file: P, metadata_file: P) -> Result<()> +where + P: AsRef, +{ + // Create a target directory + let target_contract_dir = temp_contract_dir.as_ref().join("target"); + create_dir(&target_contract_dir)?; + create_dir(target_contract_dir.join("ink"))?; + // Copy a mocked testing.contract and testing.json files inside the target directory + copy(contract_file, target_contract_dir.join("ink/testing.contract"))?; + copy(metadata_file, target_contract_dir.join("ink/testing.json"))?; + Ok(()) +} diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 3d99c1b0..16f7a6ac 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -3,6 +3,7 @@ use crate::{ errors::Error, utils::{ helpers::{get_manifest_path, parse_balance}, + metadata::{process_function_args, FunctionType}, signer::create_signer, }, }; @@ -71,10 +72,17 @@ pub async fn set_up_deployment( let value: BalanceVariant<::Balance> = parse_balance(&up_opts.value)?; + // Process the provided argument values. + let args = process_function_args( + up_opts.path.unwrap_or_else(|| PathBuf::from("./")), + &up_opts.constructor, + up_opts.args, + FunctionType::Constructor, + )?; let instantiate_exec: InstantiateExec = InstantiateCommandBuilder::new(extrinsic_opts) .constructor(up_opts.constructor.clone()) - .args(up_opts.args.clone()) + .args(args) .value(value.denominate_balance(&token_metadata)?) .gas_limit(up_opts.gas_limit) .proof_size(up_opts.proof_size) @@ -372,40 +380,24 @@ pub fn get_code_hash_from_event( mod tests { use super::*; use crate::{ - contracts_node_generator, create_smart_contract, errors::Error, run_contracts_node, - templates::Contract, + contracts_node_generator, errors::Error, mock_build_process, new_environment, + run_contracts_node, }; use anyhow::Result; - use reqwest::get; - use std::{env, fs, process::Command}; + use std::{env, process::Command}; use url::Url; const CONTRACTS_NETWORK_URL: &str = "wss://rpc2.paseo.popnetwork.xyz"; - fn generate_smart_contract_test_environment() -> Result { - let temp_dir = tempfile::tempdir().expect("Could not create temp dir"); - let temp_contract_dir = temp_dir.path().join("testing"); - fs::create_dir(&temp_contract_dir)?; - create_smart_contract("testing", temp_contract_dir.as_path(), &Contract::Standard)?; - Ok(temp_dir) - } - // Function that mocks the build process generating the contract artifacts. - fn mock_build_process(temp_contract_dir: PathBuf) -> Result<(), Error> { - // Create a target directory - let target_contract_dir = temp_contract_dir.join("target"); - fs::create_dir(&target_contract_dir)?; - fs::create_dir(&target_contract_dir.join("ink"))?; - // Copy a mocked testing.contract file inside the target directory - let current_dir = env::current_dir().expect("Failed to get current directory"); - let contract_file = current_dir.join("tests/files/testing.contract"); - fs::copy(contract_file, &target_contract_dir.join("ink/testing.contract"))?; - Ok(()) - } - #[tokio::test] async fn set_up_deployment_works() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let up_opts = UpOpts { path: Some(temp_dir.path().join("testing")), constructor: "new".to_string(), @@ -423,8 +415,13 @@ mod tests { #[tokio::test] async fn set_up_upload_works() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let up_opts = UpOpts { path: Some(temp_dir.path().join("testing")), constructor: "new".to_string(), @@ -462,8 +459,13 @@ mod tests { #[tokio::test] async fn dry_run_gas_estimate_instantiate_works() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let up_opts = UpOpts { path: Some(temp_dir.path().join("testing")), constructor: "new".to_string(), @@ -484,8 +486,13 @@ mod tests { #[tokio::test] async fn dry_run_gas_estimate_instantiate_throw_custom_error() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let up_opts = UpOpts { path: Some(temp_dir.path().join("testing")), constructor: "new".to_string(), @@ -507,8 +514,13 @@ mod tests { #[tokio::test] async fn dry_run_upload_throw_custom_error() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let up_opts = UpOpts { path: Some(temp_dir.path().join("testing")), constructor: "new".to_string(), @@ -530,8 +542,13 @@ mod tests { #[tokio::test] async fn instantiate_and_upload() -> Result<()> { const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let cache = temp_dir.path().join(""); diff --git a/crates/pop-contracts/src/utils/metadata.rs b/crates/pop-contracts/src/utils/metadata.rs new file mode 100644 index 00000000..38cdc12d --- /dev/null +++ b/crates/pop-contracts/src/utils/metadata.rs @@ -0,0 +1,549 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::errors::Error; +use contract_extrinsics::ContractArtifacts; +use contract_transcode::ink_metadata::MessageParamSpec; +use scale_info::{form::PortableForm, PortableRegistry, Type, TypeDef, TypeDefPrimitive}; +use std::path::Path; + +/// Describes a parameter. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Param { + /// The label of the parameter. + pub label: String, + /// The type name of the parameter. + pub type_name: String, +} + +/// Describes a contract function. +#[derive(Clone, PartialEq, Eq)] +pub struct ContractFunction { + /// The label of the function. + pub label: String, + /// If the function accepts any `value` from the caller. + pub payable: bool, + /// The parameters of the deployment handler. + pub args: Vec, + /// The function documentation. + pub docs: String, + /// If the message/constructor is the default for off-chain consumers (e.g UIs). + pub default: bool, + /// If the message is allowed to mutate the contract state. true for constructors. + pub mutates: bool, +} + +/// Specifies the type of contract funtion, either a constructor or a message. +#[derive(Clone, PartialEq, Eq)] +pub enum FunctionType { + Constructor, + Message, +} + +/// Extracts a list of smart contract messages parsing the contract artifact. +/// +/// # Arguments +/// * `path` - Location path of the project or contract artifact. +pub fn get_messages

(path: P) -> Result, Error> +where + P: AsRef, +{ + get_contract_functions(path.as_ref(), FunctionType::Message) +} + +/// Extracts a list of smart contract contructors parsing the contract artifact. +/// +/// # Arguments +/// * `path` - Location path of the project or contract artifact. +pub fn get_constructors

(path: P) -> Result, Error> +where + P: AsRef, +{ + get_contract_functions(path.as_ref(), FunctionType::Constructor) +} + +/// Extracts a list of smart contract functions (messages or constructors) parsing the contract +/// artifact. +/// +/// # Arguments +/// * `path` - Location path of the project or contract artifact. +/// * `function_type` - Specifies whether to extract messages or constructors. +fn get_contract_functions( + path: &Path, + function_type: FunctionType, +) -> Result, Error> { + let contract_artifacts = if path.is_dir() || path.ends_with("Cargo.toml") { + let cargo_toml_path = + if path.ends_with("Cargo.toml") { path.to_path_buf() } else { path.join("Cargo.toml") }; + ContractArtifacts::from_manifest_or_file(Some(&cargo_toml_path), None)? + } else { + ContractArtifacts::from_manifest_or_file(None, Some(&path.to_path_buf()))? + }; + let transcoder = contract_artifacts.contract_transcoder()?; + let metadata = transcoder.metadata(); + + Ok(match function_type { + FunctionType::Message => metadata + .spec() + .messages() + .iter() + .map(|message| ContractFunction { + label: message.label().to_string(), + mutates: message.mutates(), + payable: message.payable(), + args: process_args(message.args(), metadata.registry()), + docs: message.docs().join(" "), + default: *message.default(), + }) + .collect(), + FunctionType::Constructor => metadata + .spec() + .constructors() + .iter() + .map(|constructor| ContractFunction { + label: constructor.label().to_string(), + payable: *constructor.payable(), + args: process_args(constructor.args(), metadata.registry()), + docs: constructor.docs().join(" "), + default: *constructor.default(), + mutates: true, + }) + .collect(), + }) +} + +/// Extracts the information of a smart contract message parsing the contract artifact. +/// +/// # Arguments +/// * `path` - Location path of the project or contract artifact. +/// * `message` - The label of the contract message. +fn get_message

(path: P, message: &str) -> Result +where + P: AsRef, +{ + get_messages(path.as_ref())? + .into_iter() + .find(|msg| msg.label == message) + .ok_or_else(|| Error::InvalidMessageName(message.to_string())) +} + +/// Extracts the information of a smart contract constructor parsing the contract artifact. +/// +/// # Arguments +/// * `path` - Location path of the project or contract artifact. +/// * `constructor` - The label of the constructor. +fn get_constructor

(path: P, constructor: &str) -> Result +where + P: AsRef, +{ + get_constructors(path.as_ref())? + .into_iter() + .find(|c| c.label == constructor) + .ok_or_else(|| Error::InvalidConstructorName(constructor.to_string())) +} + +// Parse the parameters into a vector of argument labels. +fn process_args( + params: &[MessageParamSpec], + registry: &PortableRegistry, +) -> Vec { + let mut args: Vec = Vec::new(); + for arg in params { + // Resolve type from registry to provide full type representation. + let type_name = + format_type(registry.resolve(arg.ty().ty().id).expect("type not found"), registry); + args.push(Param { label: arg.label().to_string(), type_name }); + } + args +} + +// Formats a specified type, using the registry to output its full type representation. +fn format_type(ty: &Type, registry: &PortableRegistry) -> String { + let mut name = ty + .path + .segments + .last() + .map(|s| s.to_owned()) + .unwrap_or_else(|| ty.path.to_string()); + + if !ty.type_params.is_empty() { + let params: Vec<_> = ty + .type_params + .iter() + .filter_map(|p| registry.resolve(p.ty.unwrap().id)) + .map(|t| format_type(t, registry)) + .collect(); + name = format!("{name}<{}>", params.join(",")); + } + + name = format!( + "{name}{}", + match &ty.type_def { + TypeDef::Composite(composite) => { + if composite.fields.is_empty() { + return "".to_string(); + } + + let mut named = false; + let fields: Vec<_> = composite + .fields + .iter() + .filter_map(|f| match f.name.as_ref() { + None => registry.resolve(f.ty.id).map(|t| format_type(t, registry)), + Some(field) => { + named = true; + f.type_name.as_ref().map(|t| format!("{field}: {t}")) + }, + }) + .collect(); + match named { + true => format!(" {{ {} }}", fields.join(", ")), + false => format!(" ({})", fields.join(", ")), + } + }, + TypeDef::Variant(variant) => { + let variants: Vec<_> = variant + .variants + .iter() + .map(|v| { + if v.fields.is_empty() { + return v.name.clone(); + } + + let name = v.name.as_str(); + let mut named = false; + let fields: Vec<_> = v + .fields + .iter() + .filter_map(|f| match f.name.as_ref() { + None => registry.resolve(f.ty.id).map(|t| format_type(t, registry)), + Some(field) => { + named = true; + f.type_name.as_ref().map(|t| format!("{field}: {t}")) + }, + }) + .collect(); + format!( + "{name}{}", + match named { + true => format!("{{ {} }}", fields.join(", ")), + false => format!("({})", fields.join(", ")), + } + ) + }) + .collect(); + format!(": {}", variants.join(", ")) + }, + TypeDef::Sequence(sequence) => { + format!( + "[{}]", + format_type( + registry.resolve(sequence.type_param.id).expect("sequence type not found"), + registry + ) + ) + }, + TypeDef::Array(array) => { + format!( + "[{};{}]", + format_type( + registry.resolve(array.type_param.id).expect("array type not found"), + registry + ), + array.len + ) + }, + TypeDef::Tuple(tuple) => { + let fields: Vec<_> = tuple + .fields + .iter() + .filter_map(|p| registry.resolve(p.id)) + .map(|t| format_type(t, registry)) + .collect(); + format!("({})", fields.join(",")) + }, + TypeDef::Primitive(primitive) => { + use TypeDefPrimitive::*; + match primitive { + Bool => "bool", + Char => "char", + Str => "str", + U8 => "u8", + U16 => "u16", + U32 => "u32", + U64 => "u64", + U128 => "u128", + U256 => "u256", + I8 => "i8", + I16 => "i16", + I32 => "i32", + I64 => "i64", + I128 => "i128", + I256 => "i256", + } + .to_string() + }, + TypeDef::Compact(compact) => { + format!( + "Compact<{}>", + format_type( + registry.resolve(compact.type_param.id).expect("compact type not found"), + registry + ) + ) + }, + TypeDef::BitSequence(_) => { + unimplemented!("bit sequence not currently supported") + }, + } + ); + + name +} + +/// Processes a list of argument values for a specified contract function, +/// wrapping each value in `Some(...)` or replacing it with `None` if the argument is optional. +/// +/// # Arguments +/// * `path` - Location path of the project or contract artifact. +/// * `label` - Label of the contract message to retrieve. +/// * `args` - Argument values provided by the user. +/// * `function_type` - Specifies whether to process arguments of messages or constructors. +pub fn process_function_args

( + path: P, + label: &str, + args: Vec, + function_type: FunctionType, +) -> Result, Error> +where + P: AsRef, +{ + let function = match function_type { + FunctionType::Message => get_message(path, label)?, + FunctionType::Constructor => get_constructor(path, label)?, + }; + if args.len() != function.args.len() { + return Err(Error::IncorrectArguments { + expected: function.args.len(), + provided: args.len(), + }); + } + Ok(args + .into_iter() + .zip(&function.args) + .map(|(arg, param)| match (param.type_name.starts_with("Option<"), arg.is_empty()) { + // If the argument is Option and empty, replace it with `None` + (true, true) => "None".to_string(), + // If the argument is Option and not empty, wrap it in `Some(...)` + (true, false) => format!("Some({})", arg), + // If the argument is not Option, return it as is + _ => arg, + }) + .collect::>()) +} + +#[cfg(test)] +mod tests { + use std::env; + + use super::*; + use crate::{mock_build_process, new_environment}; + use anyhow::Result; + + #[test] + fn get_messages_work() -> Result<()> { + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + + // Helper function to avoid duplicated code + fn assert_contract_metadata_parsed(message: Vec) -> Result<()> { + assert_eq!(message.len(), 3); + assert_eq!(message[0].label, "flip"); + assert_eq!(message[0].docs, " A message that can be called on instantiated contracts. This one flips the value of the stored `bool` from `true` to `false` and vice versa."); + assert_eq!(message[1].label, "get"); + assert_eq!(message[1].docs, " Simply returns the current value of our `bool`."); + assert_eq!(message[2].label, "specific_flip"); + assert_eq!(message[2].docs, " A message for testing, flips the value of the stored `bool` with `new_value` and is payable"); + // assert parsed arguments + assert_eq!(message[2].args.len(), 2); + assert_eq!(message[2].args[0].label, "new_value".to_string()); + assert_eq!(message[2].args[0].type_name, "bool".to_string()); + assert_eq!(message[2].args[1].label, "number".to_string()); + assert_eq!(message[2].args[1].type_name, "Option: None, Some(u32)".to_string()); + Ok(()) + } + + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; + + // Test with a directory path + let message = get_messages(&temp_dir.path().join("testing"))?; + assert_contract_metadata_parsed(message)?; + + // Test with a metadata file path + let message = get_messages(¤t_dir.join("./tests/files/testing.contract"))?; + assert_contract_metadata_parsed(message)?; + + Ok(()) + } + + #[test] + fn get_message_work() -> Result<()> { + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; + assert!(matches!( + get_message(&temp_dir.path().join("testing"), "wrong_flip"), + Err(Error::InvalidMessageName(name)) if name == "wrong_flip".to_string())); + let message = get_message(&temp_dir.path().join("testing"), "specific_flip")?; + assert_eq!(message.label, "specific_flip"); + assert_eq!(message.docs, " A message for testing, flips the value of the stored `bool` with `new_value` and is payable"); + // assert parsed arguments + assert_eq!(message.args.len(), 2); + assert_eq!(message.args[0].label, "new_value".to_string()); + assert_eq!(message.args[0].type_name, "bool".to_string()); + assert_eq!(message.args[1].label, "number".to_string()); + assert_eq!(message.args[1].type_name, "Option: None, Some(u32)".to_string()); + Ok(()) + } + + #[test] + fn get_constructors_work() -> Result<()> { + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; + let constructor = get_constructors(&temp_dir.path().join("testing"))?; + assert_eq!(constructor.len(), 2); + assert_eq!(constructor[0].label, "new"); + assert_eq!( + constructor[0].docs, + "Constructor that initializes the `bool` value to the given `init_value`." + ); + assert_eq!(constructor[1].label, "default"); + assert_eq!( + constructor[1].docs, + "Constructor that initializes the `bool` value to `false`. Constructors can delegate to other constructors." + ); + // assert parsed arguments + assert_eq!(constructor[0].args.len(), 1); + assert_eq!(constructor[0].args[0].label, "init_value".to_string()); + assert_eq!(constructor[0].args[0].type_name, "bool".to_string()); + assert_eq!(constructor[1].args.len(), 2); + assert_eq!(constructor[1].args[0].label, "init_value".to_string()); + assert_eq!(constructor[1].args[0].type_name, "bool".to_string()); + assert_eq!(constructor[1].args[1].label, "number".to_string()); + assert_eq!(constructor[1].args[1].type_name, "Option: None, Some(u32)".to_string()); + Ok(()) + } + + #[test] + fn get_constructor_work() -> Result<()> { + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; + assert!(matches!( + get_constructor(&temp_dir.path().join("testing"), "wrong_constructor"), + Err(Error::InvalidConstructorName(name)) if name == "wrong_constructor".to_string())); + let constructor = get_constructor(&temp_dir.path().join("testing"), "default")?; + assert_eq!(constructor.label, "default"); + assert_eq!( + constructor.docs, + "Constructor that initializes the `bool` value to `false`. Constructors can delegate to other constructors." + ); + // assert parsed arguments + assert_eq!(constructor.args.len(), 2); + assert_eq!(constructor.args[0].label, "init_value".to_string()); + assert_eq!(constructor.args[0].type_name, "bool".to_string()); + assert_eq!(constructor.args[1].label, "number".to_string()); + assert_eq!(constructor.args[1].type_name, "Option: None, Some(u32)".to_string()); + Ok(()) + } + + #[test] + fn process_function_args_work() -> Result<()> { + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; + assert!(matches!( + process_function_args(temp_dir.path().join("testing"),"wrong_flip", Vec::new(), FunctionType::Message), + Err(Error::InvalidMessageName(error)) if error == "wrong_flip".to_string())); + assert!(matches!( + process_function_args( + temp_dir.path().join("testing"), + "specific_flip", + Vec::new(), + FunctionType::Message + ), + Err(Error::IncorrectArguments {expected, provided }) if expected == 2 && provided == 0 + )); + assert_eq!( + process_function_args( + temp_dir.path().join("testing"), + "specific_flip", + ["true".to_string(), "2".to_string()].to_vec(), + FunctionType::Message + )?, + ["true".to_string(), "Some(2)".to_string()] + ); + assert_eq!( + process_function_args( + temp_dir.path().join("testing"), + "specific_flip", + ["true".to_string(), "".to_string()].to_vec(), + FunctionType::Message + )?, + ["true".to_string(), "None".to_string()] + ); + + // Test constructors + assert!(matches!( + process_function_args(temp_dir.path().join("testing"),"wrong_constructor", Vec::new(), FunctionType::Constructor), + Err(Error::InvalidConstructorName(error)) if error == "wrong_constructor".to_string())); + assert!(matches!( + process_function_args( + temp_dir.path().join("testing"), + "default", + Vec::new(), + FunctionType::Constructor + ), + Err(Error::IncorrectArguments {expected, provided }) if expected == 2 && provided == 0 + )); + assert_eq!( + process_function_args( + temp_dir.path().join("testing"), + "default", + ["true".to_string(), "2".to_string()].to_vec(), + FunctionType::Constructor + )?, + ["true".to_string(), "Some(2)".to_string()] + ); + assert_eq!( + process_function_args( + temp_dir.path().join("testing"), + "default", + ["true".to_string(), "".to_string()].to_vec(), + FunctionType::Constructor + )?, + ["true".to_string(), "None".to_string()] + ); + Ok(()) + } +} diff --git a/crates/pop-contracts/src/utils/mod.rs b/crates/pop-contracts/src/utils/mod.rs index 357c6608..ad49e2dc 100644 --- a/crates/pop-contracts/src/utils/mod.rs +++ b/crates/pop-contracts/src/utils/mod.rs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: GPL-3.0 pub mod helpers; +pub mod metadata; pub mod signer; diff --git a/crates/pop-contracts/tests/files/testing.contract b/crates/pop-contracts/tests/files/testing.contract index 8701e656..fbd8e6fb 100644 --- a/crates/pop-contracts/tests/files/testing.contract +++ b/crates/pop-contracts/tests/files/testing.contract @@ -1 +1 @@ -{"source":{"hash":"0xb15348075722f8ac92352b8fcfd6fa3506e2a3f430adadcc79fa73cf23bfe9e7","language":"ink! 5.0.0","compiler":"rustc 1.78.0","wasm":"0x0061736d0100000001400b60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60047f7f7f7f0060000060057f7f7f7f7f006000017f60017f017f028a0107057365616c310b6765745f73746f726167650005057365616c3005696e7075740002057365616c320b7365745f73746f726167650005057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c301176616c75655f7472616e73666572726564000203656e76066d656d6f7279020102100335340000000006030403020901020a00010702040302020704070306020301010004000101010104020101080506050802010103000104050170010e0e0616037f01418080040b7f0041c092050b7f0041ba92050b0711020463616c6c001b066465706c6f79001d0913010041010b0d103528392a362529252627232c0ae63b342b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200341016a2103200141016a2101200241016b21020c000b000b200041016b2103200141016b210103402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200141016a2101200041016a210020032004460d000b200420036b0b2300200120034b04402001200341f49004100b000b20002001360204200020023602000b6801017f230041306b2203240020032001360204200320003602002003412c6a41033602002003410236020c200341a88a0436020820034202370214200341033602242003200341206a3602102003200341046a36022820032003360220200341086a20021011000b2601017f230041106b220124002001410036020c20002001410c6a4104100d200141106a24000b920101037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b2001200241d08f041033200020033602080f0b230041206b22002400200041013602042000420037020c200041988e043602082000412b36021c200041f286043602182000200041186a360200200041b08f041011000b2003200541c08f04100b000b2601017f230041106b22022400200220003a000f20012002410f6a4101100d200241106a24000b6d02037f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a1005200028021c220241114f04402002411041f49004100b000b2001290300210320002903082104200041206a2400410541042003200484501b0b810101017f230041306b220224002002410136020c200241988d043602082002420137021420024102360224200220002d00004102742200418092046a28020036022c20022000419492046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10242100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241b88704360210200241988e0436020c2002410c6a102b000b4901017f230041106b22012400200141003a000f027f20002001410f6a410110134504404101410220012d000f22004101461b410020001b0c010b41020b2100200141106a240020000b3d01027f2000280204220320024922044504402001200220002802002201200241f0910410332000200320026b3602042000200120026a3602000b20040b11002001410036000020002001410410130b5301027f230041106b22002400200042808001370208200041ba9204360204200041046a220141001019200141001019200028020c2200418180014f044020004180800141f08004100b000b41002000101a000b5b01027f230041106b22022400200242808001370208200241ba9204360204200241046a22032001047f20034101101941010541000b1019200228020c2201418180014f044020014180800141f08004100b000b20002001101a000ba70102057f017e230041306b2201240020014100360220200142808001370228200141ba9204360224200141246a2202100c20012001290224370218200141106a200141186a2203200128022c10182001280214210420012802102105200129021821062001410036022c2001200637022420002002100e20012001290224370218200141086a2003200128022c1018200520042001280208200128020c10021a200141306a24000b7401027f230041206b220324002002200128020422044b04402003410136020c200341a48e0436020820034200370214200341988e04360210200341086a41f08f041011000b2001200420026b36020420012001280200220120026a3602002000200236020420002001360200200341206a24000b940101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b2200240020002003360204200020023602002000412c6a41033602002000410236020c20004188880436020820004202370214200041033602242000200041206a360210200020003602282000200041046a360220200041086a41e08f041011000b0d00200041ba920420011004000bef0401077f230041406a220024000240024002400240100f41ff0171410546044020004180800136022841ba9204200041286a22011001200041106a200028022841ba920441808001100a2000200029031037022820012000411c6a10140d0320002d001f210120002d001e210220002d001d2103024020002d001c2204412f470440200441e300470d05410121042003413a47200241a5014772200141d1004772450d010c050b41002104200341860147200241db004772200141d90147720d040b2000410036022420004280800137022c200041ba9204360228200041286a2202100c2000200029022837021c200041086a2000411c6a20002802301018200028020c210320002802082105200028021c21012000200028022022063602282005200320012002100021022000200028022820012006100a02400240024020020e0400040401040b200028020021012000200028020436022c20002001360228200041286a1012220141ff01714102470440200028022c450d020b2000410136022c200041bc82043602280c060b2000410136022c2000418c82043602280c050b20040d02230041106b22002400200042808001370208200041ba9204360204200041046a220241001019200141ff01714100472002100e200028020c2200418180014f044020004180800141f08004100b000b41002000101a000b200041043a0028200041286a101c000b2000410136022c2000419c810436022820004200370234200041988e04360230200041286a41a481041011000b200141ff0171451017410041001016000b410141011016000b20004200370234200041988e04360230200041286a41e481041011000b4501017f230041206b2201240020014101360204200141988d043602002001420137020c2001410136021c200120003602182001200141186a360208200141e481041011000be90101057f230041206b220024000240100f220141ff0171410546044020004180800136021441ba9204200041146a22011001200041086a200028021441ba920441808001100a2000200029030837021420012000411c6a10140d0120002d001f210120002d001e210220002d001d210320002d001c2204419b01470440200341cb00462002419d0146712001411b467145200441ed0147720d02410010171015000b200341ae01472002419d014772200141de0047720d01200041146a1012220041ff01714102460d01200010171015000b200020013a0014200041146a101c000b410141011016000b6001027f230041106b2203240020022000280200200028020822046b4b0440200341086a200020042002101f2003280208200328020c1020200028020821040b200028020420046a2001200210061a2000200220046a360208200341106a24000b9a0301077f230041206b220624000240200220036a22032002490d00410121044108200128020022024101742205200320032005491b2203200341084d1b2203417f73411f76210502402002450440410021040c010b2006200236021c200620012802043602140b20062004360218200641086a210820032102200641146a2104230041106b22072400027f027f024020050440200241004e0d01410121054100210241040c030b2008410036020441010c010b027f2004280204044020042802082209450440200741086a20052002102120072802082104200728020c0c020b2004280200210a02402005200210222204450440410021040c010b2004200a200910061a0b20020c010b20072005200210212007280200210420072802040b210920082004200520041b3602042009200220041b21022004450b210541080b20086a200236020020082005360200200741106a2400200628020c21042006280208450440200120033602002001200436020441818080807821040c010b200628021021030b2000200336020420002004360200200641206a24000bcb0100024020004181808080784704402000450d01230041306b220024002000200136020c20004102360214200041a085043602102000420137021c2000410336022c2000200041286a36021820002000410c6a360228230041206b22012400200141003b011c200141b085043602182001200041106a360214200141b88704360210200141988e0436020c2001410c6a102b000b0f0b230041206b220024002000410136020c20004188830436020820004200370214200041988e04360210200041086a418084041011000b200041a892042d00001a200120021022210120002002360204200020013602000bc50101017f027f41ac92042d0000044041b092042802000c010b3f00210241b0920441c0920536020041ac920441013a000041b49204200241107436020041c092050b21020240027f4100200020026a41016b410020006b71220020016a22022000490d001a41b492042802002002490440200141ffff036a220241107640002200417f460d022000411074220020024180807c716a22022000490d0241b4920420023602004100200020016a22022000490d011a0b41b09204200236020020000b0f0b41000b0c00200041dc8204200110240b850401077f230041406a22032400200341033a003c2003412036022c200341003602382003200136023420032000360230200341003602242003410036021c027f0240024020022802102201450440200228020c22004103742105200041ffffffff01712106200228020421082002280200210720022802082101034020042005460d02200420076a220041046a28020022020440200328023020002802002002200328023428020c1100000d040b200441086a21042001280200210020012802042102200141086a210120002003411c6a2002110100450d000b0c020b200228021422044105742100200441ffffff3f712106200228020c2109200228020821052002280204210820022802002207210403402000450d01200441046a28020022020440200328023020042802002002200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2005200141086a10372003200329031037021c200341086a20052001103720032003290308370224200441086a2104200041206b210020012802142102200141206a2101200520024103746a22022802002003411c6a2002280204110100450d000b0c010b200620084904402003280230200720064103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0300010b0c00200020012002101e41000bb20201047f230041106b220224000240027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001410c7641e001723a000c20022001410676413f71418001723a000d4102210341030c030b200028020822032000280200460440230041106b22042400200441086a200020034101101f2004280208200428020c1020200441106a2400200028020821030b2000200341016a360208200028020420036a20013a00000c030b2002200141067641c001723a000c4101210341020c010b20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c4103210341040b210420032002410c6a2205722001413f71418001723a0000200020052004101e0b200241106a240041000bdb05020b7f027e230041406a220324004127210202402000350200220d4290ce00540440200d210e0c010b0340200341196a20026a220041046b200d4290ce0080220e42f0b1037e200d7ca7220441ffff037141e4006e220641017441ac88046a2f00003b0000200041026b2006419c7f6c20046a41ffff037141017441ac88046a2f00003b0000200241046b2102200d42ffc1d72f562100200e210d20000d000b0b200ea7220041e3004b0440200241026b2202200341196a6a200ea7220441ffff037141e4006e2200419c7f6c20046a41ffff037141017441ac88046a2f00003b00000b02402000410a4f0440200241026b2202200341196a6a200041017441ac88046a2f00003b00000c010b200241016b2202200341196a6a20004130723a00000b200128021c22054101712207412720026b22066a2100410021042005410471044041988e04210441988e0441988e04102d20006a21000b412b418080c40020071b2107200341196a20026a2108024020012802004504404101210220012802142200200128021822012007200410300d01200020082006200128020c11000021020c010b2000200128020422094f04404101210220012802142200200128021822012007200410300d01200020082006200128020c11000021020c010b200541087104402001280210210b2001413036021020012d0020210c41012102200141013a0020200128021422052001280218220a2007200410300d01200341106a2001200920006b4101103120032802102200418080c400460d0120032802142104200520082006200a28020c1100000d01200020042005200a10320d012001200c3a00202001200b360210410021020c010b41012102200341086a2001200920006b4101103120032802082205418080c400460d00200328020c210920012802142200200128021822012007200410300d00200020082006200128020c1100000d002005200920002001103221020b200341406b240020020b1800200128021441d482044105200128021828020c1100000b0e0020002802001a03400c000b000baa0201017f230041406a220124002001200036020c20014102360214200141b08e043602102001420137021c2001410436022c2001200141286a36021820012001410c6a360228200141003602382001428080808010370230200141306a200141106a10234504402001280234210020012802382101024041b892042d000045044041b992042d00000d010b200020011003410947044041b8920441013a00000b41b9920441013a00000b000b230041406a220024002000413336020c200041c08504360208200041c4820436021420002001413f6a3602102000413c6a41063602002000410236021c2000419c880436021820004202370224200041023602342000200041306a3602202000200041106a3602382000200041086a360230200041186a41e086041011000b2200200042eeb4d39ded9bae93907f370308200042d4ce8f88d3c5f6dba47f3703000ba10301067f230041106b220224000240200120006b220141104f04402000200041036a417c71220520006b2200102e2005200120006b2200417c716a2000410371102e6a21042000410276210303402003450d0220022005200341c0012003200341c0014f1b41ac8b04102f200228020c21032002280208210520022002280200200228020422002000417c7141888d04102f024020022802042200450440410021010c010b2002280200220620004102746a21074100210103404100210003402001200020066a2802002201417f734107762001410676724181828408716a2101200041046a22004110470d000b200641106a22062007470d000b0b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a2104200228020c2201450d000b2002280208210020014102742103410021010340200120002802002201417f734107762001410676724181828408716a2101200041046a2100200341046b22030d000b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a21040c010b20002001102e21040b200241106a240020040b2c01017f200104400340200220002c000041bf7f4a6a2102200041016a2100200141016b22010d000b0b20020b6b01017f230041206b22052400200220034904402005410136020c200541a48e0436020820054200370214200541988e04360210200541086a20041011000b20002003360204200020013602002000200220036b36020c2000200120034102746a360208200541206a24000b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000b990101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b20024101762104200241016a41017621020b200441016a210420012802102103200128021821052001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b78002001200346044020002002200110061a0f0b230041306b2200240020002003360204200020013602002000412c6a41033602002000410336020c200041fc8b0436020820004202370214200041033602242000200041206a360210200020003602282000200041046a360220200041086a20041011000bf60101067f2000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722104200341f00149044020042006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200441067472722203418080c400460d011a0b200120012802082207200520026b6a36020820030b360204200020073602000baa0301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d00200128020c21002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1034200228021c418080c400470d010c020b0b200241106a200241246a10342002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200128021828020c11000021000c030b200128020422002003200320046a102d22054d0d01200241086a2001200020056b410010314101210020022802082205418080c400460d02200228020c210620012802142207200320042001280218220128020c1100000d022005200620072001103221000c020b200128021420032004200128021828020c11000021000c010b200128021420032004200128021828020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000b0a0020002001200210240be00201067f230041406a22022400200028020021054101210002402001280214220441c88704410c2001280218220628020c22011100000d00200528020c21032002413c6a4103360200200241346a410336020020024103360214200241a087043602102002420337021c20022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a220736021820042006200241106a10380d00200528020822030440200441d48704410220011100000d01200241386a200341106a290200370300200241306a200341086a29020037030020022003290200370328200420062007103821000c010b200220052802002203200528020428020c11020041002100200229030042e4dec78590d085de7d520d00200229030842c1f7f9e8cc93b2d141520d0041012100200441d48704410220011100000d00200420032802002003280204200111000021000b200241406b240020000b0bb0120100418080040ba7122f55736572732f616c65786265616e2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e727300000001006f0000001a01000032000000656e636f756e746572656420756e6578706563746564206572726f72800001001c000000000001006f000000e3000000170000002f55736572732f616c65786265616e2f446f63756d656e74732f726f6775652f74657374696e672f6c69622e72730000b40001002e000000060000000500000073746f7261676520656e7472792077617320656d70747900f400010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279001401010027000000070000000000000001000000080000004572726f72000000090000000c000000040000000a0000000b0000000c0000006361706163697479206f766572666c6f7700000074010100110000002f55736572732f616c65786265616e2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e7273900101007000000019000000050000002f55736572732f616c65786265616e2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65647e02010015000000930201000d000000100201006e000000a50100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f616c65786265616e2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e727300f30201006c0000007902000020000000293a63616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650000001807010000000000710301000100000071030100010000000700000000000000010000000d00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320d603010020000000f6030100120000003a200000180701000000000018040100020000003030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e6465782000001605010010000000f4040100220000002f55736572732f616c65786265616e2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300003805010072000000ce05000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028bc05010015000000d10501002b00000070030100010000002f55736572732f616c65786265616e2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e727300000014060100710000004f000000320000001807010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d6573736167656d6964203e206c656e00000018070100090000000a00000018070100000000002c070100010000002f55736572732f616c65786265616e2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d352e302e302f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727340070100700000005c0000003b00000040070100700000005c0000001400000040070100700000005d0000000e00000040070100700000006800000009000000400701007000000090000000210000002f55736572732f616c65786265616e2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f70616c6c65742d636f6e7472616374732d756170692d6e6578742d362e302e332f7372632f686f73742e727300000000080100710000002d000000170000002f55736572732f616c65786265616e2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e31322f7372632f636f6465632e727300840801006b000000770000000e000000190000001c000000160000001400000019000000a0060100b9060100d5060100eb060100ff0601","build_info":{"build_mode":"Debug","cargo_contract_version":"4.1.1","rust_toolchain":"stable-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"testing","version":"0.1.0","authors":["[your_name] <[your_email]>"]},"image":null,"spec":{"constructors":[{"args":[{"label":"init_value","type":{"displayName":["bool"],"type":0}}],"default":false,"docs":["Constructor that initializes the `bool` value to the given `init_value`."],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0x9bae9d5e"},{"args":[],"default":false,"docs":["Constructor that initializes the `bool` value to `false`.","","Constructors can delegate to other constructors."],"label":"default","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":2},"selector":"0xed4b9d1b"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":6},"balance":{"displayName":["Balance"],"type":9},"blockNumber":{"displayName":["BlockNumber"],"type":12},"chainExtension":{"displayName":["ChainExtension"],"type":13},"hash":{"displayName":["Hash"],"type":10},"maxEventTopics":4,"staticBufferSize":16384,"timestamp":{"displayName":["Timestamp"],"type":11}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":4},"messages":[{"args":[],"default":false,"docs":[" A message that can be called on instantiated contracts."," This one flips the value of the stored `bool` from `true`"," to `false` and vice versa."],"label":"flip","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":2},"selector":"0x633aa551"},{"args":[],"default":false,"docs":[" Simply returns the current value of our `bool`."],"label":"get","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":5},"selector":"0x2f865bd9"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"value"}],"name":"Testing"}},"root_key":"0x00000000","ty":1}},"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"}]}},"path":["testing","testing","Testing"]}},{"id":2,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":4}],"path":["Result"]}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":4}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":4}],"path":["Result"]}},{"id":6,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":7,"type":{"def":{"array":{"len":32,"type":8}}}},{"id":8,"type":{"def":{"primitive":"u8"}}},{"id":9,"type":{"def":{"primitive":"u128"}}},{"id":10,"type":{"def":{"composite":{"fields":[{"type":7,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":11,"type":{"def":{"primitive":"u64"}}},{"id":12,"type":{"def":{"primitive":"u32"}}},{"id":13,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":5} \ No newline at end of file +{"source":{"hash":"0xf4f0cafd08d8e362141b3c64e3c651ad6a38225dbf0b66f691c15bb0ea00eac3","language":"ink! 5.0.0","compiler":"rustc 1.78.0","wasm":"0x0061736d0100000001270760027f7f0060037f7f7f017f60000060047f7f7f7f017f60037f7f7f0060017f017f6000017f027406057365616c310b6765745f73746f726167650003057365616c3005696e7075740000057365616c320b7365745f73746f726167650003057365616c300b7365616c5f72657475726e0004057365616c301176616c75655f7472616e73666572726564000003656e76066d656d6f7279020102100313120101010100050000040006000200000002020616037f01418080040b7f00418080050b7f00418080050b0711020463616c6c0015066465706c6f7900160ad910122b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200341016a2103200141016a2101200241016b21020c000b000b200041016b2103200141016b210103402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200141016a2101200041016a210020032004460d000b200420036b0bc00101057f230041106b22022400410221044104210502402001100a220641ff01714102460d00200241086a2001100b20022d00080d000240024020022d000922030e020100020b20012802042203410449047f4101052001200341046b36020420012001280200220141046a3602002001280000210341000b2101200220033602042002200136020020022802000d0141012103200228020421040b20002003360204200020063a0000410821050b200020056a2004360200200241106a24000b3f01027f230041106b22012400200141086a2000100b20012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20021b0b3c01017f200020012802042202047f2001200241016b36020420012001280200220141016a36020020012d00000520010b3a000120002002453a00000b2601017f230041106b220224002002200036020c20012002410c6a4104100d200241106a24000b4801027f024002402000280208220320026a22042003490d00200420002802044b0d00200420036b2002470d01200028020020036a2001200210051a200020043602080f0b000b000b2601017f230041106b22022400200220003a000f20012002410f6a4101100d200241106a24000b6102027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a1004200028021c41114f0440000b2001290300210220002903082103200041206a2400410541042002200384501b0b3c01027f027f200145044041808004210141010c010b410121024180800441013a000041818004210141020b2103200120023a0000200020031013000b12004180800441003b0100410041021013000b920101057f230041106b220224002002428080013702082002418080043602044100200241046a2204100c024020022802082206200228020c2203490d00200228020421052002410036020c2002200620036b3602082002200320056a36020420012004100e20002004100c200228020c220020022802084b0d00200520032002280204200010021a200241106a24000f0b000b0d0020004180800420011003000b08002000200110120bb60501087f230041206b2200240020004180800136021441808004200041146a100102400240024020002802142201418180014f0d0041042104027f410420014104490d001a20004184800436020c2000200141046b360210418380042d00002101418280042d00002102418180042d00002103024002400240418080042d00002205412f470440200541ec00460d014104200541e300470d041a41042003413a470d041a4104200241a501470d041a41042202200141d100470d041a410221010c020b41042003418601470d031a4104200241db00470d031a41042202200141d901470d031a410321010c010b41042003410f470d021a41042002411d470d021a4104200141f701470d021a200041146a2000410c6a1009200028021822014102460d01200028021c210420002d001421020b20002001360204200020023a000041080c010b41040b20006a2004360200200028020422024104460d012000280208210520002d000021072000428080013702182000418080043602144100200041146a2203100c20002802182206200028021c2201490d00200028021421042000200620016b220636021420042001200120046a2201200310002000280214220420064b720d0020002004360218200020013602142003100a220141ff01714102460d002000280218220341034d2003410447720d00200028021428000021000240024002404102200241026b2203200341024f1b41016b0e020100020b2005200020021b20074100471014410041001010000b100f41ff01714105470d01230041106b220024002000418080043602044180800441003a00002000428080818010370208200141ff0171410047200041046a100e200028020c2200418180014f0440000b410020001013000b100f41ff01714105460d020b000b410141011010000b2000200141ff0171451014410041001010000be90201067f230041206b22002400024002400240100f41ff01714105470d0020004180800136021441808004200041146a100120002802142201418180014f0d004104210220014104490d0120004184800436020c2000200141046b360210418380042d00002101418280042d00002103418180042d00002104027f418080042d0000220541ed014704402005419b0147200441ae0147722003419d0147200141de004772720d0341022103410322012000410c6a100a220441ff01714102470d011a0c040b200441cb00472003419d0147722001411b47720d02200041146a2000410c6a1009200028021822034102460d0220002d00142104200028021c0b210120002003360204200020043a0000410821020c020b000b410321010b200020026a2001360200024020002802042201410347044020002d0000210220014102460d012000280208410020011b200241004710121011000b410141011010000b4100200210121011000b","build_info":{"rust_toolchain":"stable-aarch64-apple-darwin","cargo_contract_version":"5.0.0-alpha","build_mode":"Release","wasm_opt_settings":{"optimization_passes":"Z","keep_debug_symbols":false}}},"contract":{"name":"testing","version":"0.1.0","authors":["[your_name] <[your_email]>"]},"image":null,"version":5,"types":[{"id":0,"type":{"def":{"primitive":"bool"}}},{"id":1,"type":{"def":{"primitive":"u32"}}},{"id":2,"type":{"path":["testing","testing","Testing"],"def":{"composite":{"fields":[{"name":"value","type":0,"typeName":",>>::Type"},{"name":"number","type":1,"typeName":",>>::Type"}]}}}},{"id":3,"type":{"path":["Result"],"params":[{"name":"T","type":4},{"name":"E","type":5}],"def":{"variant":{"variants":[{"name":"Ok","fields":[{"type":4}],"index":0},{"name":"Err","fields":[{"type":5}],"index":1}]}}}},{"id":4,"type":{"def":{"tuple":[]}}},{"id":5,"type":{"path":["ink_primitives","LangError"],"def":{"variant":{"variants":[{"name":"CouldNotReadInput","index":1}]}}}},{"id":6,"type":{"path":["Option"],"params":[{"name":"T","type":1}],"def":{"variant":{"variants":[{"name":"None","index":0},{"name":"Some","fields":[{"type":1}],"index":1}]}}}},{"id":7,"type":{"path":["Result"],"params":[{"name":"T","type":0},{"name":"E","type":5}],"def":{"variant":{"variants":[{"name":"Ok","fields":[{"type":0}],"index":0},{"name":"Err","fields":[{"type":5}],"index":1}]}}}},{"id":8,"type":{"path":["ink_primitives","types","AccountId"],"def":{"composite":{"fields":[{"type":9,"typeName":"[u8; 32]"}]}}}},{"id":9,"type":{"def":{"array":{"len":32,"type":10}}}},{"id":10,"type":{"def":{"primitive":"u8"}}},{"id":11,"type":{"def":{"primitive":"u128"}}},{"id":12,"type":{"path":["ink_primitives","types","Hash"],"def":{"composite":{"fields":[{"type":9,"typeName":"[u8; 32]"}]}}}},{"id":13,"type":{"def":{"primitive":"u64"}}},{"id":14,"type":{"path":["ink_env","types","NoChainExtension"],"def":{"variant":{}}}}],"storage":{"root":{"root_key":"0x00000000","layout":{"struct":{"name":"Testing","fields":[{"name":"value","layout":{"leaf":{"key":"0x00000000","ty":0}}},{"name":"number","layout":{"leaf":{"key":"0x00000000","ty":1}}}]}},"ty":2}},"spec":{"constructors":[{"label":"new","selector":"0x9bae9d5e","payable":false,"args":[{"label":"init_value","type":{"type":0,"displayName":["bool"]}}],"returnType":{"type":3,"displayName":["ink_primitives","ConstructorResult"]},"docs":["Constructor that initializes the `bool` value to the given `init_value`."],"default":false},{"label":"default","selector":"0xed4b9d1b","payable":false,"args":[{"label":"init_value","type":{"type":0,"displayName":["bool"]}},{"label":"number","type":{"type":6,"displayName":["Option"]}}],"returnType":{"type":3,"displayName":["ink_primitives","ConstructorResult"]},"docs":["Constructor that initializes the `bool` value to `false`.","","Constructors can delegate to other constructors."],"default":false}],"messages":[{"label":"flip","selector":"0x633aa551","mutates":true,"payable":false,"args":[],"returnType":{"type":3,"displayName":["ink","MessageResult"]},"docs":[" A message that can be called on instantiated contracts."," This one flips the value of the stored `bool` from `true`"," to `false` and vice versa."],"default":false},{"label":"get","selector":"0x2f865bd9","mutates":false,"payable":false,"args":[],"returnType":{"type":7,"displayName":["ink","MessageResult"]},"docs":[" Simply returns the current value of our `bool`."],"default":false},{"label":"specific_flip","selector":"0x6c0f1df7","mutates":true,"payable":true,"args":[{"label":"new_value","type":{"type":0,"displayName":["bool"]}},{"label":"number","type":{"type":6,"displayName":["Option"]}}],"returnType":{"type":3,"displayName":["ink","MessageResult"]},"docs":[" A message for testing, flips the value of the stored `bool` with `new_value`"," and is payable"],"default":false}],"events":[],"docs":[],"lang_error":{"type":5,"displayName":["ink","LangError"]},"environment":{"accountId":{"type":8,"displayName":["AccountId"]},"balance":{"type":11,"displayName":["Balance"]},"hash":{"type":12,"displayName":["Hash"]},"timestamp":{"type":13,"displayName":["Timestamp"]},"blockNumber":{"type":1,"displayName":["BlockNumber"]},"chainExtension":{"type":14,"displayName":["ChainExtension"]},"maxEventTopics":4,"staticBufferSize":16384}}} \ No newline at end of file diff --git a/crates/pop-contracts/tests/files/testing.json b/crates/pop-contracts/tests/files/testing.json new file mode 100644 index 00000000..61921986 --- /dev/null +++ b/crates/pop-contracts/tests/files/testing.json @@ -0,0 +1,528 @@ +{ + "source": { + "hash": "0xf4f0cafd08d8e362141b3c64e3c651ad6a38225dbf0b66f691c15bb0ea00eac3", + "language": "ink! 5.0.0", + "compiler": "rustc 1.78.0", + "build_info": { + "rust_toolchain": "stable-aarch64-apple-darwin", + "cargo_contract_version": "5.0.0-alpha", + "build_mode": "Release", + "wasm_opt_settings": { + "optimization_passes": "Z", + "keep_debug_symbols": false + } + } + }, + "contract": { + "name": "testing", + "version": "0.1.0", + "authors": [ + "[your_name] <[your_email]>" + ] + }, + "image": null, + "version": 5, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 1, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 2, + "type": { + "path": [ + "testing", + "testing", + "Testing" + ], + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 0, + "typeName": ",>>::Type" + }, + { + "name": "number", + "type": 1, + "typeName": ",>>::Type" + } + ] + } + } + } + }, + { + "id": 3, + "type": { + "path": [ + "Result" + ], + "params": [ + { + "name": "T", + "type": 4 + }, + { + "name": "E", + "type": 5 + } + ], + "def": { + "variant": { + "variants": [ + { + "name": "Ok", + "fields": [ + { + "type": 4 + } + ], + "index": 0 + }, + { + "name": "Err", + "fields": [ + { + "type": 5 + } + ], + "index": 1 + } + ] + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 5, + "type": { + "path": [ + "ink_primitives", + "LangError" + ], + "def": { + "variant": { + "variants": [ + { + "name": "CouldNotReadInput", + "index": 1 + } + ] + } + } + } + }, + { + "id": 6, + "type": { + "path": [ + "Option" + ], + "params": [ + { + "name": "T", + "type": 1 + } + ], + "def": { + "variant": { + "variants": [ + { + "name": "None", + "index": 0 + }, + { + "name": "Some", + "fields": [ + { + "type": 1 + } + ], + "index": 1 + } + ] + } + } + } + }, + { + "id": 7, + "type": { + "path": [ + "Result" + ], + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 5 + } + ], + "def": { + "variant": { + "variants": [ + { + "name": "Ok", + "fields": [ + { + "type": 0 + } + ], + "index": 0 + }, + { + "name": "Err", + "fields": [ + { + "type": 5 + } + ], + "index": 1 + } + ] + } + } + } + }, + { + "id": 8, + "type": { + "path": [ + "ink_primitives", + "types", + "AccountId" + ], + "def": { + "composite": { + "fields": [ + { + "type": 9, + "typeName": "[u8; 32]" + } + ] + } + } + } + }, + { + "id": 9, + "type": { + "def": { + "array": { + "len": 32, + "type": 10 + } + } + } + }, + { + "id": 10, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 11, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 12, + "type": { + "path": [ + "ink_primitives", + "types", + "Hash" + ], + "def": { + "composite": { + "fields": [ + { + "type": 9, + "typeName": "[u8; 32]" + } + ] + } + } + } + }, + { + "id": 13, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 14, + "type": { + "path": [ + "ink_env", + "types", + "NoChainExtension" + ], + "def": { + "variant": {} + } + } + } + ], + "storage": { + "root": { + "root_key": "0x00000000", + "layout": { + "struct": { + "name": "Testing", + "fields": [ + { + "name": "value", + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + } + }, + { + "name": "number", + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 1 + } + } + } + ] + } + }, + "ty": 2 + } + }, + "spec": { + "constructors": [ + { + "label": "new", + "selector": "0x9bae9d5e", + "payable": false, + "args": [ + { + "label": "init_value", + "type": { + "type": 0, + "displayName": [ + "bool" + ] + } + } + ], + "returnType": { + "type": 3, + "displayName": [ + "ink_primitives", + "ConstructorResult" + ] + }, + "docs": [ + "Constructor that initializes the `bool` value to the given `init_value`." + ], + "default": false + }, + { + "label": "default", + "selector": "0xed4b9d1b", + "payable": false, + "args": [ + { + "label": "init_value", + "type": { + "type": 0, + "displayName": [ + "bool" + ] + } + }, + { + "label": "number", + "type": { + "type": 6, + "displayName": [ + "Option" + ] + } + } + ], + "returnType": { + "type": 3, + "displayName": [ + "ink_primitives", + "ConstructorResult" + ] + }, + "docs": [ + "Constructor that initializes the `bool` value to `false`.", + "", + "Constructors can delegate to other constructors." + ], + "default": false + } + ], + "messages": [ + { + "label": "flip", + "selector": "0x633aa551", + "mutates": true, + "payable": false, + "args": [], + "returnType": { + "type": 3, + "displayName": [ + "ink", + "MessageResult" + ] + }, + "docs": [ + " A message that can be called on instantiated contracts.", + " This one flips the value of the stored `bool` from `true`", + " to `false` and vice versa." + ], + "default": false + }, + { + "label": "get", + "selector": "0x2f865bd9", + "mutates": false, + "payable": false, + "args": [], + "returnType": { + "type": 7, + "displayName": [ + "ink", + "MessageResult" + ] + }, + "docs": [ + " Simply returns the current value of our `bool`." + ], + "default": false + }, + { + "label": "specific_flip", + "selector": "0x6c0f1df7", + "mutates": true, + "payable": true, + "args": [ + { + "label": "new_value", + "type": { + "type": 0, + "displayName": [ + "bool" + ] + } + }, + { + "label": "number", + "type": { + "type": 6, + "displayName": [ + "Option" + ] + } + } + ], + "returnType": { + "type": 3, + "displayName": [ + "ink", + "MessageResult" + ] + }, + "docs": [ + " A message for testing, flips the value of the stored `bool` with `new_value`", + " and is payable" + ], + "default": false + } + ], + "events": [], + "docs": [], + "lang_error": { + "type": 5, + "displayName": [ + "ink", + "LangError" + ] + }, + "environment": { + "accountId": { + "type": 8, + "displayName": [ + "AccountId" + ] + }, + "balance": { + "type": 11, + "displayName": [ + "Balance" + ] + }, + "hash": { + "type": 12, + "displayName": [ + "Hash" + ] + }, + "timestamp": { + "type": 13, + "displayName": [ + "Timestamp" + ] + }, + "blockNumber": { + "type": 1, + "displayName": [ + "BlockNumber" + ] + }, + "chainExtension": { + "type": 14, + "displayName": [ + "ChainExtension" + ] + }, + "maxEventTopics": 4, + "staticBufferSize": 16384 + } + } +} \ No newline at end of file diff --git a/crates/pop-contracts/tests/files/testing.wasm b/crates/pop-contracts/tests/files/testing.wasm new file mode 100644 index 0000000000000000000000000000000000000000..430888669464e770d310139f29e8af1ebf865ba4 GIT binary patch literal 3710 zcmb_fO>ZPu6}|7Hx~pC8aXC1S84uE{iiI30?T;bxhzSyYkzz9%A+uqL>>j(uxZBen zSNAv>DN1{y2#GCQ#0H5i8-4|1#S$U0VGA2J2nk5ed9T|aN+LFl<*Daa@1A?_x#!;3 zE#2WWB_isb)`1?6<-m-`V>LbyIj~r9$(_kxa-hOX?BcK*>ro>aR^8Lh?6?~34@YNp z_qY-h_BN7}!Sfd*k?`03Z2099*z2C|*VX7nJrEnM<}bRZFRJ}f-5m^{R&`w+iI{3| z(RfxpJF8!6rE~MfVxsU*8i-r0G*gWXMC-<)87qHzX|u8Tf4@rjxcoH9n)BKoc27^` zn~kID`RUn9xjXaUrN!69DQ9-iF>FHZX2 zoR>+jFisVgZwwAP!(-anj>tn1XT9p-t>%NKnKQ28l0E=GJ}*;j0$#bKS0;e_0Jce? zBG3=pKyzwU%a%rT-u4QF$cLE~1m_Y$*tietQQ7oM=S2&#HTzsOorQ5>r*N=#*0nAI zW@%k>RDTU}1F;kc(;+~lt6c+01Q;9BQP zJgAPeA85lN+6ms3h;YK42}eV!npF4877Hr2Db zo1sVqd%(S+6dZ{Xi7JaWKpB-nVI%>cE9+891aw{lswp5C9Yw7emt0J>a*ge>9z@cj zRuWVRe?gRi06;+FfnDStV+^_9(9IMFNhU!hR7ew%LA;<2+=j*qX$FO$nQk`~_=L+q zAOduHLf{NG0m>?slmMGb2c>}f|JhX3Rhh-6g7pXu2A)#HWkXXXE}J%0fQwC)UNu$n zwM}(J6awT7LDNqe+G~@s8|1L5Ch3J%Z)RTUu^yXk1foA^tGm!0l!j3SPS{I)U*7pqR3A@Pcalxt>?~of6Z>3xev%T=q~D zUvjcc{Quy}|HOVv&+6@9Ka1wd?*zH5>e(nGAUK)9ct_o%b`_XbX5B9xmfqyPQZ}u9mW9#KT5f2sSZ%Fn% zW{TMk3i+;ps?gQoUWcPBpZ`zT*BPgR(<~@br|~at$=d1nFE7;toq|O`fqOO#+PSp( zyxyi%)3U+GY#G=L+J#yWBq+iFN3VcH#*YSN?Ub`QB?f?K2SA{(00|3>VnD*09Z7|g ze%6NW(I`f;G$fxdX20fj0=74%Y$Mbyy%J7}U%_X9TE;Wxrm8s z#1kk+nYtwZ29+1i8^3f>pzVErftnbfUK9=XI1HD1_&8ufn;XBr3k&1_D)IR@*+p&s zsdj5jZwvxIw~Ji3_||S+w=L34^BKBWMM#(tK>}|Rw<9a~G=kPw{*OS3<_`fB?SBKz zw!x@Tv%GQrpVais&*&{4`m^8=Mr~}k>u`A=gv6H+{{rI2^$_oPM6!fwh2f?c)dEtJ zSoYN^M=Kl{q*S45A#$|is(!oFY$2>x7(Oz?t&yMx=qimL=!DZPo!Gse;VlgqpFk1T<3Se(<8FPCwND(&g%kyOvL!IYK=m*JP zmn?rRu%GO+T7t~3Wx7;Cb352U zVE2gGk%gcx0Q?1J5#YDif+qqbh$}I~I=K&n)}dPr8cqZo|G0B3lr{xdIV0 z)*uXc#b5}-hXn@X=lNp3FeRT=fVksU_Ni86)@J`w>pvb=^>Dp=T7C4S>JHY|4!ia7 z*?L_apA1L!%k^P>xPCG?syR+XyDr;P_-vt)C6{4}aP{8LU5f@f6>v*6N{%lIJ4w6a3!6@BhXB^KN}Idf6G` hi&oV+JUglmJKtH`THCxIVhI~`eF@)v`23K*zW{;(I0gU! literal 0 HcmV?d00001 From 3bf542618942efe75cbf1436a8fda65c9c7a3351 Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Tue, 3 Dec 2024 12:35:49 +0100 Subject: [PATCH 028/143] fix: support new substrate-contracts-node structure and stabilize integration tests (#360) * fix: parse new structure substrate-contracts-node * fix: paseo+coretime integration test * fix: sourcing latest version substrate-contracts-node * refactor: set_executable_permission function * fix: clippy * chore: CI configuration * test: specify port in run_contracts_node * fix: use random ports instead of hardcoded ones --- .github/workflows/ci.yml | 2 +- crates/pop-cli/src/commands/up/contract.rs | 4 ++- crates/pop-cli/src/common/contracts.rs | 5 ++-- crates/pop-cli/tests/contract.rs | 6 ++-- crates/pop-common/src/lib.rs | 1 + crates/pop-common/src/sourcing/mod.rs | 13 +++++++-- crates/pop-contracts/src/call.rs | 22 +++++++++------ crates/pop-contracts/src/lib.rs | 2 +- crates/pop-contracts/src/node/mod.rs | 33 +++++++++++++++++----- crates/pop-contracts/src/testing.rs | 10 +++++++ crates/pop-contracts/src/up.rs | 19 ++++++++----- crates/pop-parachains/src/build.rs | 15 ++-------- crates/pop-parachains/tests/parachain.rs | 2 +- 13 files changed, 90 insertions(+), 44 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e68a3ac..bda33794 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: push: branches: [ "main" ] pull_request: - branches: [ "main" ] + types: [ opened, synchronize, reopened, ready_for_review ] env: CARGO_TERM_COLOR: always diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index cc50619f..9d2292ff 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -27,6 +27,7 @@ use url::Url; const COMPLETE: &str = "🚀 Deployment complete"; const DEFAULT_URL: &str = "ws://localhost:9944/"; +const DEFAULT_PORT: u16 = 9944; const FAILED: &str = "🚫 Deployment failed."; #[derive(Args, Clone)] @@ -146,7 +147,8 @@ impl UpContractCommand { let spinner = spinner(); spinner.start("Starting local node..."); - let process = run_contracts_node(binary_path, Some(log.as_file())).await?; + let process = + run_contracts_node(binary_path, Some(log.as_file()), DEFAULT_PORT).await?; let bar = Style::new().magenta().dim().apply_to(Emoji("│", "|")); spinner.stop(format!( "Local node started successfully:{}", diff --git a/crates/pop-cli/src/common/contracts.rs b/crates/pop-cli/src/common/contracts.rs index 338ca84b..3d0be11f 100644 --- a/crates/pop-cli/src/common/contracts.rs +++ b/crates/pop-cli/src/common/contracts.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0 use cliclack::{confirm, log::warning, spinner}; -use pop_common::manifest::from_path; +use pop_common::{manifest::from_path, sourcing::set_executable_permission}; use pop_contracts::contracts_node_generator; use std::path::{Path, PathBuf}; @@ -53,8 +53,9 @@ pub async fn check_contracts_node_and_prompt(skip_confirm: bool) -> anyhow::Resu let spinner = spinner(); spinner.start("📦 Sourcing substrate-contracts-node..."); - binary.use_latest(); + binary = contracts_node_generator(crate::cache()?, binary.latest()).await?; binary.source(false, &(), true).await?; + set_executable_permission(binary.path())?; spinner.stop(format!( "✅ substrate-contracts-node successfully sourced. Cached at: {}", diff --git a/crates/pop-cli/tests/contract.rs b/crates/pop-cli/tests/contract.rs index 3a51f122..77c8dba5 100644 --- a/crates/pop-cli/tests/contract.rs +++ b/crates/pop-cli/tests/contract.rs @@ -2,7 +2,7 @@ use anyhow::Result; use assert_cmd::Command; -use pop_common::templates::Template; +use pop_common::{set_executable_permission, templates::Template}; use pop_contracts::{ contracts_node_generator, dry_run_gas_estimate_instantiate, instantiate_smart_contract, run_contracts_node, set_up_deployment, Contract, UpOpts, @@ -14,6 +14,7 @@ use url::Url; /// Test the contract lifecycle: new, build, up, call #[tokio::test] async fn contract_lifecycle() -> Result<()> { + const DEFAULT_PORT: u16 = 9944; let temp = tempfile::tempdir().unwrap(); let temp_dir = temp.path(); //let temp_dir = Path::new("./"); //For testing locally @@ -44,7 +45,8 @@ async fn contract_lifecycle() -> Result<()> { let binary = contracts_node_generator(temp_dir.to_path_buf().clone(), None).await?; binary.source(false, &(), true).await?; - let process = run_contracts_node(binary.path(), None).await?; + set_executable_permission(binary.path())?; + let process = run_contracts_node(binary.path(), None, DEFAULT_PORT).await?; // Only upload the contract // pop up contract --upload-only diff --git a/crates/pop-common/src/lib.rs b/crates/pop-common/src/lib.rs index bf2d6632..b70dd121 100644 --- a/crates/pop-common/src/lib.rs +++ b/crates/pop-common/src/lib.rs @@ -12,6 +12,7 @@ pub use errors::Error; pub use git::{Git, GitHub, Release}; pub use helpers::{get_project_name_from_path, prefix_with_current_dir_if_needed, replace_in_file}; pub use manifest::{add_crate_to_workspace, find_workspace_toml}; +pub use sourcing::set_executable_permission; pub use templates::extractor::extract_template_files; static APP_USER_AGENT: &str = concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION")); diff --git a/crates/pop-common/src/sourcing/mod.rs b/crates/pop-common/src/sourcing/mod.rs index 177337c9..b42283be 100644 --- a/crates/pop-common/src/sourcing/mod.rs +++ b/crates/pop-common/src/sourcing/mod.rs @@ -495,9 +495,18 @@ async fn download(url: &str, dest: &Path) -> Result<(), Error> { let mut file = File::create(dest)?; file.write_all(&response.bytes().await?)?; // Make executable - let mut perms = metadata(dest)?.permissions(); + set_executable_permission(dest)?; + Ok(()) +} + +/// Sets the executable permission for a given file. +/// +/// # Arguments +/// * `path` - The file path to which permissions should be granted. +pub fn set_executable_permission>(path: P) -> Result<(), Error> { + let mut perms = metadata(&path)?.permissions(); perms.set_mode(0o755); - std::fs::set_permissions(dest, perms)?; + std::fs::set_permissions(path, perms)?; Ok(()) } diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index a554bc2f..1886f3be 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -180,11 +180,13 @@ mod tests { use crate::{ contracts_node_generator, dry_run_gas_estimate_instantiate, errors::Error, instantiate_smart_contract, mock_build_process, new_environment, run_contracts_node, - set_up_deployment, UpOpts, + set_up_deployment, testing::find_free_port, UpOpts, }; use anyhow::Result; + use pop_common::set_executable_permission; use sp_core::Bytes; - use std::{env, process::Command}; + use std::{env, process::Command, time::Duration}; + use tokio::time::sleep; const CONTRACTS_NETWORK_URL: &str = "wss://rpc2.paseo.popnetwork.xyz"; @@ -334,7 +336,8 @@ mod tests { #[tokio::test] async fn call_works() -> Result<()> { - const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; + let random_port = find_free_port(); + let localhost_url = format!("ws://127.0.0.1:{}", random_port); let temp_dir = new_environment("testing")?; let current_dir = env::current_dir().expect("Failed to get current directory"); mock_build_process( @@ -347,7 +350,10 @@ mod tests { let binary = contracts_node_generator(cache.clone(), None).await?; binary.source(false, &(), true).await?; - let process = run_contracts_node(binary.path(), None).await?; + set_executable_permission(binary.path())?; + let process = run_contracts_node(binary.path(), None, random_port).await?; + // Wait 5 secs more to give time for the node to be ready + sleep(Duration::from_millis(5000)).await; // Instantiate a Smart Contract. let instantiate_exec = set_up_deployment(UpOpts { path: Some(temp_dir.path().join("testing")), @@ -357,7 +363,7 @@ mod tests { gas_limit: None, proof_size: None, salt: Some(Bytes::from(vec![0x00])), - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), }) .await?; @@ -372,7 +378,7 @@ mod tests { value: "0".to_string(), gas_limit: None, proof_size: None, - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), execute: false, }) @@ -388,7 +394,7 @@ mod tests { value: "0".to_string(), gas_limit: None, proof_size: None, - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), execute: false, }) @@ -396,7 +402,7 @@ mod tests { let weight = dry_run_gas_estimate_call(&call_exec).await?; assert!(weight.ref_time() > 0); assert!(weight.proof_size() > 0); - call_smart_contract(call_exec, weight, &Url::parse(LOCALHOST_URL)?).await?; + call_smart_contract(call_exec, weight, &Url::parse(&localhost_url)?).await?; // Assert that the value has been flipped. query = dry_run_call(&query_exec).await?; assert_eq!(query, "Ok(true)"); diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 077b76fe..cd01ca79 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,7 @@ pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; -pub use testing::{mock_build_process, new_environment}; +pub use testing::{find_free_port, mock_build_process, new_environment}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_contract_signed, diff --git a/crates/pop-contracts/src/node/mod.rs b/crates/pop-contracts/src/node/mod.rs index 6618381b..77ac97cd 100644 --- a/crates/pop-contracts/src/node/mod.rs +++ b/crates/pop-contracts/src/node/mod.rs @@ -64,7 +64,7 @@ impl TryInto for Chain { /// * `latest` - If applicable, some specifier used to determine the latest source. fn try_into(&self, tag: Option, latest: Option) -> Result { let archive = archive_name_by_target()?; - let archive_bin_path = release_directory_by_target()?; + let archive_bin_path = release_directory_by_target(tag.as_deref())?; Ok(match self { &Chain::ContractsNode => { // Source from GitHub release asset @@ -115,12 +115,15 @@ pub async fn contracts_node_generator( /// /// * `binary_path` - The path where the binary is stored. Can be the binary name itself if in PATH. /// * `output` - The optional log file for node output. +/// * `port` - The WebSocket port on which the node will listen for connections. pub async fn run_contracts_node( binary_path: PathBuf, output: Option<&File>, + port: u16, ) -> Result { let mut command = Command::new(binary_path); command.arg("-linfo,runtime::contracts=debug"); + command.arg(format!("--rpc-port={}", port)); if let Some(output) = output { command.stdout(Stdio::from(output.try_clone()?)); command.stderr(Stdio::from(output.try_clone()?)); @@ -141,16 +144,30 @@ fn archive_name_by_target() -> Result { } } -fn release_directory_by_target() -> Result<&'static str, Error> { +fn release_directory_by_target(tag: Option<&str>) -> Result<&'static str, Error> { + // The structure of the binary changed in v0.42.0 + let is_old_structure = matches!(tag, Some(tag) if tag < "v0.42.0"); match OS { - "macos" => Ok("artifacts/substrate-contracts-node-mac/substrate-contracts-node"), - "linux" => Ok("artifacts/substrate-contracts-node-linux/substrate-contracts-node"), + "macos" => + if is_old_structure { + Ok("artifacts/substrate-contracts-node-mac/substrate-contracts-node") + } else { + Ok("substrate-contracts-node-mac/substrate-contracts-node") + }, + "linux" => + if is_old_structure { + Ok("artifacts/substrate-contracts-node-linux/substrate-contracts-node") + } else { + Ok("substrate-contracts-node-linux/substrate-contracts-node") + }, _ => Err(Error::UnsupportedPlatform { arch: ARCH, os: OS }), } } #[cfg(test)] mod tests { + use crate::testing::find_free_port; + use super::*; use anyhow::{Error, Result}; use std::process::Command; @@ -185,7 +202,7 @@ mod tests { let version = "v0.40.0"; let binary = contracts_node_generator(cache.clone(), Some(version)).await?; let archive = archive_name_by_target()?; - let archive_bin_path = release_directory_by_target()?; + let archive_bin_path = release_directory_by_target(Some(version))?; assert!(matches!(binary, Binary::Source { name, source, cache} if name == expected.binary() && source == Source::GitHub(ReleaseArchive { @@ -206,7 +223,9 @@ mod tests { #[ignore = "Works fine locally but is causing issues when running tests in parallel in the CI environment."] #[tokio::test] async fn run_contracts_node_works() -> Result<(), Error> { - let local_url = url::Url::parse("ws://localhost:9944")?; + let random_port = find_free_port(); + let localhost_url = format!("ws://127.0.0.1:{}", random_port); + let local_url = url::Url::parse(&localhost_url)?; let temp_dir = tempfile::tempdir().expect("Could not create temp dir"); let cache = temp_dir.path().join(""); @@ -214,7 +233,7 @@ mod tests { let version = "v0.40.0"; let binary = contracts_node_generator(cache.clone(), Some(version)).await?; binary.source(false, &(), true).await?; - let process = run_contracts_node(binary.path(), None).await?; + let process = run_contracts_node(binary.path(), None, 9947).await?; // Check if the node is alive assert!(is_chain_alive(local_url).await?); diff --git a/crates/pop-contracts/src/testing.rs b/crates/pop-contracts/src/testing.rs index 6a8abfcd..c10bd4e5 100644 --- a/crates/pop-contracts/src/testing.rs +++ b/crates/pop-contracts/src/testing.rs @@ -4,6 +4,7 @@ use crate::{create_smart_contract, Contract}; use anyhow::Result; use std::{ fs::{copy, create_dir}, + net::TcpListener, path::Path, }; @@ -37,3 +38,12 @@ where copy(metadata_file, target_contract_dir.join("ink/testing.json"))?; Ok(()) } + +/// Finds an available port by binding to port 0 and retrieving the assigned port. +pub fn find_free_port() -> u16 { + TcpListener::bind("127.0.0.1:0") + .expect("Failed to bind to an available port") + .local_addr() + .expect("Failed to retrieve local address") + .port() +} diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 16f7a6ac..f9dae9e9 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -381,10 +381,12 @@ mod tests { use super::*; use crate::{ contracts_node_generator, errors::Error, mock_build_process, new_environment, - run_contracts_node, + run_contracts_node, testing::find_free_port, }; use anyhow::Result; - use std::{env, process::Command}; + use pop_common::set_executable_permission; + use std::{env, process::Command, time::Duration}; + use tokio::time::sleep; use url::Url; const CONTRACTS_NETWORK_URL: &str = "wss://rpc2.paseo.popnetwork.xyz"; @@ -541,7 +543,8 @@ mod tests { #[tokio::test] async fn instantiate_and_upload() -> Result<()> { - const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; + let random_port = find_free_port(); + let localhost_url = format!("ws://127.0.0.1:{}", random_port); let temp_dir = new_environment("testing")?; let current_dir = env::current_dir().expect("Failed to get current directory"); mock_build_process( @@ -554,8 +557,10 @@ mod tests { let binary = contracts_node_generator(cache.clone(), None).await?; binary.source(false, &(), true).await?; - let process = run_contracts_node(binary.path(), None).await?; - + set_executable_permission(binary.path())?; + let process = run_contracts_node(binary.path(), None, random_port).await?; + // Wait 5 secs more to give time for the node to be ready + sleep(Duration::from_millis(5000)).await; let upload_exec = set_up_upload(UpOpts { path: Some(temp_dir.path().join("testing")), constructor: "new".to_string(), @@ -564,7 +569,7 @@ mod tests { gas_limit: None, proof_size: None, salt: None, - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), }) .await?; @@ -588,7 +593,7 @@ mod tests { gas_limit: None, proof_size: None, salt: Some(Bytes::from(vec![0x00])), - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), }) .await?; diff --git a/crates/pop-parachains/src/build.rs b/crates/pop-parachains/src/build.rs index 27a2acd9..3c25b2a0 100644 --- a/crates/pop-parachains/src/build.rs +++ b/crates/pop-parachains/src/build.rs @@ -321,14 +321,8 @@ mod tests { Zombienet, }; use anyhow::Result; - use pop_common::manifest::Dependency; - use std::{ - fs, - fs::{metadata, write}, - io::Write, - os::unix::fs::PermissionsExt, - path::Path, - }; + use pop_common::{manifest::Dependency, set_executable_permission}; + use std::{fs, fs::write, io::Write, path::Path}; use tempfile::{tempdir, Builder}; fn setup_template_and_instantiate() -> Result { @@ -405,10 +399,7 @@ default_command = "pop-node" let content = fs::read(&binary_path)?; write(temp_dir.join("target/release/parachain-template-node"), content)?; // Make executable - let mut perms = - metadata(temp_dir.join("target/release/parachain-template-node"))?.permissions(); - perms.set_mode(0o755); - fs::set_permissions(temp_dir.join("target/release/parachain-template-node"), perms)?; + set_executable_permission(temp_dir.join("target/release/parachain-template-node"))?; Ok(binary_path) } diff --git a/crates/pop-parachains/tests/parachain.rs b/crates/pop-parachains/tests/parachain.rs index 1b03c294..3581d243 100644 --- a/crates/pop-parachains/tests/parachain.rs +++ b/crates/pop-parachains/tests/parachain.rs @@ -112,7 +112,7 @@ async fn launch_paseo_and_system_parachain() -> Result<()> { Some(BINARY_VERSION), None, Some(BINARY_VERSION), - None, + Some("v1.3.3"), // 1.3.3 is where coretime-paseo-local was introduced. None, ) .await?; From bf5fc9607c3981210a4a146a4883f41ead3358dd Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Thu, 5 Dec 2024 20:38:41 +0100 Subject: [PATCH 029/143] fix: build spec experience (#331) * fix: add chain to specify the chain specification * fix: default_bootnode by default to true * chore: fmt * chore: deprecate flag --release in build specs * fix: clean output (#334) * fix: undo deprecation of --release flag * refactor: small fix * style: remove extra space * fix(spec): better handling of spinner * style: use spinner instead of multispinner * docs: help message to include build * feat: reuse existing chain spec * refactor: remove clone * refactor: opt in to edit provided chain spec * docs: improve * refactor: flow flag input * fix: prepare_output_path * refactor: resolve small improvements * fix: protocol id prompt * fix: spinner * fix: docs * test: test cli * chore: refactor * chore: amend test * feat: production profile * refactor: improve profile experience * chore: feedback and rebase * chore: add profile tests * fix(test): parachain_lifecycle * style: fmt * fix: clippy * fix: cli required changes introduced by PR * fix: test * fix: clippy * docs: deprecation message --------- Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> Co-authored-by: Daanvdplas --- Cargo.lock | 10 + Cargo.toml | 1 + crates/pop-cli/src/cli.rs | 67 +- crates/pop-cli/src/commands/build/mod.rs | 80 +- .../pop-cli/src/commands/build/parachain.rs | 31 +- crates/pop-cli/src/commands/build/spec.rs | 903 +++++++++++++----- crates/pop-cli/src/commands/call/contract.rs | 67 +- crates/pop-cli/src/commands/mod.rs | 4 +- crates/pop-cli/tests/parachain.rs | 7 +- crates/pop-common/Cargo.toml | 3 +- crates/pop-common/src/build.rs | 97 +- crates/pop-common/src/manifest.rs | 79 +- crates/pop-parachains/README.md | 4 +- crates/pop-parachains/src/build.rs | 98 +- crates/pop-parachains/src/utils/onboard.rs | 0 15 files changed, 1088 insertions(+), 363 deletions(-) create mode 100644 crates/pop-parachains/src/utils/onboard.rs diff --git a/Cargo.lock b/Cargo.lock index f4cab745..923f2b97 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4845,6 +4845,7 @@ dependencies = [ "tempfile", "thiserror", "tokio", + "toml 0.5.11", "toml_edit 0.22.20", "url", ] @@ -7456,6 +7457,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml" version = "0.7.8" diff --git a/Cargo.toml b/Cargo.toml index 49ca3e68..f9304fca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,7 @@ tar = "0.4.40" tempfile = "3.10" thiserror = "1.0.58" tokio-test = "0.4.4" +toml = "0.5.0" # networking reqwest = { version = "0.12", features = ["json"] } diff --git a/crates/pop-cli/src/cli.rs b/crates/pop-cli/src/cli.rs index 968c1a4f..6c6bb3bc 100644 --- a/crates/pop-cli/src/cli.rs +++ b/crates/pop-cli/src/cli.rs @@ -68,6 +68,8 @@ pub(crate) mod traits { /// A select prompt. pub trait Select { + /// Sets the initially selected value. + fn initial_value(self, initial_value: T) -> Self; /// Starts the prompt interaction. fn interact(&mut self) -> Result; /// Adds an item to the selection prompt. @@ -133,20 +135,22 @@ impl traits::Cli for Cli { /// A confirmation prompt using cliclack. struct Confirm(cliclack::Confirm); + impl traits::Confirm for Confirm { - /// Starts the prompt interaction. - fn interact(&mut self) -> Result { - self.0.interact() - } /// Sets the initially selected value. fn initial_value(mut self, initial_value: bool) -> Self { self.0 = self.0.initial_value(initial_value); self } + /// Starts the prompt interaction. + fn interact(&mut self) -> Result { + self.0.interact() + } } /// A input prompt using cliclack. struct Input(cliclack::Input); + impl traits::Input for Input { /// Sets the default value for the input. fn default_input(mut self, value: &str) -> Self { @@ -203,6 +207,12 @@ impl traits::MultiSelect for MultiSelect { struct Select(cliclack::Select); impl traits::Select for Select { + /// Sets the initially selected value. + fn initial_value(mut self, initial_value: T) -> Self { + self.0 = self.0.initial_value(initial_value); + self + } + /// Starts the prompt interaction. fn interact(&mut self) -> Result { self.0.interact() @@ -231,8 +241,7 @@ pub(crate) mod tests { multiselect_expectation: Option<(String, Option, bool, Option>)>, outro_cancel_expectation: Option, - select_expectation: - Option<(String, Option, bool, Option>, usize)>, + select_expectation: Vec<(String, Option, bool, Option>, usize)>, success_expectations: Vec, warning_expectations: Vec, } @@ -243,17 +252,17 @@ pub(crate) mod tests { } pub(crate) fn expect_confirm(mut self, prompt: impl Display, confirm: bool) -> Self { - self.confirm_expectation.push((prompt.to_string(), confirm)); + self.confirm_expectation.insert(0, (prompt.to_string(), confirm)); self } pub(crate) fn expect_input(mut self, prompt: impl Display, input: String) -> Self { - self.input_expectations.push((prompt.to_string(), input)); + self.input_expectations.insert(0, (prompt.to_string(), input)); self } pub(crate) fn expect_info(mut self, message: impl Display) -> Self { - self.info_expectations.push(message.to_string()); + self.info_expectations.insert(0, message.to_string()); self } @@ -283,7 +292,7 @@ pub(crate) mod tests { self } - pub(crate) fn expect_select( + pub(crate) fn expect_select( mut self, prompt: impl Display, required: Option, @@ -291,7 +300,8 @@ pub(crate) mod tests { items: Option>, item: usize, ) -> Self { - self.select_expectation = Some((prompt.to_string(), required, collect, items, item)); + self.select_expectation + .insert(0, (prompt.to_string(), required, collect, items, item)); self } @@ -327,8 +337,15 @@ pub(crate) mod tests { if let Some(expectation) = self.outro_cancel_expectation { panic!("`{expectation}` outro cancel expectation not satisfied") } - if let Some((prompt, _, _, _, _)) = self.select_expectation { - panic!("`{prompt}` select prompt expectation not satisfied") + if !self.select_expectation.is_empty() { + panic!( + "`{}` select prompt expectation not satisfied", + self.select_expectation + .iter() + .map(|(s, _, _, _, _)| s.clone()) // Extract the `String` part + .collect::>() + .join(", ") + ); } if !self.success_expectations.is_empty() { panic!( @@ -425,10 +442,16 @@ pub(crate) mod tests { fn select(&mut self, prompt: impl Display) -> impl Select { let prompt = prompt.to_string(); if let Some((expectation, _, collect, items_expectation, item)) = - self.select_expectation.take() + self.select_expectation.pop() { assert_eq!(expectation, prompt, "prompt does not satisfy expectation"); - return MockSelect { items_expectation, collect, items: vec![], item }; + return MockSelect { + items_expectation, + collect, + items: vec![], + item, + initial_value: None, + }; } MockSelect::default() @@ -553,15 +576,27 @@ pub(crate) mod tests { collect: bool, items: Vec, item: usize, + initial_value: Option, } impl MockSelect { pub(crate) fn default() -> Self { - Self { items_expectation: None, collect: false, items: vec![], item: 0 } + Self { + items_expectation: None, + collect: false, + items: vec![], + item: 0, + initial_value: None, + } } } impl Select for MockSelect { + fn initial_value(mut self, initial_value: T) -> Self { + self.initial_value = Some(initial_value); + self + } + fn interact(&mut self) -> Result { Ok(self.items[self.item].clone()) } diff --git a/crates/pop-cli/src/commands/build/mod.rs b/crates/pop-cli/src/commands/build/mod.rs index 08af079b..f1a69c9c 100644 --- a/crates/pop-cli/src/commands/build/mod.rs +++ b/crates/pop-cli/src/commands/build/mod.rs @@ -5,6 +5,7 @@ use clap::{Args, Subcommand}; #[cfg(feature = "contract")] use contract::BuildContractCommand; use duct::cmd; +use pop_common::Profile; use std::path::PathBuf; #[cfg(feature = "parachain")] use {parachain::BuildParachainCommand, spec::BuildSpecCommand}; @@ -29,8 +30,11 @@ pub(crate) struct BuildArgs { #[arg(short = 'p', long)] pub(crate) package: Option, /// For production, always build in release mode to exclude debug features. - #[clap(short, long)] + #[clap(short, long, conflicts_with = "profile")] pub(crate) release: bool, + /// Build profile [default: debug]. + #[clap(long, value_enum)] + pub(crate) profile: Option, /// Parachain ID to be used when generating the chain spec files. #[arg(short = 'i', long = "id")] #[cfg(feature = "parachain")] @@ -62,19 +66,26 @@ impl Command { #[cfg(feature = "contract")] if pop_contracts::is_supported(args.path.as_deref())? { // All commands originating from root command are valid - BuildContractCommand { path: args.path, release: args.release, valid: true } - .execute()?; + let release = match args.profile { + Some(profile) => profile.into(), + None => args.release, + }; + BuildContractCommand { path: args.path, release, valid: true }.execute()?; return Ok("contract"); } // If only parachain feature enabled, build as parachain #[cfg(feature = "parachain")] if pop_parachains::is_supported(args.path.as_deref())? { + let profile = match args.profile { + Some(profile) => profile, + None => args.release.into(), + }; // All commands originating from root command are valid BuildParachainCommand { path: args.path, package: args.package, - release: args.release, + profile: Some(profile), id: args.id, valid: true, } @@ -101,13 +112,15 @@ impl Command { _args.push("--package"); _args.push(package) } - if args.release { + let profile = args.profile.unwrap_or(Profile::Debug); + if profile == Profile::Release { _args.push("--release"); + } else if profile == Profile::Production { + _args.push("--profile=production"); } cmd("cargo", _args).dir(args.path.unwrap_or_else(|| "./".into())).run()?; - let mode = if args.release { "RELEASE" } else { "DEBUG" }; - cli.info(format!("The {project} was built in {mode} mode."))?; + cli.info(format!("The {project} was built in {} mode.", profile))?; cli.outro("Build completed successfully!")?; Ok(project) } @@ -117,41 +130,46 @@ impl Command { mod tests { use super::*; use cli::MockCli; + use pop_common::manifest::add_production_profile; + use strum::VariantArray; #[test] fn build_works() -> anyhow::Result<()> { let name = "hello_world"; let temp_dir = tempfile::tempdir()?; let path = temp_dir.path(); + let project_path = path.join(name); cmd("cargo", ["new", name, "--bin"]).dir(&path).run()?; + add_production_profile(&project_path)?; for package in [None, Some(name.to_string())] { - for release in [false, true] { - let project = if package.is_some() { "package" } else { "project" }; - let mode = if release { "RELEASE" } else { "DEBUG" }; - let mut cli = MockCli::new() - .expect_intro(format!("Building your {project}")) - .expect_info(format!("The {project} was built in {mode} mode.")) - .expect_outro("Build completed successfully!"); - - assert_eq!( - Command::build( - BuildArgs { - command: None, - path: Some(path.join(name)), - package: package.clone(), - release, - id: None, - }, - &mut cli, - )?, - project - ); - - cli.verify()?; + for release in [true, false] { + for profile in Profile::VARIANTS { + let profile = if release { Profile::Release } else { profile.clone() }; + let project = if package.is_some() { "package" } else { "project" }; + let mut cli = MockCli::new() + .expect_intro(format!("Building your {project}")) + .expect_info(format!("The {project} was built in {profile} mode.")) + .expect_outro("Build completed successfully!"); + + assert_eq!( + Command::build( + BuildArgs { + command: None, + path: Some(project_path.clone()), + package: package.clone(), + release, + profile: Some(profile.clone()), + id: None, + }, + &mut cli, + )?, + project + ); + cli.verify()?; + } } } - Ok(()) } } diff --git a/crates/pop-cli/src/commands/build/parachain.rs b/crates/pop-cli/src/commands/build/parachain.rs index a6e47c67..67000e62 100644 --- a/crates/pop-cli/src/commands/build/parachain.rs +++ b/crates/pop-cli/src/commands/build/parachain.rs @@ -16,9 +16,9 @@ pub struct BuildParachainCommand { /// The package to be built. #[arg(short = 'p', long)] pub(crate) package: Option, - /// For production, always build in release mode to exclude debug features. - #[clap(short, long, default_value = "true")] - pub(crate) release: bool, + /// Build profile [default: debug]. + #[clap(long, value_enum)] + pub(crate) profile: Option, /// Parachain ID to be used when generating the chain spec files. #[arg(short = 'i', long = "id")] pub(crate) id: Option, @@ -41,12 +41,13 @@ impl BuildParachainCommand { let project = if self.package.is_some() { "package" } else { "parachain" }; cli.intro(format!("Building your {project}"))?; + let profile = self.profile.unwrap_or(Profile::Debug); // Show warning if specified as deprecated. if !self.valid { cli.warning("NOTE: this command is deprecated. Please use `pop build` (or simply `pop b`) in future...")?; #[cfg(not(test))] sleep(Duration::from_secs(3)) - } else if !self.release { + } else if profile == Profile::Debug { cli.warning("NOTE: this command now defaults to DEBUG builds. Please use `--release` (or simply `-r`) for a release build...")?; #[cfg(not(test))] sleep(Duration::from_secs(3)) @@ -55,9 +56,8 @@ impl BuildParachainCommand { // Build parachain. cli.warning("NOTE: this may take some time...")?; let project_path = self.path.unwrap_or_else(|| PathBuf::from("./")); - let mode: Profile = self.release.into(); - let binary = build_parachain(&project_path, self.package, &mode, None)?; - cli.info(format!("The {project} was built in {mode} mode."))?; + let binary = build_parachain(&project_path, self.package, &profile, None)?; + cli.info(format!("The {project} was built in {} mode.", profile))?; cli.outro("Build completed successfully!")?; let generated_files = [format!("Binary generated at: {}", binary.display())]; let generated_files: Vec<_> = generated_files @@ -79,7 +79,9 @@ mod tests { use super::*; use cli::MockCli; use duct::cmd; + use pop_common::manifest::add_production_profile; use std::{fs, io::Write, path::Path}; + use strum::VariantArray; // Function that generates a Cargo.toml inside node directory for testing. fn generate_mock_node(temp_dir: &Path) -> anyhow::Result<()> { @@ -106,33 +108,34 @@ mod tests { let name = "hello_world"; let temp_dir = tempfile::tempdir()?; let path = temp_dir.path(); + let project_path = path.join(name); cmd("cargo", ["new", name, "--bin"]).dir(&path).run()?; - generate_mock_node(&temp_dir.path().join(name))?; + add_production_profile(&project_path)?; + generate_mock_node(&project_path)?; for package in [None, Some(name.to_string())] { - for release in [false, true] { + for profile in Profile::VARIANTS { for valid in [false, true] { let project = if package.is_some() { "package" } else { "parachain" }; - let mode = if release { Profile::Release } else { Profile::Debug }; let mut cli = MockCli::new() .expect_intro(format!("Building your {project}")) .expect_warning("NOTE: this may take some time...") - .expect_info(format!("The {project} was built in {mode} mode.")) + .expect_info(format!("The {project} was built in {profile} mode.")) .expect_outro("Build completed successfully!"); if !valid { cli = cli.expect_warning("NOTE: this command is deprecated. Please use `pop build` (or simply `pop b`) in future..."); } else { - if !release { + if profile == &Profile::Debug { cli = cli.expect_warning("NOTE: this command now defaults to DEBUG builds. Please use `--release` (or simply `-r`) for a release build..."); } } assert_eq!( BuildParachainCommand { - path: Some(path.join(name)), + path: Some(project_path.clone()), package: package.clone(), - release, + profile: Some(profile.clone()), id: None, valid, } diff --git a/crates/pop-cli/src/commands/build/spec.rs b/crates/pop-cli/src/commands/build/spec.rs index 11c94ff0..3cde4c61 100644 --- a/crates/pop-cli/src/commands/build/spec.rs +++ b/crates/pop-cli/src/commands/build/spec.rs @@ -2,11 +2,14 @@ use crate::{ cli, - cli::{traits::Cli as _, Cli}, + cli::{ + traits::{Cli as _, *}, + Cli, + }, style::style, }; use clap::{Args, ValueEnum}; -use cliclack::{confirm, input}; +use cliclack::spinner; use pop_common::Profile; use pop_parachains::{ binary_path, build_parachain, export_wasm_file, generate_genesis_state_file, @@ -22,6 +25,7 @@ use std::{thread::sleep, time::Duration}; use strum::{EnumMessage, VariantArray}; use strum_macros::{AsRefStr, Display, EnumString}; +const DEFAULT_CHAIN: &str = "dev"; const DEFAULT_PARA_ID: u32 = 2000; const DEFAULT_PROTOCOL_ID: &str = "my-protocol"; const DEFAULT_SPEC_NAME: &str = "chain-spec.json"; @@ -127,169 +131,392 @@ pub(crate) enum RelayChain { PolkadotLocal, } -#[derive(Args)] +/// Command for generating a chain specification. +#[derive(Args, Default)] pub struct BuildSpecCommand { /// File name for the resulting spec. If a path is given, /// the necessary directories will be created - /// [default: ./chain-spec.json]. #[arg(short = 'o', long = "output")] pub(crate) output_file: Option, - /// For production, always build in release mode to exclude debug features. - #[clap(short = 'r', long, default_value = "true")] + /// [DEPRECATED] and will be removed in v0.7.0, use `profile`. + #[arg(short = 'r', long, conflicts_with = "profile")] pub(crate) release: bool, + /// Build profile for the binary to generate the chain specification. + #[arg(long, value_enum)] + pub(crate) profile: Option, /// Parachain ID to be used when generating the chain spec files. - #[arg(short = 'i', long = "id")] + #[arg(short = 'i', long)] pub(crate) id: Option, /// Whether to keep localhost as a bootnode. - #[clap(long, default_value = "true")] + #[arg(long)] pub(crate) default_bootnode: bool, - /// Type of the chain [default: development]. + /// Type of the chain. #[arg(short = 't', long = "type", value_enum)] pub(crate) chain_type: Option, - /// Relay chain this parachain will connect to [default: paseo-local]. + /// Provide the chain specification to use (e.g. dev, local, custom or a path to an existing + /// file). + #[arg(short = 'c', long = "chain")] + pub(crate) chain: Option, + /// Relay chain this parachain will connect to. #[arg(long, value_enum)] pub(crate) relay: Option, /// Protocol-id to use in the specification. #[arg(long = "protocol-id")] pub(crate) protocol_id: Option, - /// Whether the genesis state file should be generated [default: true]. - #[clap(long = "genesis-state", default_value = "true")] + /// Whether the genesis state file should be generated. + #[arg(long = "genesis-state")] pub(crate) genesis_state: bool, - /// Whether the genesis code file should be generated [default: true]. - #[clap(long = "genesis-code", default_value = "true")] + /// Whether the genesis code file should be generated. + #[arg(long = "genesis-code")] pub(crate) genesis_code: bool, } impl BuildSpecCommand { - /// Executes the command. + /// Executes the build spec command. pub(crate) async fn execute(self) -> anyhow::Result<&'static str> { + let mut cli = Cli; + cli.intro("Generate your chain spec")?; // Checks for appchain project in `./`. if is_supported(None)? { - // If para id has been provided we can build the spec - // otherwise, we need to guide the user. - let _ = match self.id { - Some(_) => self.build(&mut Cli), - None => { - let config = guide_user_to_generate_spec(self).await?; - config.build(&mut Cli) - }, - }; - Ok("spec") + let build_spec = self.configure_build_spec(&mut cli).await?; + build_spec.build(&mut cli) } else { - Cli.intro("Building your chain spec")?; - Cli.outro_cancel( + cli.outro_cancel( "🚫 Can't build a specification for target. Maybe not a chain project ?", )?; Ok("spec") } } - /// Builds a parachain spec. + /// Configure chain specification requirements by prompting for missing inputs, validating + /// provided values, and preparing a BuildSpec to generate file(s). /// /// # Arguments - /// * `cli` - The CLI implementation to be used. - fn build(self, cli: &mut impl cli::traits::Cli) -> anyhow::Result<&'static str> { - cli.intro("Building your chain spec")?; - - // Either a para id was already provided or user has been guided to provide one. - let para_id = self.id.unwrap_or(DEFAULT_PARA_ID); - // Notify user in case we need to build the parachain project. - if !self.release { - cli.warning("NOTE: this command defaults to DEBUG builds for development chain types. Please use `--release` (or simply `-r` for a release build...)")?; - #[cfg(not(test))] - sleep(Duration::from_secs(3)) - } + /// * `cli` - The cli. + async fn configure_build_spec( + self, + cli: &mut impl cli::traits::Cli, + ) -> anyhow::Result { + let BuildSpecCommand { + output_file, + profile, + release, + id, + default_bootnode, + chain_type, + chain, + relay, + protocol_id, + genesis_state, + genesis_code, + } = self; - let spinner = cliclack::spinner(); - spinner.start("Generating chain specification..."); + // Chain. + let chain = match chain { + Some(chain) => chain, + _ => { + // Prompt for chain if not provided. + cli.input("Provide the chain specification to use (e.g. dev, local, custom or a path to an existing file)") + .placeholder(DEFAULT_CHAIN) + .default_input(DEFAULT_CHAIN) + .interact()? + }, + }; - // Create output path if needed - let mut output_path = self.output_file.unwrap_or_else(|| PathBuf::from("./")); - let mut plain_chain_spec; - if output_path.is_dir() { - if !output_path.exists() { - // Generate the output path if needed - create_dir_all(&output_path)?; + // Output file. + let maybe_chain_spec_file = PathBuf::from(&chain); + // Check if the provided chain specification is a file. + let (output_file, prompt) = if maybe_chain_spec_file.exists() && + maybe_chain_spec_file.is_file() + { + if output_file.is_some() { + cli.warning("NOTE: If an existing chain spec file is provided it will be used for the output path.")?; } - plain_chain_spec = output_path.join(DEFAULT_SPEC_NAME); + // Prompt whether the user wants to make additional changes to the provided chain spec + // file. + let prompt = cli.confirm("An existing chain spec file is provided. Do you want to make additional changes to it?".to_string()) + .initial_value(false) + .interact()?; + // Set the provided chain specification file as output file and whether to prompt the + // user for additional changes to the provided spec. + (maybe_chain_spec_file, prompt) } else { - plain_chain_spec = output_path.clone(); - output_path.pop(); - if !output_path.exists() { - // Generate the output path if needed - create_dir_all(&output_path)?; - } - } - plain_chain_spec.set_extension("json"); + let output_file = match output_file { + Some(output) => output, + None => { + // Prompt for output file if not provided. + let default_output = format!("./{DEFAULT_SPEC_NAME}"); + PathBuf::from( + cli.input("Name or path for the plain chain spec file:") + .placeholder(&default_output) + .default_input(&default_output) + .interact()?, + ) + }, + }; + (prepare_output_path(&output_file)?, true) + }; + // If chain specification file already exists, obtain values for defaults when prompting. + let chain_spec = ChainSpec::from(&output_file).ok(); - // Locate binary, if it doesn't exist trigger build. - let mode: Profile = self.release.into(); - let cwd = current_dir().unwrap_or(PathBuf::from("./")); - let binary_path = match binary_path(&mode.target_directory(&cwd), &cwd.join("node")) { - Ok(binary_path) => binary_path, - _ => { - cli.info("Node was not found. The project will be built locally.".to_string())?; - cli.warning("NOTE: this may take some time...")?; - build_parachain(&cwd, None, &mode, None)? + // Para id. + let id = match id { + Some(id) => id, + None => { + let default = chain_spec + .as_ref() + .and_then(|cs| cs.get_parachain_id().map(|id| id as u32)) + .unwrap_or(DEFAULT_PARA_ID); + if prompt { + // Prompt for para id. + let default_str = default.to_string(); + cli.input("What parachain ID should be used?") + .default_input(&default_str) + .default_input(&default_str) + .interact()? + .parse::() + .unwrap_or(DEFAULT_PARA_ID) + } else { + default + } }, }; - // Generate plain spec. - spinner.set_message("Generating plain chain specification..."); + // Chain type. + let chain_type = match chain_type { + Some(chain_type) => chain_type, + None => { + let default = chain_spec + .as_ref() + .and_then(|cs| cs.get_chain_type()) + .and_then(|r| ChainType::from_str(r, true).ok()) + .unwrap_or_default(); + if prompt { + // Prompt for chain type. + let mut prompt = + cli.select("Choose the chain type: ".to_string()).initial_value(&default); + for chain_type in ChainType::VARIANTS { + prompt = prompt.item( + chain_type, + chain_type.get_message().unwrap_or(chain_type.as_ref()), + chain_type.get_detailed_message().unwrap_or_default(), + ); + } + prompt.interact()?.clone() + } else { + default + } + }, + }; + + // Relay. + let relay = match relay { + Some(relay) => relay, + None => { + let default = chain_spec + .as_ref() + .and_then(|cs| cs.get_relay_chain()) + .and_then(|r| RelayChain::from_str(r, true).ok()) + .unwrap_or_default(); + if prompt { + // Prompt for relay. + let mut prompt = cli + .select("Choose the relay your chain will be connecting to: ".to_string()) + .initial_value(&default); + for relay in RelayChain::VARIANTS { + prompt = prompt.item( + relay, + relay.get_message().unwrap_or(relay.as_ref()), + relay.get_detailed_message().unwrap_or_default(), + ); + } + prompt.interact()?.clone() + } else { + default + } + }, + }; + + // Prompt user for build profile. + let mut profile = match profile { + Some(profile) => profile, + None => { + let default = Profile::Release; + if prompt && !release { + // Prompt for build profile. + let mut prompt = cli + .select( + "Choose the build profile of the binary that should be used: " + .to_string(), + ) + .initial_value(&default); + for profile in Profile::VARIANTS { + prompt = prompt.item( + profile, + profile.get_message().unwrap_or(profile.as_ref()), + profile.get_detailed_message().unwrap_or_default(), + ); + } + prompt.interact()?.clone() + } else { + default + } + }, + }; + + // Protocol id. + let protocol_id = match protocol_id { + Some(protocol_id) => protocol_id, + None => { + let default = chain_spec + .as_ref() + .and_then(|cs| cs.get_protocol_id()) + .unwrap_or(DEFAULT_PROTOCOL_ID) + .to_string(); + if prompt { + // Prompt for protocol id. + cli.input("Enter the protocol ID that will identify your network:") + .placeholder(&default) + .default_input(&default) + .interact()? + } else { + default + } + }, + }; + + // Prompt for default bootnode if not provided and chain type is Local or Live. + let default_bootnode = if !default_bootnode { + match chain_type { + ChainType::Development => true, + _ => cli + .confirm("Would you like to use local host as a bootnode ?".to_string()) + .interact()?, + } + } else { + true + }; + + // Prompt for genesis state if not provided. + let genesis_state = if !genesis_state { + cli.confirm("Should the genesis state file be generated ?".to_string()) + .initial_value(true) + .interact()? + } else { + true + }; + + // Prompt for genesis code if not provided. + let genesis_code = if !genesis_code { + cli.confirm("Should the genesis code file be generated ?".to_string()) + .initial_value(true) + .interact()? + } else { + true + }; + + if release { + cli.warning("NOTE: release flag is deprecated. Use `--profile` instead.")?; + #[cfg(not(test))] + sleep(Duration::from_secs(3)); + profile = Profile::Release; + } + + Ok(BuildSpec { + output_file, + profile, + id, + default_bootnode, + chain_type, + chain, + relay, + protocol_id, + genesis_state, + genesis_code, + }) + } +} + +// Represents the configuration for building a chain specification. +#[derive(Debug)] +struct BuildSpec { + output_file: PathBuf, + profile: Profile, + id: u32, + default_bootnode: bool, + chain_type: ChainType, + chain: String, + relay: RelayChain, + protocol_id: String, + genesis_state: bool, + genesis_code: bool, +} + +impl BuildSpec { + // Executes the process of generating the chain specification. + // + // This function generates plain and raw chain spec files based on the provided configuration, + // optionally including genesis state and runtime artifacts. If the node binary is missing, + // it triggers a build process. + fn build(self, cli: &mut impl cli::traits::Cli) -> anyhow::Result<&'static str> { + cli.intro("Building your chain spec")?; let mut generated_files = vec![]; - generate_plain_chain_spec(&binary_path, &plain_chain_spec, self.default_bootnode)?; + let BuildSpec { + ref output_file, + ref profile, + id, + default_bootnode, + ref chain, + genesis_state, + genesis_code, + .. + } = self; + // Ensure binary is built. + let binary_path = ensure_binary_exists(cli, profile)?; + let spinner = spinner(); + spinner.start("Generating chain specification..."); + + // Generate chain spec. + generate_plain_chain_spec(&binary_path, output_file, default_bootnode, chain)?; + // Customize spec based on input. + self.customize()?; generated_files.push(format!( "Plain text chain specification file generated at: {}", - plain_chain_spec.display() + &output_file.display() )); - // Customize spec based on input. - let mut chain_spec = ChainSpec::from(&plain_chain_spec)?; - chain_spec.replace_para_id(para_id)?; - let relay = self.relay.unwrap_or(RelayChain::PaseoLocal).to_string(); - chain_spec.replace_relay_chain(&relay)?; - let chain_type = self.chain_type.unwrap_or(ChainType::Development).to_string(); - chain_spec.replace_chain_type(&chain_type)?; - if self.protocol_id.is_some() { - let protocol_id = self.protocol_id.unwrap_or(DEFAULT_PROTOCOL_ID.to_string()); - chain_spec.replace_protocol_id(&protocol_id)?; - } - chain_spec.to_file(&plain_chain_spec)?; - // Generate raw spec. spinner.set_message("Generating raw chain specification..."); - let spec_name = plain_chain_spec + let spec_name = &output_file .file_name() .and_then(|s| s.to_str()) .unwrap_or(DEFAULT_SPEC_NAME) .trim_end_matches(".json"); let raw_spec_name = format!("{spec_name}-raw.json"); - let raw_chain_spec = - generate_raw_chain_spec(&binary_path, &plain_chain_spec, &raw_spec_name)?; + let raw_chain_spec = generate_raw_chain_spec(&binary_path, output_file, &raw_spec_name)?; generated_files.push(format!( "Raw chain specification file generated at: {}", raw_chain_spec.display() )); // Generate genesis artifacts. - if self.genesis_code { + if genesis_code { spinner.set_message("Generating genesis code..."); - let wasm_file_name = format!("para-{}.wasm", para_id); + let wasm_file_name = format!("para-{}.wasm", id); let wasm_file = export_wasm_file(&binary_path, &raw_chain_spec, &wasm_file_name)?; generated_files .push(format!("WebAssembly runtime file exported at: {}", wasm_file.display())); } - - if self.genesis_state { + if genesis_state { spinner.set_message("Generating genesis state..."); - let genesis_file_name = format!("para-{}-genesis-state", para_id); + let genesis_file_name = format!("para-{}-genesis-state", id); let genesis_state_file = generate_genesis_state_file(&binary_path, &raw_chain_spec, &genesis_file_name)?; generated_files .push(format!("Genesis State file exported at: {}", genesis_state_file.display())); } - cli.intro("Building your chain spec".to_string())?; + spinner.stop("Chain specification built successfully."); let generated_files: Vec<_> = generated_files .iter() .map(|s| style(format!("{} {s}", console::Emoji("●", ">"))).dim().to_string()) @@ -299,156 +526,370 @@ impl BuildSpecCommand { "Need help? Learn more at {}\n", style("https://learn.onpop.io").magenta().underlined() ))?; - Ok("spec") } + + // Customize a chain specification. + fn customize(&self) -> anyhow::Result<()> { + let mut chain_spec = ChainSpec::from(&self.output_file)?; + chain_spec.replace_para_id(self.id)?; + chain_spec.replace_relay_chain(self.relay.as_ref())?; + chain_spec.replace_chain_type(self.chain_type.as_ref())?; + chain_spec.replace_protocol_id(&self.protocol_id)?; + chain_spec.to_file(&self.output_file)?; + Ok(()) + } } -/// Guide the user to generate their chain specification. -async fn guide_user_to_generate_spec(args: BuildSpecCommand) -> anyhow::Result { - Cli.intro("Generate your chain spec")?; - - // Confirm output path - let default_output = format!("./{DEFAULT_SPEC_NAME}"); - let output_file: String = input("Name of the plain chain spec file. If a path is given, the necessary directories will be created:") - .placeholder(&default_output) - .default_input(&default_output) - .interact()?; - - // Check if specified chain spec already exists, allowing us to default values for prompts - let path = Path::new(&output_file); - let chain_spec = - (path.is_file() && path.exists()).then(|| ChainSpec::from(path).ok()).flatten(); - - // Prompt for chain id. - let default = chain_spec - .as_ref() - .and_then(|cs| cs.get_parachain_id()) - .unwrap_or(DEFAULT_PARA_ID as u64) - .to_string(); - let para_id: u32 = input("What parachain ID should be used?") - .placeholder(&default) - .default_input(&default) - .interact()?; - - // Prompt for chain type. - // If relay is Kusama or Polkadot, then Live type is used and user is not prompted. - let mut prompt = cliclack::select("Choose the chain type: ".to_string()); - let default = chain_spec - .as_ref() - .and_then(|cs| cs.get_chain_type()) - .and_then(|r| ChainType::from_str(r, true).ok()); - if let Some(chain_type) = default.as_ref() { - prompt = prompt.initial_value(chain_type); +// Locate binary, if it doesn't exist trigger build. +fn ensure_binary_exists( + cli: &mut impl cli::traits::Cli, + mode: &Profile, +) -> anyhow::Result { + let cwd = current_dir().unwrap_or(PathBuf::from("./")); + match binary_path(&mode.target_directory(&cwd), &cwd.join("node")) { + Ok(binary_path) => Ok(binary_path), + _ => { + cli.info("Node was not found. The project will be built locally.".to_string())?; + cli.warning("NOTE: this may take some time...")?; + build_parachain(&cwd, None, mode, None).map_err(|e| e.into()) + }, } - for (i, chain_type) in ChainType::VARIANTS.iter().enumerate() { - if default.is_none() && i == 0 { - prompt = prompt.initial_value(chain_type); +} + +// Prepare the output path provided. +fn prepare_output_path(output_path: impl AsRef) -> anyhow::Result { + let mut output_path = output_path.as_ref().to_path_buf(); + // Check if the path ends with '.json' + let is_json_file = output_path + .extension() + .and_then(|ext| ext.to_str()) + .map(|ext| ext.eq_ignore_ascii_case("json")) + .unwrap_or(false); + + if !is_json_file { + // Treat as directory. + if !output_path.exists() { + create_dir_all(&output_path)?; + } + output_path.push(DEFAULT_SPEC_NAME); + } else { + // Treat as file. + if let Some(parent_dir) = output_path.parent() { + if !parent_dir.exists() { + create_dir_all(parent_dir)?; + } } - prompt = prompt.item( - chain_type, - chain_type.get_message().unwrap_or(chain_type.as_ref()), - chain_type.get_detailed_message().unwrap_or_default(), - ); } - let chain_type: ChainType = prompt.interact()?.clone(); - - // Prompt for relay chain. - let mut prompt = - cliclack::select("Choose the relay chain your chain will be connecting to: ".to_string()); - let default = chain_spec - .as_ref() - .and_then(|cs| cs.get_relay_chain()) - .and_then(|r| RelayChain::from_str(r, true).ok()); - if let Some(relay) = default.as_ref() { - prompt = prompt.initial_value(relay); + Ok(output_path) +} + +#[cfg(test)] +mod tests { + use super::{ChainType::*, RelayChain::*, *}; + use crate::cli::MockCli; + use std::{fs::create_dir_all, path::PathBuf}; + use tempfile::{tempdir, TempDir}; + + #[tokio::test] + async fn configure_build_spec_works() -> anyhow::Result<()> { + let chain = "local"; + let chain_type = Live; + let default_bootnode = true; + let genesis_code = true; + let genesis_state = true; + let output_file = "artifacts/chain-spec.json"; + let para_id = 4242; + let protocol_id = "pop"; + let relay = Polkadot; + let release = false; + let profile = Profile::Production; + + for build_spec_cmd in [ + // No flags used. + BuildSpecCommand::default(), + // All flags used. + BuildSpecCommand { + output_file: Some(PathBuf::from(output_file)), + profile: Some(profile.clone()), + release, + id: Some(para_id), + default_bootnode, + chain_type: Some(chain_type.clone()), + chain: Some(chain.to_string()), + relay: Some(relay.clone()), + protocol_id: Some(protocol_id.to_string()), + genesis_state, + genesis_code, + }, + ] { + let mut cli = MockCli::new(); + // If no flags are provided. + if build_spec_cmd.chain.is_none() { + cli = cli + .expect_input("Provide the chain specification to use (e.g. dev, local, custom or a path to an existing file)", chain.to_string()) + .expect_input( + "Name or path for the plain chain spec file:", output_file.to_string()) + .expect_input( + "What parachain ID should be used?", para_id.to_string()) + .expect_input( + "Enter the protocol ID that will identify your network:", protocol_id.to_string()) + .expect_select( + "Choose the chain type: ", + Some(false), + true, + Some(chain_types()), + chain_type.clone() as usize, + ).expect_select( + "Choose the relay your chain will be connecting to: ", + Some(false), + true, + Some(relays()), + relay.clone() as usize, + ).expect_select( + "Choose the build profile of the binary that should be used: ", + Some(false), + true, + Some(profiles()), + profile.clone() as usize + ).expect_confirm("Would you like to use local host as a bootnode ?", default_bootnode + ).expect_confirm("Should the genesis state file be generated ?", genesis_state + ).expect_confirm("Should the genesis code file be generated ?", genesis_code); + } + let build_spec = build_spec_cmd.configure_build_spec(&mut cli).await?; + assert_eq!(build_spec.chain, chain); + assert_eq!(build_spec.output_file, PathBuf::from(output_file)); + assert_eq!(build_spec.id, para_id); + assert_eq!(build_spec.profile, profile); + assert_eq!(build_spec.default_bootnode, default_bootnode); + assert_eq!(build_spec.chain_type, chain_type); + assert_eq!(build_spec.relay, relay); + assert_eq!(build_spec.protocol_id, protocol_id); + assert_eq!(build_spec.genesis_state, genesis_state); + assert_eq!(build_spec.genesis_code, genesis_code); + cli.verify()?; + } + Ok(()) } - // Prompt relays chains based on the chain type - match chain_type { - ChainType::Live => - for relay in RelayChain::VARIANTS { - if !matches!( - relay, - RelayChain::Westend | - RelayChain::Paseo | RelayChain::Kusama | - RelayChain::Polkadot - ) { - continue; - } else { - prompt = prompt.item( - relay, - relay.get_message().unwrap_or(relay.as_ref()), - relay.get_detailed_message().unwrap_or_default(), - ); + + #[tokio::test] + async fn configure_build_spec_with_existing_chain_file() -> anyhow::Result<()> { + let chain_type = Live; + let default_bootnode = true; + let genesis_code = true; + let genesis_state = true; + let output_file = "artifacts/chain-spec.json"; + let para_id = 4242; + let protocol_id = "pop"; + let relay = Polkadot; + let release = false; + let profile = Profile::Production; + + // Create a temporary file to act as the existing chain spec file. + let temp_dir = tempdir()?; + let chain_spec_path = temp_dir.path().join("existing-chain-spec.json"); + std::fs::write(&chain_spec_path, "{}")?; // Write a dummy JSON to the file. + + // Whether to make changes to the provided chain spec file. + for changes in [true, false] { + for build_spec_cmd in [ + // No flags used except the provided chain spec file. + BuildSpecCommand { + chain: Some(chain_spec_path.to_string_lossy().to_string()), + ..Default::default() + }, + // All flags used. + BuildSpecCommand { + output_file: Some(PathBuf::from(output_file)), + profile: Some(profile.clone()), + release, + id: Some(para_id), + default_bootnode, + chain_type: Some(chain_type.clone()), + chain: Some(chain_spec_path.to_string_lossy().to_string()), + relay: Some(relay.clone()), + protocol_id: Some(protocol_id.to_string()), + genesis_state, + genesis_code, + }, + ] { + let mut cli = MockCli::new().expect_confirm( + "An existing chain spec file is provided. Do you want to make additional changes to it?", + changes, + ); + // When user wants to make changes to chain spec file via prompts and no flags + // provided. + let no_flags_used = build_spec_cmd.relay.is_none(); + if changes && no_flags_used { + if build_spec_cmd.id.is_none() { + cli = cli + .expect_input("What parachain ID should be used?", para_id.to_string()); + } + if build_spec_cmd.protocol_id.is_none() { + cli = cli.expect_input( + "Enter the protocol ID that will identify your network:", + protocol_id.to_string(), + ); + } + if build_spec_cmd.chain_type.is_none() { + cli = cli.expect_select( + "Choose the chain type: ", + Some(false), + true, + Some(chain_types()), + chain_type.clone() as usize, + ); + } + if build_spec_cmd.relay.is_none() { + cli = cli.expect_select( + "Choose the relay your chain will be connecting to: ", + Some(false), + true, + Some(relays()), + relay.clone() as usize, + ); + } + if build_spec_cmd.profile.is_none() { + cli = cli.expect_select( + "Choose the build profile of the binary that should be used: ", + Some(false), + true, + Some(profiles()), + profile.clone() as usize, + ); + } + if !build_spec_cmd.default_bootnode { + cli = cli.expect_confirm( + "Would you like to use local host as a bootnode ?", + default_bootnode, + ); + } + if !build_spec_cmd.genesis_state { + cli = cli.expect_confirm( + "Should the genesis state file be generated ?", + genesis_state, + ); + } + if !build_spec_cmd.genesis_code { + cli = cli.expect_confirm( + "Should the genesis code file be generated ?", + genesis_code, + ); + } } - }, - _ => - for relay in RelayChain::VARIANTS { - if matches!( - relay, - RelayChain::Westend | - RelayChain::Paseo | RelayChain::Kusama | - RelayChain::Polkadot - ) { - continue; - } else { - prompt = prompt.item( - relay, - relay.get_message().unwrap_or(relay.as_ref()), - relay.get_detailed_message().unwrap_or_default(), - ); + let build_spec = build_spec_cmd.configure_build_spec(&mut cli).await?; + if changes && no_flags_used { + assert_eq!(build_spec.id, para_id); + assert_eq!(build_spec.profile, profile); + assert_eq!(build_spec.default_bootnode, default_bootnode); + assert_eq!(build_spec.chain_type, chain_type); + assert_eq!(build_spec.relay, relay); + assert_eq!(build_spec.protocol_id, protocol_id); + assert_eq!(build_spec.genesis_state, genesis_state); + assert_eq!(build_spec.genesis_code, genesis_code); } - }, + // Assert that the chain spec file is correctly detected and used. + assert_eq!(build_spec.chain, chain_spec_path.to_string_lossy()); + assert_eq!(build_spec.output_file, chain_spec_path); + cli.verify()?; + } + } + Ok(()) } - let relay_chain = prompt.interact()?.clone(); - - // Prompt for default bootnode if chain type is Local or Live. - let default_bootnode = match chain_type { - ChainType::Development => true, - _ => confirm("Would you like to use local host as a bootnode ?".to_string()).interact()?, - }; - - // Prompt for protocol-id. - let default = chain_spec - .as_ref() - .and_then(|cs| cs.get_protocol_id()) - .unwrap_or(DEFAULT_PROTOCOL_ID) - .to_string(); - let protocol_id: String = input("Enter the protocol ID that will identify your network:") - .placeholder(&default) - .default_input(&default) - .interact()?; - - // Prompt for genesis state - let genesis_state = confirm("Should the genesis state file be generated ?".to_string()) - .initial_value(true) - .interact()?; - - // Prompt for genesis code - let genesis_code = confirm("Should the genesis code file be generated ?".to_string()) - .initial_value(true) - .interact()?; - - // Only check user to check their profile selection if a live spec is being built on debug mode. - let profile = - if !args.release && matches!(chain_type, ChainType::Live) { - confirm("Using Debug profile to build a Live specification. Should Release be used instead ?") - .initial_value(true) - .interact()? - } else { - args.release + #[tokio::test] + async fn configure_build_spec_release_deprecated_works() -> anyhow::Result<()> { + // Create a temporary file to act as the existing chain spec file. + let temp_dir = tempdir()?; + let chain_spec_path = temp_dir.path().join("existing-chain-spec.json"); + std::fs::write(&chain_spec_path, "{}")?; + // Use the deprcrated release flag. + let release = true; + let build_spec_cmd = BuildSpecCommand { + release, + chain: Some(chain_spec_path.to_string_lossy().to_string()), + ..Default::default() }; + let mut cli = + MockCli::new().expect_confirm( + "An existing chain spec file is provided. Do you want to make additional changes to it?", + false, + ).expect_warning("NOTE: release flag is deprecated. Use `--profile` instead."); + let build_spec = build_spec_cmd.configure_build_spec(&mut cli).await?; + assert_eq!(build_spec.profile, release.into()); + cli.verify()?; + Ok(()) + } + + #[test] + fn prepare_output_path_works() -> anyhow::Result<()> { + // Create a temporary directory for testing. + let temp_dir = TempDir::new()?; + let temp_dir_path = temp_dir.path(); + + // No directory path. + let file = temp_dir_path.join("chain-spec.json"); + let result = prepare_output_path(&file)?; + // Expected path: chain-spec.json + assert_eq!(result, file); - Ok(BuildSpecCommand { - output_file: Some(PathBuf::from(output_file)), - release: profile, - id: Some(para_id), - default_bootnode, - chain_type: Some(chain_type), - relay: Some(relay_chain), - protocol_id: Some(protocol_id), - genesis_state, - genesis_code, - }) + // Existing directory Path. + for dir in ["existing_dir", "existing_dir/", "existing_dir_json"] { + let existing_dir = temp_dir_path.join(dir); + create_dir_all(&existing_dir)?; + let result = prepare_output_path(&existing_dir)?; + // Expected path: existing_dir/chain-spec.json + let expected_path = existing_dir.join(DEFAULT_SPEC_NAME); + assert_eq!(result, expected_path); + } + + // Non-existing directory Path. + for dir in ["non_existing_dir", "non_existing_dir/", "non_existing_dir_json"] { + let non_existing_dir = temp_dir_path.join(dir); + let result = prepare_output_path(&non_existing_dir)?; + // Expected path: non_existing_dir/chain-spec.json + let expected_path = non_existing_dir.join(DEFAULT_SPEC_NAME); + assert_eq!(result, expected_path); + // The directory should now exist. + assert!(result.parent().unwrap().exists()); + } + + Ok(()) + } + + fn relays() -> Vec<(String, String)> { + RelayChain::VARIANTS + .iter() + .map(|variant| { + ( + variant.get_message().unwrap_or(variant.as_ref()).into(), + variant.get_detailed_message().unwrap_or_default().into(), + ) + }) + .collect() + } + + fn chain_types() -> Vec<(String, String)> { + ChainType::VARIANTS + .iter() + .map(|variant| { + ( + variant.get_message().unwrap_or(variant.as_ref()).into(), + variant.get_detailed_message().unwrap_or_default().into(), + ) + }) + .collect() + } + + fn profiles() -> Vec<(String, String)> { + Profile::VARIANTS + .iter() + .map(|variant| { + ( + variant.get_message().unwrap_or(variant.as_ref()).into(), + variant.get_detailed_message().unwrap_or_default().into(), + ) + }) + .collect() + } } diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 4e00e37b..0b2815a8 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -606,13 +606,13 @@ mod tests { .expect_warning("Your call has not been executed.") .expect_confirm( "Do you want to perform another call using the existing smart contract?", - false, + true, ) .expect_confirm( "Do you want to perform another call using the existing smart contract?", - true, + false, ) - .expect_select::( + .expect_select( "Select the message to call:", Some(false), true, @@ -669,8 +669,7 @@ mod tests { ]; // The inputs are processed in reverse order. let mut cli = MockCli::new() - .expect_input("Signer calling the contract:", "//Alice".into()) - .expect_select::( + .expect_select( "Select the message to call:", Some(false), true, @@ -678,17 +677,19 @@ mod tests { 1, // "get" message ) .expect_input( - "Provide the on-chain contract address:", - "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + "Where is your project or contract artifact located?", + temp_dir.path().join("testing").display().to_string(), ) .expect_input( "Where is your contract deployed?", "wss://rpc1.paseo.popnetwork.xyz".into(), ) .expect_input( - "Where is your project or contract artifact located?", - temp_dir.path().join("testing").display().to_string(), - ).expect_info(format!( + "Provide the on-chain contract address:", + "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + ) + .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", temp_dir.path().join("testing").display().to_string(), )); @@ -750,13 +751,7 @@ mod tests { // The inputs are processed in reverse order. let mut cli = MockCli::new() .expect_confirm("Do you want to execute the call? (Selecting 'No' will perform a dry run)", true) - .expect_input("Signer calling the contract:", "//Alice".into()) - .expect_input("Enter the proof size limit:", "".into()) // Only if call - .expect_input("Enter the gas limit:", "".into()) // Only if call - .expect_input("Value to transfer to the call:", "50".into()) // Only if payable - .expect_input("Enter the value for the parameter: number", "2".into()) // Args for specific_flip - .expect_input("Enter the value for the parameter: new_value", "true".into()) // Args for specific_flip - .expect_select::( + .expect_select( "Select the message to call:", Some(false), true, @@ -764,17 +759,24 @@ mod tests { 2, // "specific_flip" message ) .expect_input( - "Provide the on-chain contract address:", - "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + "Where is your project or contract artifact located?", + temp_dir.path().join("testing").display().to_string(), ) .expect_input( "Where is your contract deployed?", "wss://rpc1.paseo.popnetwork.xyz".into(), ) .expect_input( - "Where is your project or contract artifact located?", - temp_dir.path().join("testing").display().to_string(), - ).expect_info(format!( + "Provide the on-chain contract address:", + "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + ) + .expect_input("Enter the value for the parameter: new_value", "true".into()) // Args for specific_flip + .expect_input("Enter the value for the parameter: number", "2".into()) // Args for specific_flip + .expect_input("Value to transfer to the call:", "50".into()) // Only if payable + .expect_input("Enter the gas limit:", "".into()) // Only if call + .expect_input("Enter the proof size limit:", "".into()) // Only if call + .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", temp_dir.path().join("testing").display().to_string(), )); @@ -837,11 +839,7 @@ mod tests { ]; // The inputs are processed in reverse order. let mut cli = MockCli::new() - .expect_input("Signer calling the contract:", "//Alice".into()) - .expect_input("Value to transfer to the call:", "50".into()) // Only if payable - .expect_input("Enter the value for the parameter: number", "2".into()) // Args for specific_flip - .expect_input("Enter the value for the parameter: new_value", "true".into()) // Args for specific_flip - .expect_select::( + .expect_select( "Select the message to call:", Some(false), true, @@ -849,17 +847,22 @@ mod tests { 2, // "specific_flip" message ) .expect_input( - "Provide the on-chain contract address:", - "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + "Where is your project or contract artifact located?", + temp_dir.path().join("testing").display().to_string(), ) .expect_input( "Where is your contract deployed?", "wss://rpc1.paseo.popnetwork.xyz".into(), ) .expect_input( - "Where is your project or contract artifact located?", - temp_dir.path().join("testing").display().to_string(), - ).expect_info(format!( + "Provide the on-chain contract address:", + "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), + ) + .expect_input("Enter the value for the parameter: new_value", "true".into()) // Args for specific_flip + .expect_input("Enter the value for the parameter: number", "2".into()) // Args for specific_flip + .expect_input("Value to transfer to the call:", "50".into()) // Only if payable + .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", temp_dir.path().join("testing").display().to_string(), )); diff --git a/crates/pop-cli/src/commands/mod.rs b/crates/pop-cli/src/commands/mod.rs index 34c2f10b..aa385f28 100644 --- a/crates/pop-cli/src/commands/mod.rs +++ b/crates/pop-cli/src/commands/mod.rs @@ -46,9 +46,9 @@ pub(crate) enum Command { /// Help message for the build command. fn about_build() -> &'static str { #[cfg(all(feature = "parachain", feature = "contract"))] - return "Build a parachain, smart contract or Rust package."; + return "Build a parachain, chain specification, smart contract or Rust package."; #[cfg(all(feature = "parachain", not(feature = "contract")))] - return "Build a parachain or Rust package."; + return "Build a parachain, chain specification or Rust package."; #[cfg(all(feature = "contract", not(feature = "parachain")))] return "Build a smart contract or Rust package."; } diff --git a/crates/pop-cli/tests/parachain.rs b/crates/pop-cli/tests/parachain.rs index 0e17d101..b9baaac5 100644 --- a/crates/pop-cli/tests/parachain.rs +++ b/crates/pop-cli/tests/parachain.rs @@ -48,7 +48,7 @@ async fn parachain_lifecycle() -> Result<()> { let temp_parachain_dir = temp_dir.join("test_parachain"); // pop build spec --output ./target/pop/test-spec.json --id 2222 --type development --relay - // paseo-local --protocol-id pop-protocol" + // paseo-local --protocol-id pop-protocol" --chain local Command::cargo_bin("pop") .unwrap() .current_dir(&temp_parachain_dir) @@ -61,8 +61,12 @@ async fn parachain_lifecycle() -> Result<()> { "2222", "--type", "development", + "--chain", + "local", "--relay", "paseo-local", + "--profile", + "release", "--genesis-state", "--genesis-code", "--protocol-id", @@ -86,6 +90,7 @@ async fn parachain_lifecycle() -> Result<()> { assert!(content.contains("\"tokenSymbol\": \"POP\"")); assert!(content.contains("\"relay_chain\": \"paseo-local\"")); assert!(content.contains("\"protocolId\": \"pop-protocol\"")); + assert!(content.contains("\"id\": \"local_testnet\"")); // pop up parachain -p "./test_parachain" let mut cmd = Cmd::new(cargo_bin("pop")) diff --git a/crates/pop-common/Cargo.toml b/crates/pop-common/Cargo.toml index 108399db..87074a60 100644 --- a/crates/pop-common/Cargo.toml +++ b/crates/pop-common/Cargo.toml @@ -19,14 +19,15 @@ reqwest.workspace = true serde_json.workspace = true serde.workspace = true strum.workspace = true +strum_macros.workspace = true tar.workspace = true tempfile.workspace = true thiserror.workspace = true tokio.workspace = true toml_edit.workspace = true url.workspace = true +toml.workspace = true [dev-dependencies] mockito.workspace = true -strum_macros.workspace = true tempfile.workspace = true diff --git a/crates/pop-common/src/build.rs b/crates/pop-common/src/build.rs index bfe658b9..f871078a 100644 --- a/crates/pop-common/src/build.rs +++ b/crates/pop-common/src/build.rs @@ -2,14 +2,29 @@ use std::{ fmt, path::{Path, PathBuf}, }; +use strum_macros::{AsRefStr, EnumMessage, EnumString, VariantArray}; /// Enum representing a build profile. -#[derive(Debug, PartialEq)] +#[derive(AsRefStr, Clone, Default, Debug, EnumString, EnumMessage, VariantArray, Eq, PartialEq)] pub enum Profile { /// Debug profile, optimized for debugging. + #[strum(serialize = "debug", message = "Debug", detailed_message = "Optimized for debugging.")] Debug, /// Release profile, optimized without any debugging functionality. + #[default] + #[strum( + serialize = "release", + message = "Release", + detailed_message = "Optimized without any debugging functionality." + )] Release, + /// Production profile, optimized for ultimate performance. + #[strum( + serialize = "production", + message = "Production", + detailed_message = "Optimized for ultimate performance." + )] + Production, } impl Profile { @@ -18,13 +33,20 @@ impl Profile { match self { Profile::Release => path.join("target/release"), Profile::Debug => path.join("target/debug"), + Profile::Production => path.join("target/production"), } } } +impl From for bool { + fn from(value: Profile) -> Self { + value != Profile::Debug + } +} + impl From for Profile { - fn from(release: bool) -> Self { - if release { + fn from(value: bool) -> Self { + if value { Profile::Release } else { Profile::Debug @@ -35,8 +57,73 @@ impl From for Profile { impl fmt::Display for Profile { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { - Self::Debug => write!(f, "DEBUG"), - Self::Release => write!(f, "RELEASE"), + Self::Debug => write!(f, "debug"), + Self::Release => write!(f, "release"), + Self::Production => write!(f, "production"), } } } + +#[cfg(test)] +mod tests { + use super::*; + use std::path::Path; + use strum::EnumMessage; + + #[test] + fn profile_from_string() { + assert_eq!("debug".parse::().unwrap(), Profile::Debug); + assert_eq!("release".parse::().unwrap(), Profile::Release); + assert_eq!("production".parse::().unwrap(), Profile::Production); + } + + #[test] + fn profile_detailed_message() { + assert_eq!(Profile::Debug.get_detailed_message(), Some("Optimized for debugging.")); + assert_eq!( + Profile::Release.get_detailed_message(), + Some("Optimized without any debugging functionality.") + ); + assert_eq!( + Profile::Production.get_detailed_message(), + Some("Optimized for ultimate performance.") + ); + } + + #[test] + fn profile_target_directory() { + let base_path = Path::new("/example/path"); + + assert_eq!( + Profile::Debug.target_directory(base_path), + Path::new("/example/path/target/debug") + ); + assert_eq!( + Profile::Release.target_directory(base_path), + Path::new("/example/path/target/release") + ); + assert_eq!( + Profile::Production.target_directory(base_path), + Path::new("/example/path/target/production") + ); + } + + #[test] + fn profile_default() { + let default_profile = Profile::default(); + assert_eq!(default_profile, Profile::Release); + } + + #[test] + fn profile_from_bool() { + assert_eq!(Profile::from(true), Profile::Release); + assert_eq!(Profile::from(false), Profile::Debug); + } + + #[test] + fn profile_into_bool() { + assert_eq!(bool::from(Profile::Debug), false); + assert_eq!(bool::from(Profile::Release), true); + assert_eq!(bool::from(Profile::Production), true); + } +} diff --git a/crates/pop-common/src/manifest.rs b/crates/pop-common/src/manifest.rs index ff84c1be..16db4f0d 100644 --- a/crates/pop-common/src/manifest.rs +++ b/crates/pop-common/src/manifest.rs @@ -2,7 +2,7 @@ use crate::Error; use anyhow; -pub use cargo_toml::{Dependency, Manifest}; +pub use cargo_toml::{Dependency, LtoSetting, Manifest, Profile, Profiles}; use std::{ fs::{read_to_string, write}, path::{Path, PathBuf}, @@ -58,6 +58,7 @@ pub fn find_workspace_toml(target_dir: &Path) -> Option { /// This function is used to add a crate to a workspace. /// # Arguments +/// /// * `workspace_toml` - The path to the workspace `Cargo.toml` /// * `crate_path`: The path to the crate that should be added to the workspace pub fn add_crate_to_workspace(workspace_toml: &Path, crate_path: &Path) -> anyhow::Result<()> { @@ -97,6 +98,44 @@ pub fn add_crate_to_workspace(workspace_toml: &Path, crate_path: &Path) -> anyho Ok(()) } +/// Adds a "production" profile to the Cargo.toml manifest if it doesn't already exist. +/// +/// # Arguments +/// * `project` - The path to the root of the Cargo project containing the Cargo.toml. +pub fn add_production_profile(project: &Path) -> anyhow::Result<()> { + let root_toml_path = project.join("Cargo.toml"); + let mut manifest = Manifest::from_path(&root_toml_path)?; + // Check if the `production` profile already exists. + if manifest.profile.custom.contains_key("production") { + return Ok(()); + } + // Create the production profile with required fields. + let production_profile = Profile { + opt_level: None, + debug: None, + split_debuginfo: None, + rpath: None, + lto: Some(LtoSetting::Fat), + debug_assertions: None, + codegen_units: Some(1), + panic: None, + incremental: None, + overflow_checks: None, + strip: None, + package: std::collections::BTreeMap::new(), + build_override: None, + inherits: Some("release".to_string()), + }; + // Insert the new profile into the custom profiles + manifest.profile.custom.insert("production".to_string(), production_profile); + + // Serialize the updated manifest and write it back to the file + let toml_string = toml::to_string(&manifest)?; + write(&root_toml_path, toml_string)?; + + Ok(()) +} + #[cfg(test)] mod tests { use super::*; @@ -419,4 +458,42 @@ mod tests { ); assert!(add_crate.is_err()); } + + #[test] + fn add_production_profile_works() { + let test_builder = TestBuilder::default().add_workspace().add_workspace_cargo_toml( + r#"[profile.release] + opt-level = 3 + "#, + ); + + let binding = test_builder.workspace.expect("Workspace should exist"); + let project_path = binding.path(); + let cargo_toml_path = project_path.join("Cargo.toml"); + + // Call the function to add the production profile + let result = add_production_profile(project_path); + assert!(result.is_ok()); + + // Verify the production profile is added + let manifest = + Manifest::from_path(&cargo_toml_path).expect("Should parse updated Cargo.toml"); + let production_profile = manifest + .profile + .custom + .get("production") + .expect("Production profile should exist"); + assert_eq!(production_profile.codegen_units, Some(1)); + assert_eq!(production_profile.inherits.as_deref(), Some("release")); + assert_eq!(production_profile.lto, Some(LtoSetting::Fat)); + + // Test idempotency: Running the function again should not modify the manifest + let initial_toml_content = + read_to_string(&cargo_toml_path).expect("Cargo.toml should be readable"); + let second_result = add_production_profile(project_path); + assert!(second_result.is_ok()); + let final_toml_content = + read_to_string(&cargo_toml_path).expect("Cargo.toml should be readable"); + assert_eq!(initial_toml_content, final_toml_content); + } } diff --git a/crates/pop-parachains/README.md b/crates/pop-parachains/README.md index 38fa24c1..5d60382f 100644 --- a/crates/pop-parachains/README.md +++ b/crates/pop-parachains/README.md @@ -46,7 +46,7 @@ let package = None; // The optional package to be built. let binary_path = build_parachain(&path, package, &Profile::Release, None).unwrap();; // Generate a plain chain specification file of a parachain let plain_chain_spec_path = path.join("plain-parachain-chainspec.json"); -generate_plain_chain_spec(&binary_path, &plain_chain_spec_path, true); +generate_plain_chain_spec(&binary_path, &plain_chain_spec_path, true, "dev"); // Customize your chain specification let mut chain_spec = ChainSpec::from(&plain_chain_spec_path).unwrap(); chain_spec.replace_para_id(2002); @@ -70,7 +70,7 @@ let package = None; // The optional package to be built. let binary_path = build_parachain(&path, package, &Profile::Release, None).unwrap();; // Generate a plain chain specification file of a parachain let plain_chain_spec_path = path.join("plain-parachain-chainspec.json"); -generate_plain_chain_spec(&binary_path, &plain_chain_spec_path, true); +generate_plain_chain_spec(&binary_path, &plain_chain_spec_path, true, "dev"); // Generate a raw chain specification file of a parachain let chain_spec = generate_raw_chain_spec(&binary_path, &plain_chain_spec_path, "raw-parachain-chainspec.json").unwrap(); // Export the WebAssembly runtime for the parachain. diff --git a/crates/pop-parachains/src/build.rs b/crates/pop-parachains/src/build.rs index 3c25b2a0..1e369f37 100644 --- a/crates/pop-parachains/src/build.rs +++ b/crates/pop-parachains/src/build.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::Error; -use anyhow::Result; +use crate::Error::{self, *}; +use anyhow::{anyhow, Result}; use duct::cmd; use pop_common::{manifest::from_path, Profile}; use serde_json::{json, Value}; @@ -31,8 +31,10 @@ pub fn build_parachain( args.push("--package"); args.push(package) } - if matches!(profile, &Profile::Release) { + if profile == &Profile::Release { args.push("--release"); + } else if profile == &Profile::Production { + args.push("--profile=production"); } cmd("cargo", args).dir(path).run()?; binary_path(&profile.target_directory(path), node_path.unwrap_or(&path.join("node"))) @@ -75,17 +77,30 @@ pub fn binary_path(target_path: &Path, node_path: &Path) -> Result Result<(), Error> { check_command_exists(binary_path, "build-spec")?; - let mut args = vec!["build-spec"]; + let mut args = vec!["build-spec", "--chain", chain]; if !default_bootnode { args.push("--disable-default-bootnode"); } - cmd(binary_path, args).stdout_path(plain_chain_spec).stderr_null().run()?; + // Create a temporary file. + let temp_file = tempfile::NamedTempFile::new_in(std::env::temp_dir())?; + // Run the command and redirect output to the temporary file. + cmd(binary_path, args).stdout_path(temp_file.path()).stderr_null().run()?; + // Atomically replace the chain spec file with the temporary file. + temp_file.persist(plain_chain_spec).map_err(|e| { + AnyhowError(anyhow!( + "Failed to replace the chain spec file with the temporary file: {}", + e.to_string() + )) + })?; Ok(()) } @@ -323,9 +338,10 @@ mod tests { use anyhow::Result; use pop_common::{manifest::Dependency, set_executable_permission}; use std::{fs, fs::write, io::Write, path::Path}; - use tempfile::{tempdir, Builder}; + use strum::VariantArray; + use tempfile::{tempdir, Builder, TempDir}; - fn setup_template_and_instantiate() -> Result { + fn setup_template_and_instantiate() -> Result { let temp_dir = tempdir().expect("Failed to create temp dir"); let config = Config { symbol: "DOT".to_string(), @@ -348,9 +364,9 @@ mod tests { } // Function that generates a Cargo.toml inside node directory for testing. - fn generate_mock_node(temp_dir: &Path) -> Result<(), Error> { + fn generate_mock_node(temp_dir: &Path, name: Option<&str>) -> Result { // Create a node directory - let target_dir = temp_dir.join("node"); + let target_dir = temp_dir.join(name.unwrap_or("node")); fs::create_dir(&target_dir)?; // Create a Cargo.toml file let mut toml_file = fs::File::create(target_dir.join("Cargo.toml"))?; @@ -365,7 +381,7 @@ mod tests { "# )?; - Ok(()) + Ok(target_dir) } // Function that fetch a binary from pop network @@ -374,13 +390,13 @@ mod tests { writeln!( config.as_file(), r#" -[relaychain] -chain = "paseo-local" + [relaychain] + chain = "paseo-local" -[[parachains]] -id = 4385 -default_command = "pop-node" -"# + [[parachains]] + id = 4385 + default_command = "pop-node" + "# )?; let mut zombienet = Zombienet::new(&cache, config.path().to_str().unwrap(), None, None, None, None, None) @@ -403,20 +419,45 @@ default_command = "pop-node" Ok(binary_path) } + fn add_production_profile(project: &Path) -> Result<()> { + let root_toml_path = project.join("Cargo.toml"); + let mut root_toml_content = fs::read_to_string(&root_toml_path)?; + root_toml_content.push_str( + r#" + [profile.production] + codegen-units = 1 + inherits = "release" + lto = true + "#, + ); + // Write the updated content back to the file + write(&root_toml_path, root_toml_content)?; + Ok(()) + } + #[test] fn build_parachain_works() -> Result<()> { - let temp_dir = tempdir()?; let name = "parachain_template_node"; + let temp_dir = tempdir()?; cmd("cargo", ["new", name, "--bin"]).dir(temp_dir.path()).run()?; - generate_mock_node(&temp_dir.path().join(name))?; - let binary = build_parachain(&temp_dir.path().join(name), None, &Profile::Release, None)?; - let target_directory = temp_dir.path().join(name).join("target/release"); - assert!(target_directory.exists()); - assert!(target_directory.join("parachain_template_node").exists()); - assert_eq!( - binary.display().to_string(), - target_directory.join("parachain_template_node").display().to_string() - ); + let project = temp_dir.path().join(name); + add_production_profile(&project)?; + for node in vec![None, Some("custom_node")] { + let node_path = generate_mock_node(&project, node)?; + for package in vec![None, Some(String::from("parachain_template_node"))] { + for profile in Profile::VARIANTS { + let node_path = node.map(|_| node_path.as_path()); + let binary = build_parachain(&project, package.clone(), &profile, node_path)?; + let target_directory = profile.target_directory(&project); + assert!(target_directory.exists()); + assert!(target_directory.join("parachain_template_node").exists()); + assert_eq!( + binary.display().to_string(), + target_directory.join("parachain_template_node").display().to_string() + ); + } + } + } Ok(()) } @@ -457,7 +498,8 @@ default_command = "pop-node" generate_plain_chain_spec( &binary_path, &temp_dir.path().join("plain-parachain-chainspec.json"), - true, + false, + "local", )?; assert!(plain_chain_spec.exists()); { @@ -473,6 +515,8 @@ default_command = "pop-node" assert!(raw_chain_spec.exists()); let content = fs::read_to_string(raw_chain_spec.clone()).expect("Could not read file"); assert!(content.contains("\"para_id\": 2001")); + assert!(content.contains("\"id\": \"pop-devnet\"")); + assert!(content.contains("\"bootNodes\": []")); // Test export wasm file let wasm_file = export_wasm_file(&binary_path, &raw_chain_spec, "para-2001-wasm")?; assert!(wasm_file.exists()); diff --git a/crates/pop-parachains/src/utils/onboard.rs b/crates/pop-parachains/src/utils/onboard.rs new file mode 100644 index 00000000..e69de29b From f01fb221d1201679d5287f321b8f100ca57d0fba Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Tue, 10 Dec 2024 18:28:29 +0100 Subject: [PATCH 030/143] feat: guide user to call a parachain (#316) * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README * feat: pop call parachain prototype * feat: dispaly arguments of extrinsic * refactor: structure similar to pop call contract * feat: parse all values for extrinsic/storage * refactor: signer in common * refactor: improve messages * feat: call parachain ui * fix: calls working * refactor: remove unused code * refactor: remove unused code * refactor: various fixes * refactor: various fixes * feat: add option to include params from command line * refactor: clean docs and refactor code * fix: tests * refactor: parse all the metadata again * refactor: reorganize and clean metadata functions * feat: display specific use cases to the user * refactor: predefined actions * fix: various fixes * fix: error message not supported for complex types * refactor: parse all metadata, including parameters at once * refactor: clean docs and move code * fix: format_type * fix: parse user inputs for Option arguments (#332) * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> * test: fix unit test * refactor: clean the way to parse and prompt parameters * feat: add Purchase on-demand coretime use cases * test: add skip_confirm, move when prompt for the signer and create the integration test * test: call parachain ui unit test * refactor: separate structs * fmt * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * fix: solve conflicts and unit tests (#359) * test: call parachain ui unit test * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * fix: conflicts and unit tests * test: remove test and improve test * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * feat: pop call parachain prototype * feat: dispaly arguments of extrinsic * refactor: structure similar to pop call contract * feat: parse all values for extrinsic/storage * refactor: signer in common * refactor: improve messages * feat: call parachain ui * fix: calls working * refactor: remove unused code * refactor: remove unused code * refactor: various fixes * refactor: various fixes * feat: add option to include params from command line * refactor: clean docs and refactor code * fix: tests * refactor: parse all the metadata again * refactor: reorganize and clean metadata functions * feat: display specific use cases to the user * refactor: predefined actions * fix: various fixes * fix: error message not supported for complex types * refactor: parse all metadata, including parameters at once * refactor: clean docs and move code * fix: format_type * test: fix unit test * refactor: clean the way to parse and prompt parameters * feat: add Purchase on-demand coretime use cases * test: add skip_confirm, move when prompt for the signer and create the integration test * test: call parachain ui unit test * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * feat: repeat call only if using guide UI * fix: clippy * refactor: various improvements * chore: parser for pallet and extrinsic input names * refactor: only move to pop_common the needed functions * refactor: improve test, docs and errors * test: fix unit tests * fix: reset_for_new_call when extrinisc is not supported * fix: build with parachain features * test: wait before call parachain in integration test * docs: minor improvements * test: migrate find_free_port to pop_common * test: fix increase waiting time * test: remove unnecesary test case * refactor: rename api with client * refactor: naming and docs * docs: improve docs and missing comments * test: remove unnecesary verbose * test: find_free_port * docs: improve parameter documentation * test: add missing test to sign_and_submit_extrinsic * fix: apply feedback from auxiliar PRs, remove unnecesary clones * docs: public modules * refactor: clean unused params * fix: mark all extrinsics that uses calls as parameter as unsupported * test: fix expect_select * docs: improve documentation * feat: submit extrinsic from call_data (#348) * feat: submit extrinsic from call_data * test: unit test for initialize_api_client * test: unit test for send_extrinsic_from_call_data * fix: CallData struct * fix: skip_confirm for send_extrinsic_from_call_data * chore: clippy * chore: fmt * refactor: minor doc and naming changes * refactor: remove unnecesary clones and return early when submit_extrinsic_from_call_data * chore: fmt * refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data * feat: parse files when the argument values are very big (#363) * feat: parse files when the argument values are very big * test: unit test * chore: fmt * feat: file logic using the command line * fix: sequence arguments * test: fix unit test * refactor: remove prompting the user if input is file or value * refactor: parse_extrinsic_arguments * fix: CI deny * refactor: reorder Param derive macros * test: fix decode_call_data_works unit test * refactor: use Default derive macro and define constants for test values (#366) * feat: parse files when the argument values are very big * chore: fmt * feat: file logic using the command line * fix: sequence arguments * refactor: parse_extrinsic_arguments * refactor: use Default in pop_parachain structs * refactor: use Default in CallParachainCommand struct * refactor: use constant in tests * chore: fmt and small refactor * feat: flag sudo to wrap extrinsic (#349) * feat: submit extrinsic from call_data * test: unit test for initialize_api_client * feat: wrap call into a sudo call * test: add unit test to the new logic * fix: skip_confirm for send_extrinsic_from_call_data * chore: clippy * docs: renaming and improve docs * test: use force_transfer for testing * fix: check if sudo exist before prompt the user * chore: fmt * chore: fmt * test: fix wrong assert * docs: improve comments and output messages * refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data * fix: test construct_sudo_extrinsic_works and formatting * refactor: various fixes and improvements (#367) * refactor: sort pallets/dispatchables * refactor: remove unnecessary async * fix: resolve issue after rebase * fix: more async issues after rebase * refactor: use single constant * refactor: terminology (#368) * refactor: terminology * refactor: simply pallet/function relationship * fix: amend call_data conflicts after refactor * refactor: improvements (#370) * fix: add missing short arg option * refactor: note that extrinsic wait includes finalization * refactor: remove clones * style: formatting * refactor: make file prompt more generic * refactor: add missing license headers * style: formatting * docs: comments * docs: comments * docs: comments * refactor: reuse existing metadata * refactor: minimise clones * docs: comments * refactor: naming * docs: fix parameter doc comments * refactor: address clippy warnings * refactor: rename parachain with chain as the primary command and retain parachain as an alias (#373) * refactor: rename parachain with chain in visible messages * refactor: rename parachain with chain internal code * chore: solve fmt after rebase * refactor: small fix, use alias instead aliases * refactor: rename CallParachain struct into Call --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> Co-authored-by: Daanvdplas --- Cargo.lock | 274 ++++- Cargo.toml | 4 +- crates/pop-cli/src/commands/call/chain.rs | 1050 +++++++++++++++++ crates/pop-cli/src/commands/call/mod.rs | 8 +- crates/pop-cli/src/commands/mod.rs | 9 +- crates/pop-cli/tests/parachain.rs | 82 +- crates/pop-common/Cargo.toml | 3 + crates/pop-common/src/build.rs | 2 + crates/pop-common/src/errors.rs | 12 +- crates/pop-common/src/lib.rs | 47 +- crates/pop-common/src/metadata.rs | 228 ++++ .../src/utils => pop-common/src}/signer.rs | 29 +- crates/pop-contracts/src/build.rs | 2 +- crates/pop-contracts/src/call.rs | 11 +- crates/pop-contracts/src/errors.rs | 9 +- crates/pop-contracts/src/lib.rs | 5 +- crates/pop-contracts/src/new.rs | 2 +- crates/pop-contracts/src/node/mod.rs | 3 +- crates/pop-contracts/src/testing.rs | 10 - crates/pop-contracts/src/up.rs | 15 +- crates/pop-contracts/src/utils/helpers.rs | 112 -- crates/pop-contracts/src/utils/metadata.rs | 147 +-- crates/pop-contracts/src/utils/mod.rs | 148 ++- crates/pop-parachains/Cargo.toml | 4 + .../src/call/metadata/action.rs | 207 ++++ .../pop-parachains/src/call/metadata/mod.rs | 334 ++++++ .../src/call/metadata/params.rs | 238 ++++ crates/pop-parachains/src/call/mod.rs | 241 ++++ crates/pop-parachains/src/errors.rs | 25 + crates/pop-parachains/src/lib.rs | 14 + deny.toml | 1 + 31 files changed, 2924 insertions(+), 352 deletions(-) create mode 100644 crates/pop-cli/src/commands/call/chain.rs create mode 100644 crates/pop-common/src/metadata.rs rename crates/{pop-contracts/src/utils => pop-common/src}/signer.rs (52%) delete mode 100644 crates/pop-contracts/src/utils/helpers.rs create mode 100644 crates/pop-parachains/src/call/metadata/action.rs create mode 100644 crates/pop-parachains/src/call/metadata/mod.rs create mode 100644 crates/pop-parachains/src/call/metadata/params.rs create mode 100644 crates/pop-parachains/src/call/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 923f2b97..9ffb17d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3015,6 +3015,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -3023,12 +3141,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -3937,6 +4066,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -4453,7 +4588,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.5.1", + "rand_core 0.6.4", "serde", "unicode-normalization", ] @@ -4837,10 +4972,13 @@ dependencies = [ "mockito", "regex", "reqwest 0.12.7", + "scale-info", "serde", "serde_json", "strum 0.26.3", "strum_macros 0.26.4", + "subxt", + "subxt-signer", "tar", "tempfile", "thiserror", @@ -4891,13 +5029,17 @@ dependencies = [ "duct", "flate2", "glob", + "hex", "indexmap 2.5.0", "mockito", "pop-common", "reqwest 0.12.7", + "scale-info", + "scale-value", "serde_json", "strum 0.26.3", "strum_macros 0.26.4", + "subxt", "symlink", "tar", "tempfile", @@ -7135,6 +7277,17 @@ dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -7310,6 +7463,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -7784,12 +7947,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.13" @@ -7853,9 +8010,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -7869,6 +8026,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -8637,6 +8806,18 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -8681,6 +8862,30 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff4524214bc4629eba08d78ceb1d6507070cc0bcbbed23af74e19e6e924a24cf" +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -8702,6 +8907,27 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -8722,6 +8948,28 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "zip" version = "2.2.0" diff --git a/Cargo.toml b/Cargo.toml index f9304fca..69e1bcff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,7 @@ toml = "0.5.0" # networking reqwest = { version = "0.12", features = ["json"] } tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] } -url = "2.5" +url = "2.5.4" # contracts subxt-signer = { version = "0.37.0", features = ["subxt", "sr25519"] } @@ -57,6 +57,7 @@ contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branc #contractcontract-transcode = "5.0.0-alpha" contract-transcode = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" +hex = { version = "0.4.3", default-features = false } # parachains askama = "0.12" @@ -66,6 +67,7 @@ indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } +scale-value = { version = "0.16.2", default-features = false, features = ["from-string", "parser-ss58"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.14" diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs new file mode 100644 index 00000000..ce7050a2 --- /dev/null +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -0,0 +1,1050 @@ +// SPDX-License-Identifier: GPL-3.0 + +use std::path::Path; + +use crate::cli::{self, traits::*}; +use anyhow::{anyhow, Result}; +use clap::Args; +use pop_parachains::{ + construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + find_dispatchable_by_name, find_pallet_by_name, parse_chain_metadata, set_up_client, + sign_and_submit_extrinsic, sign_and_submit_extrinsic_with_call_data, supported_actions, Action, + DynamicPayload, Function, OnlineClient, Pallet, Param, SubstrateConfig, +}; +use url::Url; + +const DEFAULT_URL: &str = "ws://localhost:9944/"; +const DEFAULT_URI: &str = "//Alice"; +const ENCODED_CALL_DATA_MAX_LEN: usize = 500; // Maximum length of encoded call data to display. + +/// Command to construct and execute extrinsics with configurable pallets, functions, arguments, and +/// signing options. +#[derive(Args, Clone, Default)] +pub struct CallChainCommand { + /// The pallet containing the dispatchable function to execute. + #[arg(short, long, value_parser = parse_pallet_name)] + pallet: Option, + /// The dispatchable function to execute within the specified pallet. + #[arg(short, long, value_parser = parse_function_name)] + function: Option, + /// The dispatchable function arguments, encoded as strings. + #[arg(short, long, num_args = 0..,)] + args: Vec, + /// Websocket endpoint of a node. + #[arg(short, long, value_parser)] + url: Option, + /// Secret key URI for the account signing the extrinsic. + /// + /// e.g. + /// - for a dev account "//Alice" + /// - with a password "//Alice///SECRET_PASSWORD" + #[arg(short, long)] + suri: Option, + /// SCALE encoded bytes representing the call data of the extrinsic. + #[arg(name = "call", short, long, conflicts_with_all = ["pallet", "function", "args"])] + call_data: Option, + /// Authenticates the sudo key and dispatches a function call with `Root` origin. + #[arg(short = 'S', long)] + sudo: bool, + /// Automatically signs and submits the extrinsic without prompting for confirmation. + #[arg(short('y'), long)] + skip_confirm: bool, +} + +impl CallChainCommand { + /// Executes the command. + pub(crate) async fn execute(mut self) -> Result<()> { + let mut cli = cli::Cli; + // Check if all fields are specified via the command line. + let prompt_to_repeat_call = self.requires_user_input(); + // Configure the chain. + let chain = self.configure_chain(&mut cli).await?; + // Execute the call if call_data is provided. + if let Some(call_data) = self.call_data.as_ref() { + if let Err(e) = self + .submit_extrinsic_from_call_data(&chain.client, call_data, &mut cli::Cli) + .await + { + display_message(&e.to_string(), false, &mut cli::Cli)?; + } + return Ok(()); + } + loop { + // Configure the call based on command line arguments/call UI. + let mut call = match self.configure_call(&chain, &mut cli) { + Ok(call) => call, + Err(e) => { + display_message(&e.to_string(), false, &mut cli)?; + break; + }, + }; + // Display the configured call. + cli.info(call.display(&chain))?; + // Prepare the extrinsic. + let xt = match call.prepare_extrinsic(&chain.client, &mut cli) { + Ok(payload) => payload, + Err(e) => { + display_message(&e.to_string(), false, &mut cli)?; + break; + }, + }; + + // Sign and submit the extrinsic. + if let Err(e) = call.submit_extrinsic(&chain.client, xt, &mut cli).await { + display_message(&e.to_string(), false, &mut cli)?; + break; + } + + if !prompt_to_repeat_call || + !cli.confirm("Do you want to perform another call?") + .initial_value(false) + .interact()? + { + display_message("Call complete.", true, &mut cli)?; + break; + } + self.reset_for_new_call(); + } + Ok(()) + } + + // Configures the chain by resolving the URL and fetching its metadata. + async fn configure_chain(&self, cli: &mut impl Cli) -> Result { + cli.intro("Call a chain")?; + // Resolve url. + let url = match &self.url { + Some(url) => url.clone(), + None => { + // Prompt for url. + let url: String = cli + .input("Which chain would you like to interact with?") + .default_input(DEFAULT_URL) + .interact()?; + Url::parse(&url)? + }, + }; + + // Parse metadata from chain url. + let client = set_up_client(url.as_str()).await?; + let mut pallets = parse_chain_metadata(&client).map_err(|e| { + anyhow!(format!("Unable to fetch the chain metadata: {}", e.to_string())) + })?; + // Sort by name for display. + pallets.sort_by(|a, b| a.name.cmp(&b.name)); + pallets.iter_mut().for_each(|p| p.functions.sort_by(|a, b| a.name.cmp(&b.name))); + Ok(Chain { url, client, pallets }) + } + + // Configure the call based on command line arguments/call UI. + fn configure_call(&mut self, chain: &Chain, cli: &mut impl Cli) -> Result { + loop { + // Resolve pallet. + let pallet = match self.pallet { + Some(ref pallet_name) => find_pallet_by_name(&chain.pallets, pallet_name)?, + None => { + // Specific predefined actions first. + if let Some(action) = prompt_predefined_actions(&chain.pallets, cli)? { + self.function = Some(action.function_name().to_string()); + find_pallet_by_name(&chain.pallets, action.pallet_name())? + } else { + let mut prompt = cli.select("Select the pallet to call:"); + for pallet_item in &chain.pallets { + prompt = prompt.item(pallet_item, &pallet_item.name, &pallet_item.docs); + } + prompt.interact()? + } + }, + }; + + // Resolve dispatchable function. + let function = match self.function { + Some(ref name) => find_dispatchable_by_name(&chain.pallets, &pallet.name, name)?, + None => { + let mut prompt = cli.select("Select the function to call:"); + for function in &pallet.functions { + prompt = prompt.item(function, &function.name, &function.docs); + } + prompt.interact()? + }, + }; + // Certain dispatchable functions are not supported yet due to complexity. + if !function.is_supported { + cli.outro_cancel( + "The selected function is not supported yet. Please choose another one.", + )?; + self.reset_for_new_call(); + continue; + } + + // Resolve dispatchable function arguments. + let args = if self.args.is_empty() { + let mut args = Vec::new(); + for param in &function.params { + let input = prompt_for_param(cli, param)?; + args.push(input); + } + args + } else { + self.expand_file_arguments()? + }; + + // If chain has sudo prompt the user to confirm if they want to execute the call via + // sudo. + self.configure_sudo(chain, cli)?; + + // Resolve who is signing the extrinsic. + let suri = match self.suri.as_ref() { + Some(suri) => suri.clone(), + None => + cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, + }; + + return Ok(Call { + function: function.clone(), + args, + suri, + skip_confirm: self.skip_confirm, + sudo: self.sudo, + }); + } + } + + // Submits an extrinsic to the chain using the provided encoded call data. + async fn submit_extrinsic_from_call_data( + &self, + client: &OnlineClient, + call_data: &str, + cli: &mut impl Cli, + ) -> Result<()> { + // Resolve who is signing the extrinsic. + let suri = match self.suri.as_ref() { + Some(suri) => suri, + None => &cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, + }; + cli.info(format!("Encoded call data: {}", call_data))?; + if !self.skip_confirm && + !cli.confirm("Do you want to submit the extrinsic?") + .initial_value(true) + .interact()? + { + display_message( + &format!("Extrinsic with call data {call_data} was not submitted."), + false, + cli, + )?; + return Ok(()); + } + let spinner = cliclack::spinner(); + spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); + let call_data_bytes = + decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; + let result = sign_and_submit_extrinsic_with_call_data(client, call_data_bytes, suri) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + + spinner.stop(format!("Extrinsic submitted successfully with hash: {:?}", result)); + display_message("Call complete.", true, cli)?; + Ok(()) + } + + // Checks if the chain has the Sudo pallet and prompts the user to confirm if they want to + // execute the call via `sudo`. + fn configure_sudo(&mut self, chain: &Chain, cli: &mut impl Cli) -> Result<()> { + match find_dispatchable_by_name(&chain.pallets, "Sudo", "sudo") { + Ok(_) => + if !self.sudo { + self.sudo = cli + .confirm( + "Would you like to dispatch this function call with `Root` origin?", + ) + .initial_value(false) + .interact()?; + }, + Err(_) => + if self.sudo { + cli.warning( + "NOTE: sudo is not supported by the chain. Ignoring `--sudo` flag.", + )?; + self.sudo = false; + }, + } + Ok(()) + } + + // Resets specific fields to default values for a new call. + fn reset_for_new_call(&mut self) { + self.pallet = None; + self.function = None; + self.args.clear(); + self.sudo = false; + } + + // Function to check if all required fields are specified. + fn requires_user_input(&self) -> bool { + self.pallet.is_none() || + self.function.is_none() || + self.args.is_empty() || + self.url.is_none() || + self.suri.is_none() + } + + /// Replaces file arguments with their contents, leaving other arguments unchanged. + fn expand_file_arguments(&self) -> Result> { + self.args + .iter() + .map(|arg| { + if std::fs::metadata(arg).map(|m| m.is_file()).unwrap_or(false) { + std::fs::read_to_string(arg) + .map_err(|err| anyhow!("Failed to read file {}", err.to_string())) + } else { + Ok(arg.clone()) + } + }) + .collect() + } +} + +// Represents a chain, including its URL, client connection, and available pallets. +struct Chain { + // Websocket endpoint of the node. + url: Url, + // The client used to interact with the chain. + client: OnlineClient, + // A list of pallets available on the chain. + pallets: Vec, +} + +/// Represents a configured dispatchable function call, including the pallet, function, arguments, +/// and signing options. +#[derive(Clone)] +struct Call { + /// The dispatchable function to execute. + function: Function, + /// The dispatchable function arguments, encoded as strings. + args: Vec, + /// Secret key URI for the account signing the extrinsic. + /// + /// e.g. + /// - for a dev account "//Alice" + /// - with a password "//Alice///SECRET_PASSWORD" + suri: String, + /// Whether to automatically sign and submit the extrinsic without prompting for confirmation. + skip_confirm: bool, + /// Whether to dispatch the function call with `Root` origin. + sudo: bool, +} + +impl Call { + // Prepares the extrinsic. + fn prepare_extrinsic( + &self, + client: &OnlineClient, + cli: &mut impl Cli, + ) -> Result { + let xt = match construct_extrinsic(&self.function, self.args.clone()) { + Ok(tx) => tx, + Err(e) => { + return Err(anyhow!("Error: {}", e)); + }, + }; + // If sudo is required, wrap the call in a sudo call. + let xt = if self.sudo { construct_sudo_extrinsic(xt)? } else { xt }; + let encoded_data = encode_call_data(client, &xt)?; + // If the encoded call data is too long, don't display it all. + if encoded_data.len() < ENCODED_CALL_DATA_MAX_LEN { + cli.info(format!("Encoded call data: {}", encode_call_data(client, &xt)?))?; + } + Ok(xt) + } + + // Sign and submit an extrinsic. + async fn submit_extrinsic( + &mut self, + client: &OnlineClient, + tx: DynamicPayload, + cli: &mut impl Cli, + ) -> Result<()> { + if !self.skip_confirm && + !cli.confirm("Do you want to submit the extrinsic?") + .initial_value(true) + .interact()? + { + display_message( + &format!("Extrinsic for `{}` was not submitted.", self.function.name), + false, + cli, + )?; + return Ok(()); + } + let spinner = cliclack::spinner(); + spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); + let result = sign_and_submit_extrinsic(client, tx, &self.suri) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + + spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); + Ok(()) + } + + fn display(&self, chain: &Chain) -> String { + let mut full_message = "pop call chain".to_string(); + full_message.push_str(&format!(" --pallet {}", self.function.pallet)); + full_message.push_str(&format!(" --function {}", self.function)); + if !self.args.is_empty() { + let args: Vec<_> = self + .args + .iter() + .map(|a| { + // If the argument is too long, don't show it all, truncate it. + if a.len() > ENCODED_CALL_DATA_MAX_LEN { + format!("\"{}...{}\"", &a[..20], &a[a.len() - 20..]) + } else { + format!("\"{a}\"") + } + }) + .collect(); + full_message.push_str(&format!(" --args {}", args.join(" "))); + } + full_message.push_str(&format!(" --url {} --suri {}", chain.url, self.suri)); + if self.sudo { + full_message.push_str(" --sudo"); + } + full_message + } +} + +// Displays a message to the user, with formatting based on the success status. +fn display_message(message: &str, success: bool, cli: &mut impl Cli) -> Result<()> { + if success { + cli.outro(message)?; + } else { + cli.outro_cancel(message)?; + } + Ok(()) +} + +// Prompts the user for some predefined actions. +fn prompt_predefined_actions(pallets: &[Pallet], cli: &mut impl Cli) -> Result> { + let mut predefined_action = cli.select("What would you like to do?"); + for action in supported_actions(pallets) { + predefined_action = predefined_action.item( + Some(action.clone()), + action.description(), + action.pallet_name(), + ); + } + predefined_action = predefined_action.item(None, "All", "Explore all pallets and functions"); + Ok(predefined_action.interact()?) +} + +// Prompts the user for the value of a parameter. +fn prompt_for_param(cli: &mut impl Cli, param: &Param) -> Result { + if param.is_optional { + if !cli + .confirm(format!( + "Do you want to provide a value for the optional parameter: {}?", + param.name + )) + .interact()? + { + return Ok("None()".to_string()); + } + let value = get_param_value(cli, param)?; + Ok(format!("Some({})", value)) + } else { + get_param_value(cli, param) + } +} + +// Resolves the value of a parameter based on its type. +fn get_param_value(cli: &mut impl Cli, param: &Param) -> Result { + if param.is_sequence { + prompt_for_sequence_param(cli, param) + } else if param.sub_params.is_empty() { + prompt_for_primitive_param(cli, param) + } else if param.is_variant { + prompt_for_variant_param(cli, param) + } else if param.is_tuple { + prompt_for_tuple_param(cli, param) + } else { + prompt_for_composite_param(cli, param) + } +} + +// Prompt for the value when it is a sequence. +fn prompt_for_sequence_param(cli: &mut impl Cli, param: &Param) -> Result { + let input_value = cli + .input(format!( + "The value for `{}` might be too large to enter. You may enter the path to a file instead.", + param.name + )) + .placeholder(&format!( + "Enter a value of type {} or provide a file path (e.g. /path/to/your/file)", + param.type_name + )) + .interact()?; + if Path::new(&input_value).is_file() { + return std::fs::read_to_string(&input_value) + .map_err(|err| anyhow!("Failed to read file {}", err.to_string())); + } + Ok(input_value) +} + +// Prompt for the value when it is a primitive. +fn prompt_for_primitive_param(cli: &mut impl Cli, param: &Param) -> Result { + Ok(cli + .input(format!("Enter the value for the parameter: {}", param.name)) + .placeholder(&format!("Type required: {}", param.type_name)) + .interact()?) +} + +// Prompt the user to select the value of the variant parameter and recursively prompt for nested +// fields. Output example: `Id(5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY)` for the `Id` +// variant. +fn prompt_for_variant_param(cli: &mut impl Cli, param: &Param) -> Result { + let selected_variant = { + let mut select = cli.select(format!("Select the value for the parameter: {}", param.name)); + for option in ¶m.sub_params { + select = select.item(option, &option.name, &option.type_name); + } + select.interact()? + }; + + if !selected_variant.sub_params.is_empty() { + let mut field_values = Vec::new(); + for field_arg in &selected_variant.sub_params { + let field_value = prompt_for_param(cli, field_arg)?; + field_values.push(field_value); + } + Ok(format!("{}({})", selected_variant.name, field_values.join(", "))) + } else { + Ok(format!("{}()", selected_variant.name)) + } +} + +// Recursively prompt the user for all the nested fields in a composite type. +// Example of a composite definition: +// Param { +// name: "Id", +// type_name: "AccountId32 ([u8;32])", +// is_optional: false, +// sub_params: [ +// Param { +// name: "Id", +// type_name: "[u8;32]", +// is_optional: false, +// sub_params: [], +// is_variant: false +// } +// ], +// is_variant: false +// } +fn prompt_for_composite_param(cli: &mut impl Cli, param: &Param) -> Result { + let mut field_values = Vec::new(); + for field_arg in ¶m.sub_params { + let field_value = prompt_for_param(cli, field_arg)?; + if param.sub_params.len() == 1 && param.name == param.sub_params[0].name { + field_values.push(field_value); + } else { + field_values.push(format!("{}: {}", field_arg.name, field_value)); + } + } + if param.sub_params.len() == 1 && param.name == param.sub_params[0].name { + Ok(field_values.join(", ").to_string()) + } else { + Ok(format!("{{{}}}", field_values.join(", "))) + } +} + +// Recursively prompt the user for the tuple values. +fn prompt_for_tuple_param(cli: &mut impl Cli, param: &Param) -> Result { + let mut tuple_values = Vec::new(); + for tuple_param in param.sub_params.iter() { + let tuple_value = prompt_for_param(cli, tuple_param)?; + tuple_values.push(tuple_value); + } + Ok(format!("({})", tuple_values.join(", "))) +} + +// Parser to capitalize the first letter of the pallet name. +fn parse_pallet_name(name: &str) -> Result { + let mut chars = name.chars(); + match chars.next() { + Some(c) => Ok(c.to_ascii_uppercase().to_string() + chars.as_str()), + None => Err("Pallet cannot be empty".to_string()), + } +} + +// Parser to convert the function name to lowercase. +fn parse_function_name(name: &str) -> Result { + Ok(name.to_ascii_lowercase()) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::cli::MockCli; + use tempfile::tempdir; + use url::Url; + + const BOB_SURI: &str = "//Bob"; + const POP_NETWORK_TESTNET_URL: &str = "wss://rpc1.paseo.popnetwork.xyz"; + const POLKADOT_NETWORK_URL: &str = "wss://polkadot-rpc.publicnode.com"; + + #[tokio::test] + async fn configure_chain_works() -> Result<()> { + let call_config = + CallChainCommand { suri: Some(DEFAULT_URI.to_string()), ..Default::default() }; + let mut cli = MockCli::new().expect_intro("Call a chain").expect_input( + "Which chain would you like to interact with?", + POP_NETWORK_TESTNET_URL.into(), + ); + let chain = call_config.configure_chain(&mut cli).await?; + assert_eq!(chain.url, Url::parse(POP_NETWORK_TESTNET_URL)?); + cli.verify() + } + + #[tokio::test] + async fn guide_user_to_call_chain_works() -> Result<()> { + let mut call_config = + CallChainCommand { pallet: Some("System".to_string()), ..Default::default() }; + + let mut cli = MockCli::new() + .expect_intro("Call a chain") + .expect_input("Which chain would you like to interact with?", POP_NETWORK_TESTNET_URL.into()) + .expect_select( + "Select the function to call:", + Some(true), + true, + Some( + [ + ("apply_authorized_upgrade".to_string(), "Provide the preimage (runtime binary) `code` for an upgrade that has been authorized. If the authorization required a version check, this call will ensure the spec name remains unchanged and that the spec version has increased. Depending on the runtime's `OnSetCode` configuration, this function may directly apply the new `code` in the same block or attempt to schedule the upgrade. All origins are allowed.".to_string()), + ("authorize_upgrade".to_string(), "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied later. This call requires Root origin.".to_string()), + ("authorize_upgrade_without_checks".to_string(), "Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied later. WARNING: This authorizes an upgrade that will take place without any safety checks, for example that the spec name remains the same and that the version number increases. Not recommended for normal use. Use `authorize_upgrade` instead. This call requires Root origin.".to_string()), + ("kill_prefix".to_string(), "Kill all storage items with a key that starts with the given prefix. **NOTE:** We rely on the Root origin to provide us the number of subkeys under the prefix we are removing to accurately calculate the weight of this function.".to_string()), + ("kill_storage".to_string(), "Kill some items from storage.".to_string()), + ("remark".to_string(), "Make some on-chain remark. Can be executed by every `origin`.".to_string()), + ("remark_with_event".to_string(), "Make some on-chain remark and emit event.".to_string()), + ("set_code".to_string(), "Set the new runtime code.".to_string()), + ("set_code_without_checks".to_string(), "Set the new runtime code without doing any checks of the given `code`. Note that runtime upgrades will not run if this is called with a not-increasing spec version!".to_string()), + ("set_heap_pages".to_string(), "Set the number of pages in the WebAssembly environment's heap.".to_string()), + ("set_storage".to_string(), "Set some items of storage.".to_string()), + ] + .to_vec(), + ), + 5, // "remark" dispatchable function + ) + .expect_input("The value for `remark` might be too large to enter. You may enter the path to a file instead.", "0x11".into()) + .expect_confirm("Would you like to dispatch this function call with `Root` origin?", true) + .expect_input("Signer of the extrinsic:", "//Bob".into()); + + let chain = call_config.configure_chain(&mut cli).await?; + assert_eq!(chain.url, Url::parse(POP_NETWORK_TESTNET_URL)?); + + let call_chain = call_config.configure_call(&chain, &mut cli)?; + assert_eq!(call_chain.function.pallet, "System"); + assert_eq!(call_chain.function.name, "remark"); + assert_eq!(call_chain.args, ["0x11".to_string()].to_vec()); + assert_eq!(call_chain.suri, "//Bob"); + assert!(call_chain.sudo); + assert_eq!(call_chain.display(&chain), "pop call chain --pallet System --function remark --args \"0x11\" --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Bob --sudo"); + cli.verify() + } + + #[tokio::test] + async fn guide_user_to_configure_predefined_action_works() -> Result<()> { + let mut call_config = CallChainCommand::default(); + + let mut cli = MockCli::new().expect_intro("Call a chain").expect_input( + "Which chain would you like to interact with?", + POLKADOT_NETWORK_URL.into(), + ); + let chain = call_config.configure_chain(&mut cli).await?; + assert_eq!(chain.url, Url::parse(POLKADOT_NETWORK_URL)?); + cli.verify()?; + + let mut cli = MockCli::new() + .expect_select( + "What would you like to do?", + Some(true), + true, + Some( + supported_actions(&chain.pallets) + .into_iter() + .map(|action| { + (action.description().to_string(), action.pallet_name().to_string()) + }) + .chain(std::iter::once(( + "All".to_string(), + "Explore all pallets and functions".to_string(), + ))) + .collect::>(), + ), + 1, // "Purchase on-demand coretime" action + ) + .expect_input("Enter the value for the parameter: max_amount", "10000".into()) + .expect_input("Enter the value for the parameter: para_id", "2000".into()) + .expect_input("Signer of the extrinsic:", BOB_SURI.into()); + + let call_chain = call_config.configure_call(&chain, &mut cli)?; + + assert_eq!(call_chain.function.pallet, "OnDemand"); + assert_eq!(call_chain.function.name, "place_order_allow_death"); + assert_eq!(call_chain.args, ["10000".to_string(), "2000".to_string()].to_vec()); + assert_eq!(call_chain.suri, "//Bob"); + assert!(!call_chain.sudo); + assert_eq!(call_chain.display(&chain), "pop call chain --pallet OnDemand --function place_order_allow_death --args \"10000\" \"2000\" --url wss://polkadot-rpc.publicnode.com/ --suri //Bob"); + cli.verify() + } + + #[tokio::test] + async fn prepare_extrinsic_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let mut call_config = Call { + function: Function { + pallet: "WrongName".to_string(), + name: "WrongName".to_string(), + ..Default::default() + }, + args: vec!["0x11".to_string()].to_vec(), + suri: DEFAULT_URI.to_string(), + skip_confirm: false, + sudo: false, + }; + let mut cli = MockCli::new(); + // Error, wrong name of the pallet. + assert!(matches!( + call_config.prepare_extrinsic(&client, &mut cli), + Err(message) + if message.to_string().contains("Failed to encode call data. Metadata Error: Pallet with name WrongName not found"))); + let pallets = parse_chain_metadata(&client)?; + call_config.function.pallet = "System".to_string(); + // Error, wrong name of the function. + assert!(matches!( + call_config.prepare_extrinsic(&client, &mut cli), + Err(message) + if message.to_string().contains("Failed to encode call data. Metadata Error: Call with name WrongName not found"))); + // Success, pallet and dispatchable function specified. + cli = MockCli::new().expect_info("Encoded call data: 0x00000411"); + call_config.function = find_dispatchable_by_name(&pallets, "System", "remark")?.clone(); + let xt = call_config.prepare_extrinsic(&client, &mut cli)?; + assert_eq!(xt.call_name(), "remark"); + assert_eq!(xt.pallet_name(), "System"); + + // Prepare extrinsic wrapped in sudo works. + cli = MockCli::new().expect_info("Encoded call data: 0x0f0000000411"); + call_config.sudo = true; + call_config.prepare_extrinsic(&client, &mut cli)?; + + cli.verify() + } + + #[tokio::test] + async fn user_cancel_submit_extrinsic_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + let mut call_config = Call { + function: find_dispatchable_by_name(&pallets, "System", "remark")?.clone(), + args: vec!["0x11".to_string()].to_vec(), + suri: DEFAULT_URI.to_string(), + skip_confirm: false, + sudo: false, + }; + let mut cli = MockCli::new() + .expect_confirm("Do you want to submit the extrinsic?", false) + .expect_outro_cancel("Extrinsic for `remark` was not submitted."); + let xt = call_config.prepare_extrinsic(&client, &mut cli)?; + call_config.submit_extrinsic(&client, xt, &mut cli).await?; + + cli.verify() + } + + #[tokio::test] + async fn user_cancel_submit_extrinsic_from_call_data_works() -> Result<()> { + let client = set_up_client("wss://rpc1.paseo.popnetwork.xyz").await?; + let call_config = CallChainCommand { + pallet: None, + function: None, + args: vec![].to_vec(), + url: Some(Url::parse("wss://rpc1.paseo.popnetwork.xyz")?), + suri: None, + skip_confirm: false, + call_data: Some("0x00000411".to_string()), + sudo: false, + }; + let mut cli = MockCli::new() + .expect_input("Signer of the extrinsic:", "//Bob".into()) + .expect_confirm("Do you want to submit the extrinsic?", false) + .expect_outro_cancel("Extrinsic with call data 0x00000411 was not submitted."); + call_config + .submit_extrinsic_from_call_data(&client, "0x00000411", &mut cli) + .await?; + + cli.verify() + } + + #[tokio::test] + async fn configure_sudo_works() -> Result<()> { + // Test when sudo pallet doesn't exist. + let mut call_config = CallChainCommand { + pallet: None, + function: None, + args: vec![].to_vec(), + url: Some(Url::parse("wss://polkadot-rpc.publicnode.com")?), + suri: Some("//Alice".to_string()), + skip_confirm: false, + call_data: Some("0x00000411".to_string()), + sudo: true, + }; + let mut cli = MockCli::new() + .expect_intro("Call a chain") + .expect_warning("NOTE: sudo is not supported by the chain. Ignoring `--sudo` flag."); + let chain = call_config.configure_chain(&mut cli).await?; + call_config.configure_sudo(&chain, &mut cli)?; + assert!(!call_config.sudo); + cli.verify()?; + + // Test when sudo pallet exist. + cli = MockCli::new().expect_intro("Call a chain").expect_confirm( + "Would you like to dispatch this function call with `Root` origin?", + true, + ); + call_config.url = Some(Url::parse("wss://rpc1.paseo.popnetwork.xyz")?); + let chain = call_config.configure_chain(&mut cli).await?; + call_config.configure_sudo(&chain, &mut cli)?; + assert!(call_config.sudo); + cli.verify() + } + + #[test] + fn reset_for_new_call_works() -> Result<()> { + let mut call_config = CallChainCommand { + pallet: Some("System".to_string()), + function: Some("remark".to_string()), + args: vec!["0x11".to_string()].to_vec(), + url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), + suri: Some(DEFAULT_URI.to_string()), + skip_confirm: false, + call_data: None, + sudo: true, + }; + call_config.reset_for_new_call(); + assert_eq!(call_config.pallet, None); + assert_eq!(call_config.function, None); + assert_eq!(call_config.args.len(), 0); + assert!(!call_config.sudo); + Ok(()) + } + + #[test] + fn requires_user_input_works() -> Result<()> { + let mut call_config = CallChainCommand { + pallet: Some("System".to_string()), + function: Some("remark".to_string()), + args: vec!["0x11".to_string()].to_vec(), + url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), + suri: Some(DEFAULT_URI.to_string()), + skip_confirm: false, + call_data: None, + sudo: false, + }; + assert!(!call_config.requires_user_input()); + call_config.pallet = None; + assert!(call_config.requires_user_input()); + Ok(()) + } + + #[test] + fn expand_file_arguments_works() -> Result<()> { + let mut call_config = CallChainCommand { + pallet: Some("Registrar".to_string()), + function: Some("register".to_string()), + args: vec!["2000".to_string(), "0x1".to_string(), "0x12".to_string()].to_vec(), + url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), + suri: Some(DEFAULT_URI.to_string()), + call_data: None, + skip_confirm: false, + sudo: false, + }; + assert_eq!( + call_config.expand_file_arguments()?, + vec!["2000".to_string(), "0x1".to_string(), "0x12".to_string()] + ); + // Temporal file for testing when the input is a file. + let temp_dir = tempdir()?; + let genesis_file = temp_dir.path().join("genesis_file.json"); + std::fs::write(&genesis_file, "genesis_file_content")?; + let wasm_file = temp_dir.path().join("wasm_file.json"); + std::fs::write(&wasm_file, "wasm_file_content")?; + call_config.args = vec![ + "2000".to_string(), + genesis_file.display().to_string(), + wasm_file.display().to_string(), + ]; + assert_eq!( + call_config.expand_file_arguments()?, + vec![ + "2000".to_string(), + "genesis_file_content".to_string(), + "wasm_file_content".to_string() + ] + ); + Ok(()) + } + + #[test] + fn display_message_works() -> Result<()> { + let mut cli = MockCli::new().expect_outro(&"Call completed successfully!"); + display_message("Call completed successfully!", true, &mut cli)?; + cli.verify()?; + let mut cli = MockCli::new().expect_outro_cancel("Call failed."); + display_message("Call failed.", false, &mut cli)?; + cli.verify() + } + + #[tokio::test] + async fn prompt_predefined_actions_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + let mut cli = MockCli::new().expect_select( + "What would you like to do?", + Some(true), + true, + Some( + supported_actions(&pallets) + .into_iter() + .map(|action| { + (action.description().to_string(), action.pallet_name().to_string()) + }) + .chain(std::iter::once(( + "All".to_string(), + "Explore all pallets and functions".to_string(), + ))) + .collect::>(), + ), + 2, // "Mint an Asset" action + ); + let action = prompt_predefined_actions(&pallets, &mut cli)?; + assert_eq!(action, Some(Action::MintAsset)); + cli.verify() + } + + #[tokio::test] + async fn prompt_for_param_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + // Using NFT mint dispatchable function to test the majority of sub-functions. + let function = find_dispatchable_by_name(&pallets, "Nfts", "mint")?; + let mut cli = MockCli::new() + .expect_input("Enter the value for the parameter: collection", "0".into()) + .expect_input("Enter the value for the parameter: item", "0".into()) + .expect_select( + "Select the value for the parameter: mint_to", + Some(true), + true, + Some( + [ + ("Id".to_string(), "".to_string()), + ("Index".to_string(), "".to_string()), + ("Raw".to_string(), "".to_string()), + ("Address32".to_string(), "".to_string()), + ("Address20".to_string(), "".to_string()), + ] + .to_vec(), + ), + 0, // "Id" action + ) + .expect_input( + "Enter the value for the parameter: Id", + "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty".into(), + ) + .expect_confirm( + "Do you want to provide a value for the optional parameter: witness_data?", + true, + ) + .expect_confirm( + "Do you want to provide a value for the optional parameter: owned_item?", + false, + ) + .expect_confirm( + "Do you want to provide a value for the optional parameter: mint_price?", + true, + ) + .expect_input("Enter the value for the parameter: mint_price", "1000".into()); + + // Test all the function params. + let mut params: Vec = Vec::new(); + for param in &function.params { + params.push(prompt_for_param(&mut cli, ¶m)?); + } + assert_eq!(params.len(), 4); + assert_eq!(params[0], "0".to_string()); // collection: test primitive + assert_eq!(params[1], "0".to_string()); // item: test primitive + assert_eq!(params[2], "Id(5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty)".to_string()); // mint_to: test variant + assert_eq!(params[3], "Some({owned_item: None(), mint_price: Some(1000)})".to_string()); // witness_data: test composite + cli.verify()?; + + // Using Scheduler set_retry dispatchable function to test the tuple params. + let function = find_dispatchable_by_name(&pallets, "Scheduler", "set_retry")?; + let mut cli = MockCli::new() + .expect_input( + "Enter the value for the parameter: Index 0 of the tuple task", + "0".into(), + ) + .expect_input( + "Enter the value for the parameter: Index 1 of the tuple task", + "0".into(), + ) + .expect_input("Enter the value for the parameter: retries", "0".into()) + .expect_input("Enter the value for the parameter: period", "0".into()); + + // Test all the extrinsic params + let mut params: Vec = Vec::new(); + for param in &function.params { + params.push(prompt_for_param(&mut cli, ¶m)?); + } + assert_eq!(params.len(), 3); + assert_eq!(params[0], "(0, 0)".to_string()); // task: test tuples + assert_eq!(params[1], "0".to_string()); // retries: test primitive + assert_eq!(params[2], "0".to_string()); // period: test primitive + cli.verify()?; + + // Using System remark dispatchable function to test the sequence params. + let function = find_dispatchable_by_name(&pallets, "System", "remark")?; + // Temporal file for testing the input. + let temp_dir = tempdir()?; + let file = temp_dir.path().join("file.json"); + std::fs::write(&file, "testing")?; + + let mut cli = MockCli::new() + .expect_input( + "The value for `remark` might be too large to enter. You may enter the path to a file instead.", + file.display().to_string(), + ); + + // Test all the function params + let mut params: Vec = Vec::new(); + for param in &function.params { + params.push(prompt_for_param(&mut cli, ¶m)?); + } + assert_eq!(params.len(), 1); + assert_eq!(params[0], "testing".to_string()); // remark: test sequence from file + cli.verify() + } + + #[test] + fn parse_pallet_name_works() -> Result<()> { + assert_eq!(parse_pallet_name("system").unwrap(), "System"); + assert_eq!(parse_pallet_name("balances").unwrap(), "Balances"); + assert_eq!(parse_pallet_name("nfts").unwrap(), "Nfts"); + Ok(()) + } + + #[test] + fn parse_function_name_works() -> Result<()> { + assert_eq!(parse_function_name("Remark").unwrap(), "remark"); + assert_eq!(parse_function_name("Force_transfer").unwrap(), "force_transfer"); + assert_eq!(parse_function_name("MINT").unwrap(), "mint"); + Ok(()) + } +} diff --git a/crates/pop-cli/src/commands/call/mod.rs b/crates/pop-cli/src/commands/call/mod.rs index 6cb137f4..dd1a2318 100644 --- a/crates/pop-cli/src/commands/call/mod.rs +++ b/crates/pop-cli/src/commands/call/mod.rs @@ -2,6 +2,8 @@ use clap::{Args, Subcommand}; +#[cfg(feature = "parachain")] +pub(crate) mod chain; #[cfg(feature = "contract")] pub(crate) mod contract; @@ -13,9 +15,13 @@ pub(crate) struct CallArgs { pub command: Command, } -/// Call a smart contract. +/// Call a chain or a smart contract. #[derive(Subcommand)] pub(crate) enum Command { + /// Call a chain + #[cfg(feature = "parachain")] + #[clap(alias = "p", visible_aliases = ["parachain"])] + Chain(chain::CallChainCommand), /// Call a contract #[cfg(feature = "contract")] #[clap(alias = "c")] diff --git a/crates/pop-cli/src/commands/mod.rs b/crates/pop-cli/src/commands/mod.rs index aa385f28..9af86e3f 100644 --- a/crates/pop-cli/src/commands/mod.rs +++ b/crates/pop-cli/src/commands/mod.rs @@ -26,9 +26,9 @@ pub(crate) enum Command { #[clap(alias = "b", about = about_build())] #[cfg(any(feature = "parachain", feature = "contract"))] Build(build::BuildArgs), - /// Call a smart contract. + /// Call a chain or a smart contract. #[clap(alias = "c")] - #[cfg(feature = "contract")] + #[cfg(any(feature = "parachain", feature = "contract"))] Call(call::CallArgs), /// Launch a local network or deploy a smart contract. #[clap(alias = "u")] @@ -96,8 +96,11 @@ impl Command { build::Command::Spec(cmd) => cmd.execute().await.map(|_| Value::Null), }, }, - #[cfg(feature = "contract")] + #[cfg(any(feature = "parachain", feature = "contract"))] Self::Call(args) => match args.command { + #[cfg(feature = "parachain")] + call::Command::Chain(cmd) => cmd.execute().await.map(|_| Value::Null), + #[cfg(feature = "contract")] call::Command::Contract(cmd) => cmd.execute().await.map(|_| Value::Null), }, #[cfg(any(feature = "parachain", feature = "contract"))] diff --git a/crates/pop-cli/tests/parachain.rs b/crates/pop-cli/tests/parachain.rs index b9baaac5..67132e6d 100644 --- a/crates/pop-cli/tests/parachain.rs +++ b/crates/pop-cli/tests/parachain.rs @@ -2,13 +2,13 @@ use anyhow::Result; use assert_cmd::{cargo::cargo_bin, Command}; -use pop_common::templates::Template; +use pop_common::{find_free_port, templates::Template}; use pop_parachains::Parachain; use std::{fs, path::Path, process::Command as Cmd}; use strum::VariantArray; use tokio::time::{sleep, Duration}; -/// Test the parachain lifecycle: new, build, up +/// Test the parachain lifecycle: new, build, up, call. #[tokio::test] async fn parachain_lifecycle() -> Result<()> { let temp = tempfile::tempdir().unwrap(); @@ -92,14 +92,86 @@ async fn parachain_lifecycle() -> Result<()> { assert!(content.contains("\"protocolId\": \"pop-protocol\"")); assert!(content.contains("\"id\": \"local_testnet\"")); - // pop up parachain -p "./test_parachain" + // Overwrite the config file to manually set the port to test pop call parachain. + let network_toml_path = temp_parachain_dir.join("network.toml"); + fs::create_dir_all(&temp_parachain_dir)?; + let random_port = find_free_port(); + let localhost_url = format!("ws://127.0.0.1:{}", random_port); + fs::write( + &network_toml_path, + format!( + r#"[relaychain] +chain = "paseo-local" + +[[relaychain.nodes]] +name = "alice" +rpc_port = {} +validator = true + +[[relaychain.nodes]] +name = "bob" +validator = true + +[[parachains]] +id = 2000 +default_command = "./target/release/parachain-template-node" + +[[parachains.collators]] +name = "collator-01" +"#, + random_port + ), + )?; + + // `pop up parachain -f ./network.toml --skip-confirm` let mut cmd = Cmd::new(cargo_bin("pop")) .current_dir(&temp_parachain_dir) .args(&["up", "parachain", "-f", "./network.toml", "--skip-confirm"]) .spawn() .unwrap(); - // If after 20 secs is still running probably execution is ok, or waiting for user response - sleep(Duration::from_secs(20)).await; + + // Wait for the networks to initialize. Increased timeout to accommodate CI environment delays. + sleep(Duration::from_secs(50)).await; + + // `pop call chain --pallet System --function remark --args "0x11" --url + // ws://127.0.0.1:random_port --suri //Alice --skip-confirm` + Command::cargo_bin("pop") + .unwrap() + .args(&[ + "call", + "chain", + "--pallet", + "System", + "--function", + "remark", + "--args", + "0x11", + "--url", + &localhost_url, + "--suri", + "//Alice", + "--skip-confirm", + ]) + .assert() + .success(); + + // pop call chain --call 0x00000411 --url ws://127.0.0.1:random_port --suri //Alice + // --skip-confirm + Command::cargo_bin("pop") + .unwrap() + .args(&[ + "call", + "chain", + "--call", + "0x00000411", + "--url", + &localhost_url, + "--suri", + "//Alice", + "--skip-confirm", + ]) + .assert() + .success(); assert!(cmd.try_wait().unwrap().is_none(), "the process should still be running"); // Stop the process diff --git a/crates/pop-common/Cargo.toml b/crates/pop-common/Cargo.toml index 87074a60..03e5035d 100644 --- a/crates/pop-common/Cargo.toml +++ b/crates/pop-common/Cargo.toml @@ -16,10 +16,13 @@ git2.workspace = true git2_credentials.workspace = true regex.workspace = true reqwest.workspace = true +scale-info.workspace = true serde_json.workspace = true serde.workspace = true strum.workspace = true strum_macros.workspace = true +subxt.workspace = true +subxt-signer.workspace = true tar.workspace = true tempfile.workspace = true thiserror.workspace = true diff --git a/crates/pop-common/src/build.rs b/crates/pop-common/src/build.rs index f871078a..85d1eba5 100644 --- a/crates/pop-common/src/build.rs +++ b/crates/pop-common/src/build.rs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: GPL-3.0 + use std::{ fmt, path::{Path, PathBuf}, diff --git a/crates/pop-common/src/errors.rs b/crates/pop-common/src/errors.rs index 02fb0c9b..ceef1150 100644 --- a/crates/pop-common/src/errors.rs +++ b/crates/pop-common/src/errors.rs @@ -3,6 +3,7 @@ use crate::{sourcing, templates}; use thiserror::Error; +/// Represents the various errors that can occur in the crate. #[derive(Error, Debug)] pub enum Error { #[error("Anyhow error: {0}")] @@ -13,12 +14,19 @@ pub enum Error { Git(String), #[error("IO error: {0}")] IO(#[from] std::io::Error), - #[error("Failed to get manifest path: {0}")] - ManifestPath(String), + /// An error occurred while attempting to create a keypair from the provided URI. + #[error("Failed to create keypair from URI: {0}")] + KeyPairCreation(String), #[error("Manifest error: {0}")] ManifestError(#[from] cargo_toml::Error), + /// An error occurred while attempting to retrieve the manifest path. + #[error("Failed to get manifest path: {0}")] + ManifestPath(String), #[error("ParseError error: {0}")] ParseError(#[from] url::ParseError), + /// An error occurred while parsing the provided secret URI. + #[error("Failed to parse secret URI: {0}")] + ParseSecretURI(String), #[error("SourceError error: {0}")] SourceError(#[from] sourcing::Error), #[error("TemplateError error: {0}")] diff --git a/crates/pop-common/src/lib.rs b/crates/pop-common/src/lib.rs index b70dd121..6f199196 100644 --- a/crates/pop-common/src/lib.rs +++ b/crates/pop-common/src/lib.rs @@ -1,20 +1,32 @@ -pub mod build; -pub mod errors; -pub mod git; -pub mod helpers; -pub mod manifest; -pub mod polkadot_sdk; -pub mod sourcing; -pub mod templates; +// SPDX-License-Identifier: GPL-3.0 + +use std::net::TcpListener; pub use build::Profile; pub use errors::Error; pub use git::{Git, GitHub, Release}; pub use helpers::{get_project_name_from_path, prefix_with_current_dir_if_needed, replace_in_file}; pub use manifest::{add_crate_to_workspace, find_workspace_toml}; +pub use metadata::format_type; +pub use signer::create_signer; pub use sourcing::set_executable_permission; +pub use subxt::{Config, PolkadotConfig as DefaultConfig}; +pub use subxt_signer::sr25519::Keypair; pub use templates::extractor::extract_template_files; +pub mod build; +pub mod errors; +pub mod git; +pub mod helpers; +pub mod manifest; +/// Provides functionality for formatting and resolving metadata types. +pub mod metadata; +pub mod polkadot_sdk; +/// Provides functionality for creating a signer from a secret URI. +pub mod signer; +pub mod sourcing; +pub mod templates; + static APP_USER_AGENT: &str = concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION")); /// Trait for observing status updates. @@ -52,6 +64,15 @@ pub fn target() -> Result<&'static str, Error> { Err(Error::UnsupportedPlatform { arch: ARCH, os: OS }) } +/// Finds an available port by binding to port 0 and retrieving the assigned port. +pub fn find_free_port() -> u16 { + TcpListener::bind("127.0.0.1:0") + .expect("Failed to bind to an available port") + .local_addr() + .expect("Failed to retrieve local address") + .port() +} + #[cfg(test)] mod test { use super::*; @@ -71,4 +92,14 @@ mod test { assert_eq!(target()?, target_expected); Ok(()) } + + #[test] + fn find_free_port_works() -> Result<()> { + let port = find_free_port(); + let addr = format!("127.0.0.1:{}", port); + // Constructs the TcpListener from the above port + let listener = TcpListener::bind(&addr); + assert!(listener.is_ok()); + Ok(()) + } } diff --git a/crates/pop-common/src/metadata.rs b/crates/pop-common/src/metadata.rs new file mode 100644 index 00000000..48f46da2 --- /dev/null +++ b/crates/pop-common/src/metadata.rs @@ -0,0 +1,228 @@ +// SPDX-License-Identifier: GPL-3.0 + +use scale_info::{form::PortableForm, PortableRegistry, Type, TypeDef, TypeDefPrimitive}; + +/// Formats a specified type, using the registry to output its full type representation. +/// +/// # Arguments +/// * `ty`: The type to format, containing metadata like name, parameters, and definition. +/// * `registry`: The registry used to resolve type dependencies and provides details for complex +/// types. +pub fn format_type(ty: &Type, registry: &PortableRegistry) -> String { + let mut name = ty + .path + .segments + .last() + .map(|s| s.to_owned()) + .unwrap_or_else(|| ty.path.to_string()); + + if !ty.type_params.is_empty() { + let params: Vec<_> = ty + .type_params + .iter() + .filter_map(|p| { + if let Some(ty) = p.ty { + registry.resolve(ty.id) + } else { + None // Ignore if p.ty is None + } + }) + .map(|t| format_type(t, registry)) + .collect(); + name = format!("{name}<{}>", params.join(",")); + } + name = format!( + "{name}{}", + match &ty.type_def { + TypeDef::Composite(composite) => { + if composite.fields.is_empty() { + return "".to_string(); + } + + let mut named = false; + let fields: Vec<_> = composite + .fields + .iter() + .filter_map(|f| match f.name.as_ref() { + None => registry.resolve(f.ty.id).map(|t| format_type(t, registry)), + Some(field) => { + named = true; + f.type_name.as_ref().map(|t| format!("{field}: {t}")) + }, + }) + .collect(); + match named { + true => format!(" {{ {} }}", fields.join(", ")), + false => format!(" ({})", fields.join(", ")), + } + }, + TypeDef::Variant(variant) => { + let variants: Vec<_> = variant + .variants + .iter() + .map(|v| { + if v.fields.is_empty() { + return v.name.clone(); + } + + let name = v.name.as_str(); + let mut named = false; + let fields: Vec<_> = v + .fields + .iter() + .filter_map(|f| match f.name.as_ref() { + None => registry.resolve(f.ty.id).map(|t| format_type(t, registry)), + Some(field) => { + named = true; + f.type_name.as_ref().map(|t| format!("{field}: {t}")) + }, + }) + .collect(); + format!( + "{name}{}", + match named { + true => format!("{{ {} }}", fields.join(", ")), + false => format!("({})", fields.join(", ")), + } + ) + }) + .collect(); + format!(": {}", variants.join(", ")) + }, + TypeDef::Sequence(sequence) => { + format!( + "[{}]", + format_type( + registry.resolve(sequence.type_param.id).expect("sequence type not found"), + registry + ) + ) + }, + TypeDef::Array(array) => { + format!( + "[{};{}]", + format_type( + registry.resolve(array.type_param.id).expect("array type not found"), + registry + ), + array.len + ) + }, + TypeDef::Tuple(tuple) => { + let fields: Vec<_> = tuple + .fields + .iter() + .filter_map(|p| registry.resolve(p.id)) + .map(|t| format_type(t, registry)) + .collect(); + format!("({})", fields.join(",")) + }, + TypeDef::Primitive(primitive) => { + use TypeDefPrimitive::*; + match primitive { + Bool => "bool", + Char => "char", + Str => "str", + U8 => "u8", + U16 => "u16", + U32 => "u32", + U64 => "u64", + U128 => "u128", + U256 => "u256", + I8 => "i8", + I16 => "i16", + I32 => "i32", + I64 => "i64", + I128 => "i128", + I256 => "i256", + } + .to_string() + }, + TypeDef::Compact(compact) => { + format!( + "Compact<{}>", + format_type( + registry.resolve(compact.type_param.id).expect("compact type not found"), + registry + ) + ) + }, + TypeDef::BitSequence(_) => { + "BitSequence".to_string() + }, + } + ); + + name +} + +#[cfg(test)] +mod tests { + use super::*; + use anyhow::Result; + use subxt::{OnlineClient, SubstrateConfig}; + + const POP_NETWORK_TESTNET_URL: &str = "wss://rpc1.paseo.popnetwork.xyz"; + + #[tokio::test] + async fn format_type_works() -> Result<()> { + let client = OnlineClient::::from_url(POP_NETWORK_TESTNET_URL).await?; + let metadata = client.metadata(); + let registry = metadata.types(); + + // Validate `Nfts::mint` extrinsic types cover most of cases. + let nfts_mint_extrinsic = + metadata.pallet_by_name("Nfts").unwrap().call_variant_by_name("mint").unwrap(); + let nfts_mint_types: Vec = nfts_mint_extrinsic + .fields + .iter() + .map(|field| { + let type_info = registry.resolve(field.ty.id).unwrap(); + format_type(&type_info, registry) + }) + .collect(); + assert_eq!(nfts_mint_types.len(), 4); + assert_eq!(nfts_mint_types[0], "u32"); // collection + assert_eq!(nfts_mint_types[1], "u32"); // item + assert_eq!(nfts_mint_types[2], "MultiAddress: Id(AccountId32 ([u8;32])), Index(Compact<()>), Raw([u8]), Address32([u8;32]), Address20([u8;20])"); // mint_to + assert_eq!(nfts_mint_types[3], "Option { owned_item: Option, mint_price: Option }>: None, Some(MintWitness { owned_item: Option, mint_price: Option })"); // witness_data + + // Validate `System::remark` to cover Sequences. + let system_remark_extrinsic = metadata + .pallet_by_name("System") + .unwrap() + .call_variant_by_name("remark") + .unwrap(); + let system_remark_types: Vec = system_remark_extrinsic + .fields + .iter() + .map(|field| { + let type_info = registry.resolve(field.ty.id).unwrap(); + format_type(&type_info, registry) + }) + .collect(); + assert_eq!(system_remark_types.len(), 1); + assert_eq!(system_remark_types[0], "[u8]"); // remark + + // Extrinsic Scheduler::set_retry, cover tuples. + let scheduler_set_retry_extrinsic = metadata + .pallet_by_name("Scheduler") + .unwrap() + .call_variant_by_name("set_retry") + .unwrap(); + let scheduler_set_retry_types: Vec = scheduler_set_retry_extrinsic + .fields + .iter() + .map(|field| { + let type_info = registry.resolve(field.ty.id).unwrap(); + format_type(&type_info, registry) + }) + .collect(); + assert_eq!(scheduler_set_retry_types.len(), 3); + assert_eq!(scheduler_set_retry_types[0], "(u32,u32)"); // task + assert_eq!(scheduler_set_retry_types[1], "u8"); // retries + assert_eq!(scheduler_set_retry_types[2], "u32"); // period + + Ok(()) + } +} diff --git a/crates/pop-contracts/src/utils/signer.rs b/crates/pop-common/src/signer.rs similarity index 52% rename from crates/pop-contracts/src/utils/signer.rs rename to crates/pop-common/src/signer.rs index 51fc44b0..e542d041 100644 --- a/crates/pop-contracts/src/utils/signer.rs +++ b/crates/pop-common/src/signer.rs @@ -1,24 +1,19 @@ // SPDX-License-Identifier: GPL-3.0 use crate::errors::Error; -use contract_build::util::decode_hex; -use sp_core::Bytes; use subxt_signer::{sr25519::Keypair, SecretUri}; -/// Create a Signer from a secret URI. -pub(crate) fn create_signer(suri: &str) -> Result { +/// Create a keypair from a secret URI. +/// +/// # Arguments +/// `suri` - Secret URI string used to generate the `Keypair`. +pub fn create_signer(suri: &str) -> Result { let uri = ::from_str(suri) .map_err(|e| Error::ParseSecretURI(format!("{}", e)))?; let keypair = Keypair::from_uri(&uri).map_err(|e| Error::KeyPairCreation(format!("{}", e)))?; Ok(keypair) } -/// Parse hex encoded bytes. -pub fn parse_hex_bytes(input: &str) -> Result { - let bytes = decode_hex(input).map_err(|e| Error::HexParsing(format!("{}", e)))?; - Ok(bytes.into()) -} - #[cfg(test)] mod tests { use super::*; @@ -39,18 +34,4 @@ mod tests { assert!(matches!(create_signer("11111"), Err(Error::KeyPairCreation(..)))); Ok(()) } - - #[test] - fn parse_hex_bytes_works() -> Result<(), Error> { - let input_in_hex = "48656c6c6f"; - let result = parse_hex_bytes(input_in_hex)?; - assert_eq!(result, Bytes(vec![72, 101, 108, 108, 111])); - Ok(()) - } - - #[test] - fn parse_hex_bytes_fails_wrong_input() -> Result<(), Error> { - assert!(matches!(parse_hex_bytes("wronghexvalue"), Err(Error::HexParsing(..)))); - Ok(()) - } } diff --git a/crates/pop-contracts/src/build.rs b/crates/pop-contracts/src/build.rs index dcbec25a..df9cc4a3 100644 --- a/crates/pop-contracts/src/build.rs +++ b/crates/pop-contracts/src/build.rs @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::{errors::Error, utils::helpers::get_manifest_path}; +use crate::{errors::Error, utils::get_manifest_path}; pub use contract_build::Verbosity; use contract_build::{execute, BuildMode, BuildResult, ExecuteArgs}; use std::path::Path; diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 1886f3be..03effcb0 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -3,9 +3,9 @@ use crate::{ errors::Error, utils::{ - helpers::{get_manifest_path, parse_account, parse_balance}, + get_manifest_path, metadata::{process_function_args, FunctionType}, - signer::create_signer, + parse_account, parse_balance, }, }; use anyhow::Context; @@ -15,10 +15,9 @@ use contract_extrinsics::{ ExtrinsicOptsBuilder, TokenMetadata, }; use ink_env::{DefaultEnvironment, Environment}; +use pop_common::{create_signer, Config, DefaultConfig, Keypair}; use sp_weights::Weight; use std::path::PathBuf; -use subxt::{Config, PolkadotConfig as DefaultConfig}; -use subxt_signer::sr25519::Keypair; use url::Url; /// Attributes for the `call` command. @@ -180,10 +179,10 @@ mod tests { use crate::{ contracts_node_generator, dry_run_gas_estimate_instantiate, errors::Error, instantiate_smart_contract, mock_build_process, new_environment, run_contracts_node, - set_up_deployment, testing::find_free_port, UpOpts, + set_up_deployment, UpOpts, }; use anyhow::Result; - use pop_common::set_executable_permission; + use pop_common::{find_free_port, set_executable_permission}; use sp_core::Bytes; use std::{env, process::Command, time::Duration}; use tokio::time::sleep; diff --git a/crates/pop-contracts/src/errors.rs b/crates/pop-contracts/src/errors.rs index b59031a0..e7ddec21 100644 --- a/crates/pop-contracts/src/errors.rs +++ b/crates/pop-contracts/src/errors.rs @@ -3,13 +3,14 @@ use pop_common::sourcing::Error as SourcingError; use thiserror::Error; +/// Represents the various errors that can occur in the crate. #[derive(Error, Debug)] #[allow(clippy::enum_variant_names)] pub enum Error { - #[error("Anyhow error: {0}")] - AnyhowError(#[from] anyhow::Error), #[error("Failed to parse account address: {0}")] AccountAddressParsing(String), + #[error("Anyhow error: {0}")] + AnyhowError(#[from] anyhow::Error), #[error("Failed to parse balance: {0}")] BalanceParsing(String), #[error("{0}")] @@ -38,8 +39,6 @@ pub enum Error { InvalidName(String), #[error("IO error: {0}")] IO(#[from] std::io::Error), - #[error("Failed to create keypair from URI: {0}")] - KeyPairCreation(String), #[error("Failed to get manifest path: {0}")] ManifestPath(String), #[error("Argument {0} is required")] @@ -48,8 +47,6 @@ pub enum Error { NewContract(String), #[error("ParseError error: {0}")] ParseError(#[from] url::ParseError), - #[error("Failed to parse secret URI: {0}")] - ParseSecretURI(String), #[error("The `Repository` property is missing from the template variant")] RepositoryMissing, #[error("Sourcing error {0}")] diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index cd01ca79..69897be3 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,7 @@ pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; -pub use testing::{find_free_port, mock_build_process, new_environment}; +pub use testing::{mock_build_process, new_environment}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_contract_signed, @@ -28,7 +28,6 @@ pub use up::{ upload_contract_signed, upload_smart_contract, ContractInfo, UpOpts, }; pub use utils::{ - helpers::parse_account, metadata::{get_messages, ContractFunction}, - signer::parse_hex_bytes, + parse_account, parse_hex_bytes, }; diff --git a/crates/pop-contracts/src/new.rs b/crates/pop-contracts/src/new.rs index 8e11fbd1..6d4d7f12 100644 --- a/crates/pop-contracts/src/new.rs +++ b/crates/pop-contracts/src/new.rs @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::{errors::Error, utils::helpers::canonicalized_path, Contract}; +use crate::{errors::Error, utils::canonicalized_path, Contract}; use anyhow::Result; use contract_build::new_contract_project; use heck::ToUpperCamelCase; diff --git a/crates/pop-contracts/src/node/mod.rs b/crates/pop-contracts/src/node/mod.rs index 77ac97cd..be5680a0 100644 --- a/crates/pop-contracts/src/node/mod.rs +++ b/crates/pop-contracts/src/node/mod.rs @@ -166,10 +166,9 @@ fn release_directory_by_target(tag: Option<&str>) -> Result<&'static str, Error> #[cfg(test)] mod tests { - use crate::testing::find_free_port; - use super::*; use anyhow::{Error, Result}; + use pop_common::find_free_port; use std::process::Command; #[tokio::test] diff --git a/crates/pop-contracts/src/testing.rs b/crates/pop-contracts/src/testing.rs index c10bd4e5..6a8abfcd 100644 --- a/crates/pop-contracts/src/testing.rs +++ b/crates/pop-contracts/src/testing.rs @@ -4,7 +4,6 @@ use crate::{create_smart_contract, Contract}; use anyhow::Result; use std::{ fs::{copy, create_dir}, - net::TcpListener, path::Path, }; @@ -38,12 +37,3 @@ where copy(metadata_file, target_contract_dir.join("ink/testing.json"))?; Ok(()) } - -/// Finds an available port by binding to port 0 and retrieving the assigned port. -pub fn find_free_port() -> u16 { - TcpListener::bind("127.0.0.1:0") - .expect("Failed to bind to an available port") - .local_addr() - .expect("Failed to retrieve local address") - .port() -} diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index f9dae9e9..fb163095 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -2,9 +2,9 @@ use crate::{ errors::Error, utils::{ - helpers::{get_manifest_path, parse_balance}, + get_manifest_path, metadata::{process_function_args, FunctionType}, - signer::create_signer, + parse_balance, }, }; use contract_extrinsics::{ @@ -14,6 +14,7 @@ use contract_extrinsics::{ InstantiateExecResult, TokenMetadata, UploadCommandBuilder, UploadExec, UploadResult, WasmCode, }; use ink_env::{DefaultEnvironment, Environment}; +use pop_common::{create_signer, DefaultConfig, Keypair}; use sp_core::{bytes::from_hex, Bytes}; use sp_weights::Weight; use std::{ @@ -23,9 +24,9 @@ use std::{ use subxt::{ blocks::ExtrinsicEvents, tx::{Payload, SubmittableExtrinsic}, - Config, PolkadotConfig as DefaultConfig, SubstrateConfig, + utils::to_hex, + SubstrateConfig, }; -use subxt_signer::sr25519::Keypair; /// Attributes for the `up` command #[derive(Clone, Debug, PartialEq)] @@ -243,7 +244,7 @@ pub async fn submit_signed_payload( match status? { TxStatus::InBestBlock(tx_in_block) | TxStatus::InFinalizedBlock(tx_in_block) => { let events = tx_in_block.wait_for_success().await?; - return Ok(events) + return Ok(events); }, TxStatus::Error { message } => return Err(TransactionError::Error(message).into()), TxStatus::Invalid { message } => return Err(TransactionError::Invalid(message).into()), @@ -381,10 +382,10 @@ mod tests { use super::*; use crate::{ contracts_node_generator, errors::Error, mock_build_process, new_environment, - run_contracts_node, testing::find_free_port, + run_contracts_node, }; use anyhow::Result; - use pop_common::set_executable_permission; + use pop_common::{find_free_port, set_executable_permission}; use std::{env, process::Command, time::Duration}; use tokio::time::sleep; use url::Url; diff --git a/crates/pop-contracts/src/utils/helpers.rs b/crates/pop-contracts/src/utils/helpers.rs deleted file mode 100644 index d0797015..00000000 --- a/crates/pop-contracts/src/utils/helpers.rs +++ /dev/null @@ -1,112 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 - -use crate::errors::Error; -use contract_build::ManifestPath; -use contract_extrinsics::BalanceVariant; -use ink_env::{DefaultEnvironment, Environment}; -use std::{ - path::{Path, PathBuf}, - str::FromStr, -}; -use subxt::{Config, PolkadotConfig as DefaultConfig}; - -pub fn get_manifest_path(path: Option<&Path>) -> Result { - if let Some(path) = path { - let full_path = PathBuf::from(path.to_string_lossy().to_string() + "/Cargo.toml"); - ManifestPath::try_from(Some(full_path)) - .map_err(|e| Error::ManifestPath(format!("Failed to get manifest path: {}", e))) - } else { - ManifestPath::try_from(path.as_ref()) - .map_err(|e| Error::ManifestPath(format!("Failed to get manifest path: {}", e))) - } -} - -pub fn parse_balance( - balance: &str, -) -> Result::Balance>, Error> { - BalanceVariant::from_str(balance).map_err(|e| Error::BalanceParsing(format!("{}", e))) -} - -pub fn parse_account(account: &str) -> Result<::AccountId, Error> { - ::AccountId::from_str(account) - .map_err(|e| Error::AccountAddressParsing(format!("{}", e))) -} - -/// Canonicalizes the given path to ensure consistency and resolve any symbolic links. -/// -/// # Arguments -/// -/// * `target` - A reference to the `Path` to be canonicalized. -pub fn canonicalized_path(target: &Path) -> Result { - // Canonicalize the target path to ensure consistency and resolve any symbolic links. - target - .canonicalize() - // If an I/O error occurs during canonicalization, convert it into an Error enum variant. - .map_err(Error::IO) -} - -#[cfg(test)] -mod tests { - use super::*; - use anyhow::{Error, Result}; - use std::fs; - - fn setup_test_environment() -> Result { - let temp_dir = tempfile::tempdir().expect("Could not create temp dir"); - let temp_contract_dir = temp_dir.path().join("test_contract"); - fs::create_dir(&temp_contract_dir)?; - crate::create_smart_contract( - "test_contract", - temp_contract_dir.as_path(), - &crate::Contract::Standard, - )?; - Ok(temp_dir) - } - - #[test] - fn test_get_manifest_path() -> Result<(), Error> { - let temp_dir = setup_test_environment()?; - get_manifest_path(Some(&PathBuf::from(temp_dir.path().join("test_contract"))))?; - Ok(()) - } - - #[test] - fn test_canonicalized_path() -> Result<(), Error> { - let temp_dir = tempfile::tempdir()?; - // Error case - let error_directory = canonicalized_path(&temp_dir.path().join("my_directory")); - assert!(error_directory.is_err()); - // Success case - canonicalized_path(temp_dir.path())?; - Ok(()) - } - - #[test] - fn parse_balance_works() -> Result<(), Error> { - let balance = parse_balance("100000")?; - assert_eq!(balance, BalanceVariant::Default(100000)); - Ok(()) - } - - #[test] - fn parse_balance_fails_wrong_balance() -> Result<(), Error> { - assert!(matches!(parse_balance("wrongbalance"), Err(super::Error::BalanceParsing(..)))); - Ok(()) - } - - #[test] - fn parse_account_works() -> Result<(), Error> { - let account = parse_account("5CLPm1CeUvJhZ8GCDZCR7nWZ2m3XXe4X5MtAQK69zEjut36A")?; - assert_eq!(account.to_string(), "5CLPm1CeUvJhZ8GCDZCR7nWZ2m3XXe4X5MtAQK69zEjut36A"); - Ok(()) - } - - #[test] - fn parse_account_fails_wrong_value() -> Result<(), Error> { - assert!(matches!( - parse_account("wrongaccount"), - Err(super::Error::AccountAddressParsing(..)) - )); - Ok(()) - } -} diff --git a/crates/pop-contracts/src/utils/metadata.rs b/crates/pop-contracts/src/utils/metadata.rs index 38cdc12d..111468f0 100644 --- a/crates/pop-contracts/src/utils/metadata.rs +++ b/crates/pop-contracts/src/utils/metadata.rs @@ -3,7 +3,8 @@ use crate::errors::Error; use contract_extrinsics::ContractArtifacts; use contract_transcode::ink_metadata::MessageParamSpec; -use scale_info::{form::PortableForm, PortableRegistry, Type, TypeDef, TypeDefPrimitive}; +use pop_common::format_type; +use scale_info::{form::PortableForm, PortableRegistry}; use std::path::Path; /// Describes a parameter. @@ -156,150 +157,6 @@ fn process_args( args } -// Formats a specified type, using the registry to output its full type representation. -fn format_type(ty: &Type, registry: &PortableRegistry) -> String { - let mut name = ty - .path - .segments - .last() - .map(|s| s.to_owned()) - .unwrap_or_else(|| ty.path.to_string()); - - if !ty.type_params.is_empty() { - let params: Vec<_> = ty - .type_params - .iter() - .filter_map(|p| registry.resolve(p.ty.unwrap().id)) - .map(|t| format_type(t, registry)) - .collect(); - name = format!("{name}<{}>", params.join(",")); - } - - name = format!( - "{name}{}", - match &ty.type_def { - TypeDef::Composite(composite) => { - if composite.fields.is_empty() { - return "".to_string(); - } - - let mut named = false; - let fields: Vec<_> = composite - .fields - .iter() - .filter_map(|f| match f.name.as_ref() { - None => registry.resolve(f.ty.id).map(|t| format_type(t, registry)), - Some(field) => { - named = true; - f.type_name.as_ref().map(|t| format!("{field}: {t}")) - }, - }) - .collect(); - match named { - true => format!(" {{ {} }}", fields.join(", ")), - false => format!(" ({})", fields.join(", ")), - } - }, - TypeDef::Variant(variant) => { - let variants: Vec<_> = variant - .variants - .iter() - .map(|v| { - if v.fields.is_empty() { - return v.name.clone(); - } - - let name = v.name.as_str(); - let mut named = false; - let fields: Vec<_> = v - .fields - .iter() - .filter_map(|f| match f.name.as_ref() { - None => registry.resolve(f.ty.id).map(|t| format_type(t, registry)), - Some(field) => { - named = true; - f.type_name.as_ref().map(|t| format!("{field}: {t}")) - }, - }) - .collect(); - format!( - "{name}{}", - match named { - true => format!("{{ {} }}", fields.join(", ")), - false => format!("({})", fields.join(", ")), - } - ) - }) - .collect(); - format!(": {}", variants.join(", ")) - }, - TypeDef::Sequence(sequence) => { - format!( - "[{}]", - format_type( - registry.resolve(sequence.type_param.id).expect("sequence type not found"), - registry - ) - ) - }, - TypeDef::Array(array) => { - format!( - "[{};{}]", - format_type( - registry.resolve(array.type_param.id).expect("array type not found"), - registry - ), - array.len - ) - }, - TypeDef::Tuple(tuple) => { - let fields: Vec<_> = tuple - .fields - .iter() - .filter_map(|p| registry.resolve(p.id)) - .map(|t| format_type(t, registry)) - .collect(); - format!("({})", fields.join(",")) - }, - TypeDef::Primitive(primitive) => { - use TypeDefPrimitive::*; - match primitive { - Bool => "bool", - Char => "char", - Str => "str", - U8 => "u8", - U16 => "u16", - U32 => "u32", - U64 => "u64", - U128 => "u128", - U256 => "u256", - I8 => "i8", - I16 => "i16", - I32 => "i32", - I64 => "i64", - I128 => "i128", - I256 => "i256", - } - .to_string() - }, - TypeDef::Compact(compact) => { - format!( - "Compact<{}>", - format_type( - registry.resolve(compact.type_param.id).expect("compact type not found"), - registry - ) - ) - }, - TypeDef::BitSequence(_) => { - unimplemented!("bit sequence not currently supported") - }, - } - ); - - name -} - /// Processes a list of argument values for a specified contract function, /// wrapping each value in `Some(...)` or replacing it with `None` if the argument is optional. /// diff --git a/crates/pop-contracts/src/utils/mod.rs b/crates/pop-contracts/src/utils/mod.rs index ad49e2dc..a3a99323 100644 --- a/crates/pop-contracts/src/utils/mod.rs +++ b/crates/pop-contracts/src/utils/mod.rs @@ -1,5 +1,149 @@ // SPDX-License-Identifier: GPL-3.0 -pub mod helpers; +use crate::errors::Error; +use contract_build::{util::decode_hex, ManifestPath}; +use contract_extrinsics::BalanceVariant; +use ink_env::{DefaultEnvironment, Environment}; +use pop_common::{Config, DefaultConfig}; +use sp_core::Bytes; +use std::{ + path::{Path, PathBuf}, + str::FromStr, +}; + pub mod metadata; -pub mod signer; + +/// Retrieves the manifest path for a contract project. +/// +/// # Arguments +/// * `path` - An optional path to the project directory. +pub fn get_manifest_path(path: Option<&Path>) -> Result { + if let Some(path) = path { + let full_path = PathBuf::from(path.to_string_lossy().to_string() + "/Cargo.toml"); + ManifestPath::try_from(Some(full_path)) + .map_err(|e| Error::ManifestPath(format!("Failed to get manifest path: {}", e))) + } else { + ManifestPath::try_from(path.as_ref()) + .map_err(|e| Error::ManifestPath(format!("Failed to get manifest path: {}", e))) + } +} + +/// Parses a balance value from a string representation. +/// +/// # Arguments +/// * `balance` - A string representing the balance value to parse. +pub fn parse_balance( + balance: &str, +) -> Result::Balance>, Error> { + BalanceVariant::from_str(balance).map_err(|e| Error::BalanceParsing(format!("{}", e))) +} + +/// Parses an account ID from its string representation. +/// +/// # Arguments +/// * `account` - A string representing the account ID to parse. +pub fn parse_account(account: &str) -> Result<::AccountId, Error> { + ::AccountId::from_str(account) + .map_err(|e| Error::AccountAddressParsing(format!("{}", e))) +} + +/// Parse hex encoded bytes. +/// +/// # Arguments +/// * `input` - A string containing hex-encoded bytes. +pub fn parse_hex_bytes(input: &str) -> Result { + let bytes = decode_hex(input).map_err(|e| Error::HexParsing(format!("{}", e)))?; + Ok(bytes.into()) +} + +/// Canonicalizes the given path to ensure consistency and resolve any symbolic links. +/// +/// # Arguments +/// * `target` - A reference to the `Path` to be canonicalized. +pub fn canonicalized_path(target: &Path) -> Result { + // Canonicalize the target path to ensure consistency and resolve any symbolic links. + target + .canonicalize() + // If an I/O error occurs during canonicalization, convert it into an Error enum variant. + .map_err(Error::IO) +} + +#[cfg(test)] +mod tests { + use super::*; + use anyhow::Result; + use std::fs; + + fn setup_test_environment() -> Result { + let temp_dir = tempfile::tempdir().expect("Could not create temp dir"); + let temp_contract_dir = temp_dir.path().join("test_contract"); + fs::create_dir(&temp_contract_dir)?; + crate::create_smart_contract( + "test_contract", + temp_contract_dir.as_path(), + &crate::Contract::Standard, + )?; + Ok(temp_dir) + } + + #[test] + fn test_get_manifest_path() -> Result<(), Error> { + let temp_dir = setup_test_environment()?; + get_manifest_path(Some(&PathBuf::from(temp_dir.path().join("test_contract"))))?; + Ok(()) + } + + #[test] + fn test_canonicalized_path() -> Result<(), Error> { + let temp_dir = tempfile::tempdir()?; + // Error case + let error_directory = canonicalized_path(&temp_dir.path().join("my_directory")); + assert!(error_directory.is_err()); + // Success case + canonicalized_path(temp_dir.path())?; + Ok(()) + } + + #[test] + fn parse_balance_works() -> Result<(), Error> { + let balance = parse_balance("100000")?; + assert_eq!(balance, BalanceVariant::Default(100000)); + Ok(()) + } + + #[test] + fn parse_balance_fails_wrong_balance() -> Result<(), Error> { + assert!(matches!(parse_balance("wrongbalance"), Err(super::Error::BalanceParsing(..)))); + Ok(()) + } + + #[test] + fn parse_account_works() -> Result<(), Error> { + let account = parse_account("5CLPm1CeUvJhZ8GCDZCR7nWZ2m3XXe4X5MtAQK69zEjut36A")?; + assert_eq!(account.to_string(), "5CLPm1CeUvJhZ8GCDZCR7nWZ2m3XXe4X5MtAQK69zEjut36A"); + Ok(()) + } + + #[test] + fn parse_account_fails_wrong_value() -> Result<(), Error> { + assert!(matches!( + parse_account("wrongaccount"), + Err(super::Error::AccountAddressParsing(..)) + )); + Ok(()) + } + + #[test] + fn parse_hex_bytes_works() -> Result<(), Error> { + let input_in_hex = "48656c6c6f"; + let result = parse_hex_bytes(input_in_hex)?; + assert_eq!(result, Bytes(vec![72, 101, 108, 108, 111])); + Ok(()) + } + + #[test] + fn parse_hex_bytes_fails_wrong_input() -> Result<()> { + assert!(matches!(parse_hex_bytes("wronghexvalue"), Err(Error::HexParsing(..)))); + Ok(()) + } +} diff --git a/crates/pop-parachains/Cargo.toml b/crates/pop-parachains/Cargo.toml index dd640682..64bef2d6 100644 --- a/crates/pop-parachains/Cargo.toml +++ b/crates/pop-parachains/Cargo.toml @@ -24,8 +24,12 @@ tokio.workspace = true url.workspace = true askama.workspace = true +hex.workspace = true indexmap.workspace = true reqwest.workspace = true +scale-info.workspace = true +scale-value.workspace = true +subxt.workspace = true symlink.workspace = true toml_edit.workspace = true walkdir.workspace = true diff --git a/crates/pop-parachains/src/call/metadata/action.rs b/crates/pop-parachains/src/call/metadata/action.rs new file mode 100644 index 00000000..cd47e127 --- /dev/null +++ b/crates/pop-parachains/src/call/metadata/action.rs @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: GPL-3.0 + +use super::{find_dispatchable_by_name, Pallet}; +use strum::{EnumMessage as _, EnumProperty as _, VariantArray as _}; +use strum_macros::{AsRefStr, Display, EnumMessage, EnumProperty, EnumString, VariantArray}; + +/// Enum representing various predefined actions supported. +#[derive( + AsRefStr, + Clone, + Debug, + Display, + EnumMessage, + EnumString, + EnumProperty, + Eq, + Hash, + PartialEq, + VariantArray, +)] +pub enum Action { + /// Transfer balance. + #[strum( + serialize = "transfer", + message = "transfer_allow_death", + detailed_message = "Transfer balance", + props(Pallet = "Balances") + )] + Transfer, + /// Create an asset. + #[strum( + serialize = "create", + message = "create", + detailed_message = "Create an asset", + props(Pallet = "Assets") + )] + CreateAsset, + /// Mint an asset. + #[strum( + serialize = "mint", + message = "mint", + detailed_message = "Mint an asset", + props(Pallet = "Assets") + )] + MintAsset, + /// Create an NFT collection. + #[strum( + serialize = "create_nft", + message = "create", + detailed_message = "Create an NFT collection", + props(Pallet = "Nfts") + )] + CreateCollection, + /// Mint an NFT. + #[strum( + serialize = "mint_nft", + message = "mint", + detailed_message = "Mint an NFT", + props(Pallet = "Nfts") + )] + MintNFT, + /// Purchase on-demand coretime. + #[strum( + serialize = "place_order_allow_death", + message = "place_order_allow_death", + detailed_message = "Purchase on-demand coretime", + props(Pallet = "OnDemand") + )] + PurchaseOnDemandCoretime, + /// Reserve a parachain ID. + #[strum( + serialize = "reserve", + message = "reserve", + detailed_message = "Reserve a parachain ID", + props(Pallet = "Registrar") + )] + Reserve, + /// Register a parachain ID with genesis state and code. + #[strum( + serialize = "register", + message = "register", + detailed_message = "Register a parachain ID with genesis state and code", + props(Pallet = "Registrar") + )] + Register, +} + +impl Action { + /// Get the description of the action. + pub fn description(&self) -> &str { + self.get_detailed_message().unwrap_or_default() + } + + /// Get the dispatchable function name corresponding to the action. + pub fn function_name(&self) -> &str { + self.get_message().unwrap_or_default() + } + + /// Get the associated pallet name for the action. + pub fn pallet_name(&self) -> &str { + self.get_str("Pallet").unwrap_or_default() + } +} + +/// Fetch the list of supported actions based on available pallets. +/// +/// # Arguments +/// * `pallets`: Supported pallets. +pub fn supported_actions(pallets: &[Pallet]) -> Vec { + let mut actions = Vec::new(); + for action in Action::VARIANTS.iter() { + if find_dispatchable_by_name(pallets, action.pallet_name(), action.function_name()).is_ok() + { + actions.push(action.clone()); + } + } + actions +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{call::tests::POP_NETWORK_TESTNET_URL, parse_chain_metadata, set_up_client}; + use anyhow::Result; + use std::collections::HashMap; + + const POLKADOT_NETWORK_URL: &str = "wss://polkadot-rpc.publicnode.com"; + + #[test] + fn action_descriptions_are_correct() { + let descriptions = HashMap::from([ + (Action::CreateAsset, "Create an asset"), + (Action::MintAsset, "Mint an asset"), + (Action::CreateCollection, "Create an NFT collection"), + (Action::MintNFT, "Mint an NFT"), + (Action::PurchaseOnDemandCoretime, "Purchase on-demand coretime"), + (Action::Transfer, "Transfer balance"), + (Action::Register, "Register a parachain ID with genesis state and code"), + (Action::Reserve, "Reserve a parachain ID"), + ]); + + for action in Action::VARIANTS.iter() { + assert_eq!(&action.description(), descriptions.get(action).unwrap()); + } + } + + #[test] + fn pallet_names_are_correct() { + let pallets = HashMap::from([ + (Action::CreateAsset, "Assets"), + (Action::MintAsset, "Assets"), + (Action::CreateCollection, "Nfts"), + (Action::MintNFT, "Nfts"), + (Action::PurchaseOnDemandCoretime, "OnDemand"), + (Action::Transfer, "Balances"), + (Action::Register, "Registrar"), + (Action::Reserve, "Registrar"), + ]); + + for action in Action::VARIANTS.iter() { + assert_eq!(&action.pallet_name(), pallets.get(action).unwrap(),); + } + } + + #[test] + fn function_names_are_correct() { + let pallets = HashMap::from([ + (Action::CreateAsset, "create"), + (Action::MintAsset, "mint"), + (Action::CreateCollection, "create"), + (Action::MintNFT, "mint"), + (Action::PurchaseOnDemandCoretime, "place_order_allow_death"), + (Action::Transfer, "transfer_allow_death"), + (Action::Register, "register"), + (Action::Reserve, "reserve"), + ]); + + for action in Action::VARIANTS.iter() { + assert_eq!(&action.function_name(), pallets.get(action).unwrap(),); + } + } + + #[tokio::test] + async fn supported_actions_works() -> Result<()> { + // Test Pop Parachain. + let mut client: subxt::OnlineClient = + set_up_client(POP_NETWORK_TESTNET_URL).await?; + let mut actions = supported_actions(&parse_chain_metadata(&client)?); + assert_eq!(actions.len(), 5); + assert_eq!(actions[0], Action::Transfer); + assert_eq!(actions[1], Action::CreateAsset); + assert_eq!(actions[2], Action::MintAsset); + assert_eq!(actions[3], Action::CreateCollection); + assert_eq!(actions[4], Action::MintNFT); + + // Test Polkadot Relay Chain. + client = set_up_client(POLKADOT_NETWORK_URL).await?; + actions = supported_actions(&parse_chain_metadata(&client)?); + assert_eq!(actions.len(), 4); + assert_eq!(actions[0], Action::Transfer); + assert_eq!(actions[1], Action::PurchaseOnDemandCoretime); + assert_eq!(actions[2], Action::Reserve); + assert_eq!(actions[3], Action::Register); + + Ok(()) + } +} diff --git a/crates/pop-parachains/src/call/metadata/mod.rs b/crates/pop-parachains/src/call/metadata/mod.rs new file mode 100644 index 00000000..1f53f523 --- /dev/null +++ b/crates/pop-parachains/src/call/metadata/mod.rs @@ -0,0 +1,334 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::errors::Error; +use params::Param; +use scale_value::stringify::custom_parsers; +use std::fmt::{Display, Formatter}; +use subxt::{dynamic::Value, Metadata, OnlineClient, SubstrateConfig}; + +pub mod action; +pub mod params; + +/// Represents a pallet in the blockchain, including its dispatchable functions. +#[derive(Clone, Debug, Default, Eq, PartialEq)] +pub struct Pallet { + /// The name of the pallet. + pub name: String, + /// The index of the pallet within the runtime. + pub index: u8, + /// The documentation of the pallet. + pub docs: String, + /// The dispatchable functions of the pallet. + pub functions: Vec, +} + +impl Display for Pallet { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.name) + } +} + +/// Represents a dispatchable function. +#[derive(Clone, Debug, Default, Eq, PartialEq)] +pub struct Function { + /// The pallet containing the dispatchable function. + pub pallet: String, + /// The name of the function. + pub name: String, + /// The index of the function within the pallet. + pub index: u8, + /// The documentation of the function. + pub docs: String, + /// The parameters of the function. + pub params: Vec, + /// Whether this function is supported (no recursive or unsupported types like `RuntimeCall`). + pub is_supported: bool, +} + +impl Display for Function { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.name) + } +} + +/// Parses the chain metadata to extract information about pallets and their dispatchable functions. +/// +/// # Arguments +/// * `client`: The client to interact with the chain. +/// +/// NOTE: pallets are ordered by their index within the runtime by default. +pub fn parse_chain_metadata(client: &OnlineClient) -> Result, Error> { + let metadata: Metadata = client.metadata(); + + let pallets = metadata + .pallets() + .map(|pallet| { + let functions = pallet + .call_variants() + .map(|variants| { + variants + .iter() + .map(|variant| { + let mut is_supported = true; + + // Parse parameters for the dispatchable function. + let params = { + let mut parsed_params = Vec::new(); + for field in &variant.fields { + match params::field_to_param(&metadata, field) { + Ok(param) => parsed_params.push(param), + Err(_) => { + // If an error occurs while parsing the values, mark the + // dispatchable function as unsupported rather than + // error. + is_supported = false; + parsed_params.clear(); + break; + }, + } + } + parsed_params + }; + + Ok(Function { + pallet: pallet.name().to_string(), + name: variant.name.clone(), + index: variant.index, + docs: if is_supported { + // Filter out blank lines and then flatten into a single value. + variant + .docs + .iter() + .filter(|l| !l.is_empty()) + .cloned() + .collect::>() + .join(" ") + } else { + // To display the message in the UI + "Function Not Supported".to_string() + }, + params, + is_supported, + }) + }) + .collect::, Error>>() + }) + .unwrap_or_else(|| Ok(vec![]))?; + + Ok(Pallet { + name: pallet.name().to_string(), + index: pallet.index(), + docs: pallet.docs().join(" "), + functions, + }) + }) + .collect::, Error>>()?; + + Ok(pallets) +} + +/// Finds a specific pallet by name and retrieves its details from metadata. +/// +/// # Arguments +/// * `pallets`: List of pallets available within the chain's runtime. +/// * `pallet_name`: The name of the pallet to find. +pub fn find_pallet_by_name<'a>( + pallets: &'a [Pallet], + pallet_name: &str, +) -> Result<&'a Pallet, Error> { + if let Some(pallet) = pallets.iter().find(|p| p.name == pallet_name) { + Ok(pallet) + } else { + Err(Error::PalletNotFound(pallet_name.to_string())) + } +} + +/// Finds a specific dispatchable function by name and retrieves its details from metadata. +/// +/// # Arguments +/// * `pallets`: List of pallets available within the chain's runtime. +/// * `pallet_name`: The name of the pallet. +/// * `function_name`: Name of the dispatchable function to locate. +pub fn find_dispatchable_by_name<'a>( + pallets: &'a [Pallet], + pallet_name: &str, + function_name: &str, +) -> Result<&'a Function, Error> { + let pallet = find_pallet_by_name(pallets, pallet_name)?; + if let Some(function) = pallet.functions.iter().find(|&e| e.name == function_name) { + Ok(function) + } else { + Err(Error::FunctionNotSupported) + } +} + +/// Parses and processes raw string parameter values for a dispatchable function, mapping them to +/// `Value` types. +/// +/// # Arguments +/// * `params`: The metadata definition for each parameter of the corresponding dispatchable +/// function. +/// * `raw_params`: A vector of raw string arguments for the dispatchable function. +pub fn parse_dispatchable_arguments( + params: &[Param], + raw_params: Vec, +) -> Result, Error> { + params + .iter() + .zip(raw_params) + .map(|(param, raw_param)| { + // Convert sequence parameters to hex if is_sequence + let processed_param = if param.is_sequence && !raw_param.starts_with("0x") { + format!("0x{}", hex::encode(raw_param)) + } else { + raw_param + }; + scale_value::stringify::from_str_custom() + .add_custom_parser(custom_parsers::parse_hex) + .add_custom_parser(custom_parsers::parse_ss58) + .parse(&processed_param) + .0 + .map_err(|_| Error::ParamProcessingError) + }) + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + use crate::{call::tests::POP_NETWORK_TESTNET_URL, set_up_client}; + use anyhow::Result; + use subxt::ext::scale_bits; + + #[tokio::test] + async fn parse_chain_metadata_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + // Test the first pallet is parsed correctly + let first_pallet = pallets.first().unwrap(); + assert_eq!(first_pallet.name, "System"); + assert_eq!(first_pallet.index, 0); + assert_eq!(first_pallet.docs, ""); + assert_eq!(first_pallet.functions.len(), 11); + let first_function = first_pallet.functions.first().unwrap(); + assert_eq!(first_function.name, "remark"); + assert_eq!(first_function.index, 0); + assert_eq!( + first_function.docs, + "Make some on-chain remark. Can be executed by every `origin`." + ); + assert!(first_function.is_supported); + assert_eq!(first_function.params.first().unwrap().name, "remark"); + assert_eq!(first_function.params.first().unwrap().type_name, "[u8]"); + assert_eq!(first_function.params.first().unwrap().sub_params.len(), 0); + assert!(!first_function.params.first().unwrap().is_optional); + assert!(!first_function.params.first().unwrap().is_tuple); + assert!(!first_function.params.first().unwrap().is_variant); + assert!(first_function.params.first().unwrap().is_sequence); + Ok(()) + } + + #[tokio::test] + async fn find_pallet_by_name_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + assert!(matches!( + find_pallet_by_name(&pallets, "WrongName"), + Err(Error::PalletNotFound(pallet)) if pallet == "WrongName".to_string())); + let pallet = find_pallet_by_name(&pallets, "Balances")?; + assert_eq!(pallet.name, "Balances"); + assert_eq!(pallet.functions.len(), 9); + Ok(()) + } + + #[tokio::test] + async fn find_dispatchable_by_name_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + assert!(matches!( + find_dispatchable_by_name(&pallets, "WrongName", "wrong_name"), + Err(Error::PalletNotFound(pallet)) if pallet == "WrongName".to_string())); + assert!(matches!( + find_dispatchable_by_name(&pallets, "Balances", "wrong_name"), + Err(Error::FunctionNotSupported) + )); + let function = find_dispatchable_by_name(&pallets, "Balances", "force_transfer")?; + assert_eq!(function.name, "force_transfer"); + assert_eq!(function.docs, "Exactly as `transfer_allow_death`, except the origin must be root and the source account may be specified."); + assert_eq!(function.is_supported, true); + assert_eq!(function.params.len(), 3); + Ok(()) + } + + #[test] + fn parse_dispatchable_arguments_works() -> Result<()> { + // Values for testing from: https://docs.rs/scale-value/0.18.0/scale_value/stringify/fn.from_str.html + // and https://docs.rs/scale-value/0.18.0/scale_value/stringify/fn.from_str_custom.html + let args = [ + "1".to_string(), + "-1".to_string(), + "true".to_string(), + "'a'".to_string(), + "\"hi\"".to_string(), + "{ a: true, b: \"hello\" }".to_string(), + "MyVariant { a: true, b: \"hello\" }".to_string(), + "<0101>".to_string(), + "(1,2,0x030405)".to_string(), + r#"{ + name: "Alice", + address: 5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty + }"# + .to_string(), + ] + .to_vec(); + let addr: Vec<_> = + hex::decode("8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48") + .unwrap() + .into_iter() + .map(|b| Value::u128(b as u128)) + .collect(); + // Define mock dispatchable function parameters for testing. + let params = vec![ + Param { type_name: "u128".to_string(), ..Default::default() }, + Param { type_name: "i128".to_string(), ..Default::default() }, + Param { type_name: "bool".to_string(), ..Default::default() }, + Param { type_name: "char".to_string(), ..Default::default() }, + Param { type_name: "string".to_string(), ..Default::default() }, + Param { type_name: "compostie".to_string(), ..Default::default() }, + Param { type_name: "variant".to_string(), is_variant: true, ..Default::default() }, + Param { type_name: "bit_sequence".to_string(), ..Default::default() }, + Param { type_name: "tuple".to_string(), is_tuple: true, ..Default::default() }, + Param { type_name: "composite".to_string(), ..Default::default() }, + ]; + assert_eq!( + parse_dispatchable_arguments(¶ms, args)?, + [ + Value::u128(1), + Value::i128(-1), + Value::bool(true), + Value::char('a'), + Value::string("hi"), + Value::named_composite(vec![ + ("a", Value::bool(true)), + ("b", Value::string("hello")) + ]), + Value::named_variant( + "MyVariant", + vec![("a", Value::bool(true)), ("b", Value::string("hello"))] + ), + Value::bit_sequence(scale_bits::Bits::from_iter([false, true, false, true])), + Value::unnamed_composite(vec![ + Value::u128(1), + Value::u128(2), + Value::unnamed_composite(vec![Value::u128(3), Value::u128(4), Value::u128(5),]) + ]), + Value::named_composite(vec![ + ("name", Value::string("Alice")), + ("address", Value::unnamed_composite(addr)) + ]) + ] + ); + Ok(()) + } +} diff --git a/crates/pop-parachains/src/call/metadata/params.rs b/crates/pop-parachains/src/call/metadata/params.rs new file mode 100644 index 00000000..9d8521f9 --- /dev/null +++ b/crates/pop-parachains/src/call/metadata/params.rs @@ -0,0 +1,238 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::errors::Error; +use pop_common::format_type; +use scale_info::{form::PortableForm, Field, PortableRegistry, TypeDef}; +use subxt::Metadata; + +/// Describes a parameter of a dispatchable function. +#[derive(Clone, Debug, Default, Eq, PartialEq)] +pub struct Param { + /// The name of the parameter. + pub name: String, + /// The type of the parameter. + pub type_name: String, + /// Nested parameters for composite, variants, types or tuples. + pub sub_params: Vec, + /// Indicates if the parameter is optional (`Option`). + pub is_optional: bool, + /// Indicates if the parameter is a Tuple. + pub is_tuple: bool, + /// Indicates if the parameter is a Variant. + pub is_variant: bool, + /// Indicates if the parameter is a Sequence. + pub is_sequence: bool, +} + +/// Transforms a metadata field into its `Param` representation. +/// +/// # Arguments +/// * `metadata`: The chain metadata. +/// * `field`: A parameter of a dispatchable function (as [Field]). +pub fn field_to_param(metadata: &Metadata, field: &Field) -> Result { + let registry = metadata.types(); + if let Some(name) = field.type_name.as_deref() { + if name.contains("RuntimeCall") { + return Err(Error::FunctionNotSupported); + } + } + let name = field.name.as_deref().unwrap_or("Unnamed"); //It can be unnamed field + type_to_param(name, registry, field.ty.id) +} + +/// Converts a type's metadata into a `Param` representation. +/// +/// # Arguments +/// * `name`: The name of the parameter. +/// * `registry`: Type registry containing all types used in the metadata. +/// * `type_id`: The ID of the type to be converted. +fn type_to_param(name: &str, registry: &PortableRegistry, type_id: u32) -> Result { + let type_info = registry + .resolve(type_id) + .ok_or_else(|| Error::MetadataParsingError(name.to_string()))?; + for param in &type_info.type_params { + if param.name.contains("RuntimeCall") { + return Err(Error::FunctionNotSupported); + } + } + if type_info.path.segments == ["Option"] { + if let Some(sub_type_id) = type_info.type_params.first().and_then(|param| param.ty) { + // Recursive for the sub parameters + let sub_param = type_to_param(name, registry, sub_type_id.id)?; + Ok(Param { + name: name.to_string(), + type_name: sub_param.type_name, + sub_params: sub_param.sub_params, + is_optional: true, + ..Default::default() + }) + } else { + Err(Error::MetadataParsingError(name.to_string())) + } + } else { + // Determine the formatted type name. + let type_name = format_type(type_info, registry); + match &type_info.type_def { + TypeDef::Primitive(_) | TypeDef::Array(_) | TypeDef::Compact(_) => + Ok(Param { name: name.to_string(), type_name, ..Default::default() }), + TypeDef::Composite(composite) => { + let sub_params = composite + .fields + .iter() + .map(|field| { + // Recursive for the sub parameters of composite type. + type_to_param(field.name.as_deref().unwrap_or(name), registry, field.ty.id) + }) + .collect::, Error>>()?; + + Ok(Param { name: name.to_string(), type_name, sub_params, ..Default::default() }) + }, + TypeDef::Variant(variant) => { + let variant_params = variant + .variants + .iter() + .map(|variant_param| { + let variant_sub_params = variant_param + .fields + .iter() + .map(|field| { + // Recursive for the sub parameters of variant type. + type_to_param( + field.name.as_deref().unwrap_or(&variant_param.name), + registry, + field.ty.id, + ) + }) + .collect::, Error>>()?; + Ok(Param { + name: variant_param.name.clone(), + type_name: "".to_string(), + sub_params: variant_sub_params, + is_variant: true, + ..Default::default() + }) + }) + .collect::, Error>>()?; + + Ok(Param { + name: name.to_string(), + type_name, + sub_params: variant_params, + is_variant: true, + ..Default::default() + }) + }, + TypeDef::Sequence(_) => Ok(Param { + name: name.to_string(), + type_name, + is_sequence: true, + ..Default::default() + }), + TypeDef::Tuple(tuple) => { + let sub_params = tuple + .fields + .iter() + .enumerate() + .map(|(index, field_id)| { + type_to_param( + &format!("Index {index} of the tuple {name}"), + registry, + field_id.id, + ) + }) + .collect::, Error>>()?; + + Ok(Param { + name: name.to_string(), + type_name, + sub_params, + is_tuple: true, + ..Default::default() + }) + }, + _ => Err(Error::MetadataParsingError(name.to_string())), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{call::tests::POP_NETWORK_TESTNET_URL, set_up_client}; + use anyhow::Result; + + #[tokio::test] + async fn field_to_param_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let metadata = client.metadata(); + // Test a supported dispatchable function. + let function = metadata + .pallet_by_name("Balances") + .unwrap() + .call_variant_by_name("force_transfer") + .unwrap(); + let mut params = Vec::new(); + for field in &function.fields { + params.push(field_to_param(&metadata, field)?) + } + assert_eq!(params.len(), 3); + assert_eq!(params.first().unwrap().name, "source"); + assert_eq!(params.first().unwrap().type_name, "MultiAddress: Id(AccountId32 ([u8;32])), Index(Compact<()>), Raw([u8]), Address32([u8;32]), Address20([u8;20])"); + assert_eq!(params.first().unwrap().sub_params.len(), 5); + assert_eq!(params.first().unwrap().sub_params.first().unwrap().name, "Id"); + assert_eq!(params.first().unwrap().sub_params.first().unwrap().type_name, ""); + assert_eq!( + params + .first() + .unwrap() + .sub_params + .first() + .unwrap() + .sub_params + .first() + .unwrap() + .name, + "Id" + ); + assert_eq!( + params + .first() + .unwrap() + .sub_params + .first() + .unwrap() + .sub_params + .first() + .unwrap() + .type_name, + "AccountId32 ([u8;32])" + ); + // Test some dispatchable functions that are not supported. + let function = + metadata.pallet_by_name("Sudo").unwrap().call_variant_by_name("sudo").unwrap(); + assert!(matches!( + field_to_param(&metadata, &function.fields.first().unwrap()), + Err(Error::FunctionNotSupported) + )); + let function = metadata + .pallet_by_name("Utility") + .unwrap() + .call_variant_by_name("batch") + .unwrap(); + assert!(matches!( + field_to_param(&metadata, &function.fields.first().unwrap()), + Err(Error::FunctionNotSupported) + )); + let function = metadata + .pallet_by_name("PolkadotXcm") + .unwrap() + .call_variant_by_name("execute") + .unwrap(); + assert!(matches!( + field_to_param(&metadata, &function.fields.first().unwrap()), + Err(Error::FunctionNotSupported) + )); + + Ok(()) + } +} diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs new file mode 100644 index 00000000..be9b4f69 --- /dev/null +++ b/crates/pop-parachains/src/call/mod.rs @@ -0,0 +1,241 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::{errors::Error, Function}; +use pop_common::create_signer; +use subxt::{ + dynamic::Value, + tx::{DynamicPayload, Payload}, + OnlineClient, SubstrateConfig, +}; + +pub mod metadata; + +/// Sets up an [OnlineClient] instance for connecting to a blockchain. +/// +/// # Arguments +/// * `url` - Endpoint of the node. +pub async fn set_up_client(url: &str) -> Result, Error> { + OnlineClient::::from_url(url) + .await + .map_err(|e| Error::ConnectionFailure(e.to_string())) +} + +/// Constructs a dynamic extrinsic payload for a specified dispatchable function. +/// +/// # Arguments +/// * `function` - A dispatchable function. +/// * `args` - A vector of string arguments to be passed to construct the extrinsic. +pub fn construct_extrinsic( + function: &Function, + args: Vec, +) -> Result { + let parsed_args: Vec = metadata::parse_dispatchable_arguments(&function.params, args)?; + Ok(subxt::dynamic::tx(function.pallet.clone(), function.name.clone(), parsed_args)) +} + +/// Constructs a Sudo extrinsic. +/// +/// # Arguments +/// * `xt`: The extrinsic representing the dispatchable function call to be dispatched with `Root` +/// privileges. +pub fn construct_sudo_extrinsic(xt: DynamicPayload) -> Result { + Ok(subxt::dynamic::tx("Sudo", "sudo", [xt.into_value()].to_vec())) +} + +/// Signs and submits a given extrinsic. +/// +/// # Arguments +/// * `client` - The client used to interact with the chain. +/// * `xt` - The extrinsic to be signed and submitted. +/// * `suri` - The secret URI (e.g., mnemonic or private key) for signing the extrinsic. +pub async fn sign_and_submit_extrinsic( + client: &OnlineClient, + xt: DynamicPayload, + suri: &str, +) -> Result { + let signer = create_signer(suri)?; + let result = client + .tx() + .sign_and_submit_then_watch_default(&xt, &signer) + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))? + .wait_for_finalized_success() + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))?; + Ok(format!("{:?}", result.extrinsic_hash())) +} + +/// Encodes the call data for a given extrinsic into a hexadecimal string. +/// +/// # Arguments +/// * `client` - The client used to interact with the chain. +/// * `xt` - The extrinsic whose call data will be encoded and returned. +pub fn encode_call_data( + client: &OnlineClient, + xt: &DynamicPayload, +) -> Result { + let call_data = xt + .encode_call_data(&client.metadata()) + .map_err(|e| Error::CallDataEncodingError(e.to_string()))?; + Ok(format!("0x{}", hex::encode(call_data))) +} + +/// Decodes a hex-encoded string into a vector of bytes representing the call data. +/// +/// # Arguments +/// * `call_data` - The hex-encoded string representing call data. +pub fn decode_call_data(call_data: &str) -> Result, Error> { + hex::decode(call_data.trim_start_matches("0x")) + .map_err(|e| Error::CallDataDecodingError(e.to_string())) +} + +// This struct implements the [`Payload`] trait and is used to submit +// pre-encoded SCALE call data directly, without the dynamic construction of transactions. +struct CallData(Vec); + +impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } +} + +/// Signs and submits a given extrinsic. +/// +/// # Arguments +/// * `client` - Reference to an `OnlineClient` connected to the chain. +/// * `call_data` - SCALE encoded bytes representing the extrinsic's call data. +/// * `suri` - The secret URI (e.g., mnemonic or private key) for signing the extrinsic. +pub async fn sign_and_submit_extrinsic_with_call_data( + client: &OnlineClient, + call_data: Vec, + suri: &str, +) -> Result { + let signer = create_signer(suri)?; + let payload = CallData(call_data); + let result = client + .tx() + .sign_and_submit_then_watch_default(&payload, &signer) + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))? + .wait_for_finalized_success() + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))?; + Ok(format!("{:?}", result.extrinsic_hash())) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{find_dispatchable_by_name, parse_chain_metadata, set_up_client}; + use anyhow::Result; + + const ALICE_SURI: &str = "//Alice"; + pub(crate) const POP_NETWORK_TESTNET_URL: &str = "wss://rpc1.paseo.popnetwork.xyz"; + + #[tokio::test] + async fn set_up_client_works() -> Result<()> { + assert!(matches!( + set_up_client("wss://wronguri.xyz").await, + Err(Error::ConnectionFailure(_)) + )); + set_up_client(POP_NETWORK_TESTNET_URL).await?; + Ok(()) + } + + #[tokio::test] + async fn construct_extrinsic_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + let transfer_allow_death = + find_dispatchable_by_name(&pallets, "Balances", "transfer_allow_death")?; + + // Wrong parameters + assert!(matches!( + construct_extrinsic( + &transfer_allow_death, + vec![ALICE_SURI.to_string(), "100".to_string()], + ), + Err(Error::ParamProcessingError) + )); + // Valid parameters + let xt = construct_extrinsic( + &transfer_allow_death, + vec![ + "Id(5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty)".to_string(), + "100".to_string(), + ], + )?; + assert_eq!(xt.call_name(), "transfer_allow_death"); + assert_eq!(xt.pallet_name(), "Balances"); + Ok(()) + } + + #[tokio::test] + async fn encode_call_data_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + let remark = find_dispatchable_by_name(&pallets, "System", "remark")?; + let xt = construct_extrinsic(&remark, vec!["0x11".to_string()])?; + assert_eq!(encode_call_data(&client, &xt)?, "0x00000411"); + let xt = construct_extrinsic(&remark, vec!["123".to_string()])?; + assert_eq!(encode_call_data(&client, &xt)?, "0x00000c313233"); + let xt = construct_extrinsic(&remark, vec!["test".to_string()])?; + assert_eq!(encode_call_data(&client, &xt)?, "0x00001074657374"); + Ok(()) + } + + #[tokio::test] + async fn decode_call_data_works() -> Result<()> { + assert!(matches!(decode_call_data("wrongcalldata"), Err(Error::CallDataDecodingError(..)))); + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + let remark = find_dispatchable_by_name(&pallets, "System", "remark")?; + let xt = construct_extrinsic(&remark, vec!["0x11".to_string()])?; + let expected_call_data = xt.encode_call_data(&client.metadata())?; + assert_eq!(decode_call_data("0x00000411")?, expected_call_data); + Ok(()) + } + + #[tokio::test] + async fn sign_and_submit_wrong_extrinsic_fails() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let function = Function { + pallet: "WrongPallet".to_string(), + name: "wrong_extrinsic".to_string(), + index: 0, + docs: "documentation".to_string(), + is_supported: true, + ..Default::default() + }; + let xt = construct_extrinsic(&function, vec!["0x11".to_string()])?; + assert!(matches!( + sign_and_submit_extrinsic(&client, xt, ALICE_SURI).await, + Err(Error::ExtrinsicSubmissionError(message)) if message.contains("PalletNameNotFound(\"WrongPallet\"))") + )); + Ok(()) + } + + #[tokio::test] + async fn construct_sudo_extrinsic_works() -> Result<()> { + let client = set_up_client(POP_NETWORK_TESTNET_URL).await?; + let pallets = parse_chain_metadata(&client)?; + let force_transfer = find_dispatchable_by_name(&pallets, "Balances", "force_transfer")?; + let xt = construct_extrinsic( + &force_transfer, + vec![ + "Id(5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty)".to_string(), + "Id(5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy)".to_string(), + "100".to_string(), + ], + )?; + let xt = construct_sudo_extrinsic(xt)?; + assert_eq!(xt.call_name(), "sudo"); + assert_eq!(xt.pallet_name(), "Sudo"); + Ok(()) + } +} diff --git a/crates/pop-parachains/src/errors.rs b/crates/pop-parachains/src/errors.rs index 3eff7bbf..8bd97434 100644 --- a/crates/pop-parachains/src/errors.rs +++ b/crates/pop-parachains/src/errors.rs @@ -3,24 +3,43 @@ use thiserror::Error; use zombienet_sdk::OrchestratorError; +/// Represents the various errors that can occur in the crate. #[derive(Error, Debug)] pub enum Error { #[error("User aborted due to existing target directory.")] Aborted, #[error("Anyhow error: {0}")] AnyhowError(#[from] anyhow::Error), + /// An error occurred while decoding the call data. + #[error("Failed to decode call data. {0}")] + CallDataDecodingError(String), + /// An error occurred while encoding the call data. + #[error("Failed to encode call data. {0}")] + CallDataEncodingError(String), #[error("{0}")] CommonError(#[from] pop_common::Error), + /// An error occurred while attempting to establish a connection to the endpoint. + #[error("Failed to establish a connection to: {0}")] + ConnectionFailure(String), #[error("Configuration error: {0}")] Config(String), #[error("Failed to access the current directory")] CurrentDirAccess, #[error("Failed to parse the endowment value")] EndowmentError, + /// An error occurred during the submission of an extrinsic. + #[error("Extrinsic submission error: {0}")] + ExtrinsicSubmissionError(String), + /// The dispatchable function is not supported. + #[error("The dispatchable function is not supported")] + FunctionNotSupported, #[error("IO error: {0}")] IO(#[from] std::io::Error), #[error("JSON error: {0}")] JsonError(#[from] serde_json::Error), + /// An error occurred while parsing metadata of a parameter. + #[error("Error parsing metadata for parameter {0}")] + MetadataParsingError(String), #[error("Missing binary: {0}")] MissingBinary(String), #[error("Missing chain spec file at: {0}")] @@ -31,6 +50,12 @@ pub enum Error { OrchestratorError(#[from] OrchestratorError), #[error("Failed to create pallet directory")] PalletDirCreation, + /// The specified pallet could not be found. + #[error("Failed to find the pallet {0}")] + PalletNotFound(String), + /// An error occurred while processing the arguments provided by the user. + #[error("Failed to process the arguments provided by the user.")] + ParamProcessingError, #[error("Invalid path")] PathError, #[error("Failed to execute rustfmt")] diff --git a/crates/pop-parachains/src/lib.rs b/crates/pop-parachains/src/lib.rs index 06bee8f4..31a86ade 100644 --- a/crates/pop-parachains/src/lib.rs +++ b/crates/pop-parachains/src/lib.rs @@ -2,6 +2,8 @@ #![doc = include_str!("../README.md")] mod build; +/// Provides functionality to construct, encode, sign, and submit chain extrinsics. +mod call; mod errors; mod generator; mod new_pallet; @@ -14,10 +16,22 @@ pub use build::{ binary_path, build_parachain, export_wasm_file, generate_genesis_state_file, generate_plain_chain_spec, generate_raw_chain_spec, is_supported, ChainSpec, }; +pub use call::{ + construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + metadata::{ + action::{supported_actions, Action}, + find_dispatchable_by_name, find_pallet_by_name, + params::Param, + parse_chain_metadata, Function, Pallet, + }, + set_up_client, sign_and_submit_extrinsic, sign_and_submit_extrinsic_with_call_data, +}; pub use errors::Error; pub use indexmap::IndexSet; pub use new_pallet::{create_pallet_template, new_pallet_options::*, TemplatePalletConfig}; pub use new_parachain::instantiate_template_dir; +// External export from subxt. +pub use subxt::{tx::DynamicPayload, OnlineClient, SubstrateConfig}; pub use templates::{Config, Parachain, Provider}; pub use up::Zombienet; pub use utils::helpers::is_initial_endowment_valid; diff --git a/deny.toml b/deny.toml index 5c295de5..53c6d37e 100644 --- a/deny.toml +++ b/deny.toml @@ -20,6 +20,7 @@ allow = [ "GPL-3.0", "MIT", "MPL-2.0", + "Unicode-3.0", "Unicode-DFS-2016", "Unlicense" ] From c702c621e55984a23d45bfbb43bc29c63f4ddb47 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 16:38:36 -0700 Subject: [PATCH 031/143] feat(wallet-integration): server and API (#362) * feat(wallet-integration): implement server and API * feat(wallet-integration): add a few tests to server. Needs more * refactor(wallet-integration): just use call_data, remove data types * feat(wallet-integration): add frontend type for flexible serving * feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method * refactor(wallet-integration): move to module with pop-cli crate * feat(wallet-integration): server-side error handling, update port to 9090 * refactor(wallet-integration): restructure server for easier use in thread * fix(wallet-integration): remove invalid fn `finish` * docs(wallet-integration): inline comments * test(wallet-integration): unit tests for wallet-integration server. Add new frontend type * feat(wallet-integration): two new routes: error and terminate * refactor(wallet-integration): consistent comments, remove unnecessary code in tests * feat: add TransactionData::new * refactor(wallet-integration: shutdown channel error handling, terminate helper, take_error and TranscationData::new tests * chore: clippy warning --- crates/pop-cli/src/wallet_integration.rs | 90 ++++++++++++++++-------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index a76d4f69..6735a582 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -110,10 +110,8 @@ impl WalletIntegrationManager { } /// Signals the wallet integration server to shut down. - pub async fn terminate(&mut self) { - if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + pub async fn terminate(&mut self) -> anyhow::Result<()> { + terminate_helper(&self.state).await } /// Checks if the server task is still running. @@ -128,7 +126,7 @@ impl WalletIntegrationManager { } mod routes { - use super::{Arc, Mutex, StateHandler, TransactionData}; + use super::{terminate_helper, Arc, Mutex, StateHandler, TransactionData}; use anyhow::Error; use axum::{ extract::State, @@ -171,18 +169,17 @@ mod routes { pub(super) async fn submit_handler( State(state): State>>, Json(payload): Json, - ) -> Json { - let mut state = state.lock().await; - state.signed_payload = Some(payload); - + ) -> Result, ApiError> { // Signal shutdown. - // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + let res = terminate_helper(&state).await; + + let mut state_locked = state.lock().await; + state_locked.signed_payload = Some(payload); + + res?; // Graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success"})) + Ok(Json(json!({"status": "success"}))) } /// Receives an error message from the wallet. @@ -195,12 +192,20 @@ mod routes { } /// Allows the server to be terminated from the frontend. - pub(super) async fn terminate_handler(State(state): State>>) { - let mut state = state.lock().await; - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + pub(super) async fn terminate_handler( + State(state): State>>, + ) -> Result<(), ApiError> { + Ok(terminate_helper(&state).await?) + } +} + +async fn terminate_helper(handle: &Arc>) -> anyhow::Result<()> { + if let Some(shutdown_tx) = handle.lock().await.shutdown_tx.take() { + shutdown_tx + .send(()) + .map_err(|_| anyhow::anyhow!("Failed to send shutdown signal"))?; } + Ok(()) } /// Serves static files from a directory. @@ -246,7 +251,7 @@ mod tests { // Wait for server to launch. async fn wait() { - tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; } fn default_payload() -> TransactionData { @@ -264,10 +269,34 @@ mod tests { assert!(wim.state.lock().await.signed_payload.is_none()); // Terminate the server and make sure result is ok. - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail."); assert!(wim.task_handle.await.is_ok()); } + #[test] + fn new_transaction_data_works() { + let chain_rpc = "localhost:9944".to_string(); + let call_data = vec![1, 2, 3]; + let transaction_data = TransactionData::new(chain_rpc.clone(), call_data.clone()); + + assert_eq!(transaction_data.chain_rpc, chain_rpc); + assert_eq!(transaction_data.call_data, call_data); + } + + #[tokio::test] + async fn take_error_works() { + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); + + assert_eq!(wim.take_error().await, None); + + let error = "An error occurred".to_string(); + wim.state.lock().await.error = Some(error.clone()); + + let taken_error = wim.take_error().await; + assert_eq!(taken_error, Some(error)); + } + #[tokio::test] async fn payload_handler_works() { // offset port per test to avoid conflicts @@ -291,7 +320,7 @@ mod tests { assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, expected_payload.call_data); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -319,7 +348,7 @@ mod tests { assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); assert_eq!(wim.is_running(), false); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -348,7 +377,7 @@ mod tests { assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); assert_eq!(wim.is_running(), true); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -358,7 +387,7 @@ mod tests { let addr = "127.0.0.1:9094"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; let addr = format!("http://{}", wim.rpc_url); @@ -375,7 +404,6 @@ mod tests { assert_eq!(response.len(), 0); assert_eq!(wim.is_running(), false); - wim.terminate().await; assert!(wim.task_handle.await.is_ok()); } @@ -389,11 +417,11 @@ mod tests { let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); assert_eq!(wim.is_running(), true); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); wait().await; assert_eq!(wim.is_running(), false); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -415,7 +443,7 @@ mod tests { assert_eq!(actual_content, TEST_HTML); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -446,7 +474,7 @@ mod tests { assert_eq!(actual_content, test_html); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -477,7 +505,7 @@ mod tests { assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, call_data_5mb); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail."); assert!(wim.task_handle.await.is_ok()); } From d80d5321044fd7a0ab1319eba8ebcf3920918cf7 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 13:36:16 -0700 Subject: [PATCH 032/143] feat(up-contract): get call data for upload-only and pass to wallet integration -- PoC --- crates/pop-contracts/src/up.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index fb163095..6af525b0 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -386,7 +386,8 @@ mod tests { }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; - use std::{env, process::Command, time::Duration}; + use reqwest::get; + use std::{env, fs, process::Command, time::Duration}; use tokio::time::sleep; use url::Url; From 9935efea0ce879822ec8c1f211e845cd7fb0d81b Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 00:05:06 -0700 Subject: [PATCH 033/143] chore: use git branch for cargo contract --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9ffb17d6..fb30acb5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4588,7 +4588,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.6.4", + "rand_core 0.5.1", "serde", "unicode-normalization", ] diff --git a/Cargo.toml b/Cargo.toml index 69e1bcff..48801121 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,7 +54,7 @@ sp-weights = "30" contract-build = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } #contract-extrinsics = "5.0.0-alpha" contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } -#contractcontract-transcode = "5.0.0-alpha" +#contract-transcode = "5.0.0-alpha" contract-transcode = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" hex = { version = "0.4.3", default-features = false } From 8a8de6df1ddb8f0b6efe9bcf1c7c88eba8ff2a41 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 10 Dec 2024 17:11:16 -0700 Subject: [PATCH 034/143] feat(up-contract): handle subxt events better, various improvements --- crates/pop-cli/src/commands/up/contract.rs | 70 ++++++++++++++++------ crates/pop-cli/src/wallet_integration.rs | 57 +++++++++--------- crates/pop-contracts/src/up.rs | 64 +++++++++++--------- 3 files changed, 119 insertions(+), 72 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 9d2292ff..646121a9 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -495,24 +495,58 @@ mod tests { Ok(()) } - #[test] - fn has_contract_been_built_works() -> anyhow::Result<()> { - let temp_dir = tempfile::tempdir()?; - let path = temp_dir.path(); - - // Standard rust project - let name = "hello_world"; - cmd("cargo", ["new", name]).dir(&path).run()?; - let contract_path = path.join(name); - assert!(!has_contract_been_built(Some(&contract_path))); - - cmd("cargo", ["build"]).dir(&contract_path).run()?; - // Mock build directory - fs::create_dir(&contract_path.join("target/ink"))?; - assert!(!has_contract_been_built(Some(&path.join(name)))); - // Create a mocked .contract file inside the target directory - File::create(contract_path.join(format!("target/ink/{}.contract", name)))?; - assert!(has_contract_been_built(Some(&path.join(name)))); + // TODO: delete this test. + // This is a helper test for an actual running pop CLI. + // It can serve as the "frontend" to query the payload, sign it + // and submit back to the CLI. + #[ignore] + #[tokio::test] + async fn sign_call_data() -> anyhow::Result<()> { + use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; + // This struct implements the [`Payload`] trait and is used to submit + // pre-encoded SCALE call data directly, without the dynamic construction of transactions. + struct CallData(Vec); + + impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } + } + + use subxt_signer::sr25519::dev; + let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + let url = "ws://localhost:9944"; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = + subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let signer = dev::alice(); + + let payload = CallData(payload.call_data()); + let ext_params = Params::new().build(); + let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; + + let response = reqwest::Client::new() + .post(&format!("{}/submit", "http://localhost:9090")) + .json(&to_hex(signed.encoded())) + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse JSON response"); + Ok(()) } diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 6735a582..0be97ed5 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -29,6 +29,9 @@ impl TransactionData { pub fn new(chain_rpc: String, call_data: Vec) -> Self { Self { chain_rpc, call_data } } + pub fn call_data(&self) -> Vec { + self.call_data.clone() + } } /// Shared state between routes. Serves two purposes: @@ -324,33 +327,33 @@ mod tests { assert!(wim.task_handle.await.is_ok()); } - #[tokio::test] - async fn submit_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9092"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/submit", addr)) - .json(&"0xDEADBEEF") - .send() - .await - .expect("Failed to submit payload") - .json::() - .await - .expect("Failed to parse JSON response"); - - assert_eq!(response, json!({"status": "success"})); - assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } + // #[tokio::test] + // async fn submit_handler_works() { + // // offset port per test to avoid conflicts + // let addr = "127.0.0.1:9092"; + // let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + // let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + // wait().await; + + // let addr = format!("http://{}", wim.rpc_url); + // let response = reqwest::Client::new() + // .post(&format!("{}/submit", addr)) + // .json(&"0xDEADBEEF") + // .send() + // .await + // .expect("Failed to submit payload") + // .text() + // .await + // .expect("Failed to parse response"); + + // assert_eq!(response, json!({"status": "success"})); + // assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + // assert_eq!(wim.is_running(), false); + + // wim.terminate().await.expect("Termination should not fail"); + // assert!(wim.task_handle.await.is_ok()); + // } #[tokio::test] async fn error_handler_works() { diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 6af525b0..47aa9dbb 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -25,7 +25,7 @@ use subxt::{ blocks::ExtrinsicEvents, tx::{Payload, SubmittableExtrinsic}, utils::to_hex, - SubstrateConfig, + Config, SubstrateConfig, }; /// Attributes for the `up` command @@ -441,25 +441,30 @@ mod tests { Ok(()) } - #[tokio::test] - async fn get_payload_works() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; - let up_opts = UpOpts { - path: Some(temp_dir.path().join("testing")), - constructor: "new".to_string(), - args: ["false".to_string()].to_vec(), - value: "1000".to_string(), - gas_limit: None, - proof_size: None, - salt: None, - url: Url::parse(CONTRACTS_NETWORK_URL)?, - suri: "//Alice".to_string(), - }; - let call_data = get_upload_payload(up_opts).await?; - // println!("{:?}", call_data); - Ok(()) - } + // #[tokio::test] + // async fn get_payload_works() -> Result<()> { + // let temp_dir = new_environment("testing")?; + // let current_dir = env::current_dir().expect("Failed to get current directory"); + // mock_build_process( + // temp_dir.path().join("testing"), + // current_dir.join("./tests/files/testing.contract"), + // current_dir.join("./tests/files/testing.json"), + // )?; + // let up_opts = UpOpts { + // path: Some(temp_dir.path().join("testing")), + // constructor: "new".to_string(), + // args: ["false".to_string()].to_vec(), + // value: "1000".to_string(), + // gas_limit: None, + // proof_size: None, + // salt: None, + // url: Url::parse(CONTRACTS_NETWORK_URL)?, + // suri: "//Alice".to_string(), + // }; + // let call_data = get_upload_payload(up_opts, CONTRACTS_NETWORK_URL).await?; + // // println!("{:?}", call_data); + // Ok(()) + // } #[tokio::test] async fn dry_run_gas_estimate_instantiate_works() -> Result<()> { @@ -618,15 +623,20 @@ mod tests { #[tokio::test] async fn get_instantiate_payload_works() -> Result<()> { - const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; - + let random_port = find_free_port(); + let localhost_url = format!("ws://127.0.0.1:{}", random_port); + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let cache = temp_dir.path().join(""); let binary = contracts_node_generator(cache.clone(), None).await?; binary.source(false, &(), true).await?; - let process = run_contracts_node(binary.path(), None).await?; + let process = run_contracts_node(binary.path(), None, random_port).await?; let upload_exec = set_up_upload(UpOpts { path: Some(temp_dir.path().join("testing")), @@ -636,7 +646,7 @@ mod tests { gas_limit: None, proof_size: None, salt: None, - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), }) .await?; @@ -660,7 +670,7 @@ mod tests { gas_limit: None, proof_size: None, salt: Some(Bytes::from(vec![0x00])), - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), }) .await?; From 84f0595f40195eb4aa2cb3a82c504c305439ccd3 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 12:02:00 +0100 Subject: [PATCH 035/143] refactor: reuse pop up logic --- crates/pop-cli/src/commands/up/contract.rs | 38 +------- crates/pop-cli/src/common/mod.rs | 1 + crates/pop-cli/src/common/wallet.rs | 101 +++++++++++++++++++++ 3 files changed, 107 insertions(+), 33 deletions(-) create mode 100644 crates/pop-cli/src/common/wallet.rs diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 646121a9..814f36a6 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -2,9 +2,11 @@ use crate::{ cli::{traits::Cli as _, Cli}, - common::contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + common::{ + contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + wallet::wait_for_signature, + }, style::style, - wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; @@ -182,7 +184,7 @@ impl UpContractCommand { }, }; - let maybe_payload = self.wait_for_signature(call_data).await?; + let maybe_payload = wait_for_signature(call_data, self.url.to_string()).await?; if let Some(payload) = maybe_payload { log::success("Signed payload received.")?; let spinner = spinner(); @@ -379,36 +381,6 @@ impl UpContractCommand { Ok((call_data, hash)) } } - - async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - // TODO: to be addressed in future PR. Should not use FromDir (or local path). - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/peter/dev/r0gue/react-teleport-example/dist", - )); - - let transaction_data = TransactionData::new(self.url.to_string(), call_data); - // starts server - let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; - - log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; - loop { - // Display error, if any. - if let Some(error) = wallet.take_error().await { - log::error(format!("Signing portal error: {error}"))?; - } - - let state = wallet.state.lock().await; - // If the payload is submitted we terminate the frontend. - if !wallet.is_running() || state.signed_payload.is_some() { - wallet.task_handle.await??; - break; - } - } - - let signed_payload = wallet.state.lock().await.signed_payload.clone(); - Ok(signed_payload) - } } impl From for UpOpts { diff --git a/crates/pop-cli/src/common/mod.rs b/crates/pop-cli/src/common/mod.rs index 1cb3ee57..4a89036e 100644 --- a/crates/pop-cli/src/common/mod.rs +++ b/crates/pop-cli/src/common/mod.rs @@ -3,3 +3,4 @@ #[cfg(feature = "contract")] pub mod contracts; pub mod helpers; +pub mod wallet; diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs new file mode 100644 index 00000000..2025bec0 --- /dev/null +++ b/crates/pop-cli/src/common/wallet.rs @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::{ + cli::{traits::Cli as _, Cli}, + wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, +}; +use cliclack::log; +use sp_core::bytes::to_hex; +use std::path::PathBuf; + +pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { + // TODO: to be addressed in future PR. Should not use FromDir (or local path). + let ui = FrontendFromDir::new(PathBuf::from( + "/Users/alexbean/Documents/react-teleport-example/dist", + )); + + let transaction_data = TransactionData::new(url, call_data); + let call_data_bytes = to_hex(&transaction_data.call_data(), false); + println!("transaction_data: {:?}", call_data_bytes); + // starts server + let mut wallet = WalletIntegrationManager::new(ui, transaction_data); + log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; + + log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; + loop { + // Display error, if any. + if let Some(error) = wallet.take_error().await { + log::error(format!("Signing portal error: {error}"))?; + } + + let state = wallet.state.lock().await; + // If the payload is submitted we terminate the frontend. + if !wallet.is_running() || state.signed_payload.is_some() { + wallet.task_handle.await??; + break; + } + } + + let signed_payload = wallet.state.lock().await.signed_payload.clone(); + Ok(signed_payload) +} + +#[cfg(test)] +mod tests { + use super::*; + use subxt::utils::to_hex; + + // TODO: delete this test. + // This is a helper test for an actual running pop CLI. + // It can serve as the "frontend" to query the payload, sign it + // and submit back to the CLI. + #[tokio::test] + async fn sign_call_data() -> anyhow::Result<()> { + use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; + // This struct implements the [`Payload`] trait and is used to submit + // pre-encoded SCALE call data directly, without the dynamic construction of transactions. + struct CallData(Vec); + + impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } + } + + use subxt_signer::sr25519::dev; + let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + let url = "ws://localhost:9944"; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = + subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let signer = dev::alice(); + + let payload = CallData(payload.call_data()); + let ext_params = Params::new().build(); + let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; + + let response = reqwest::Client::new() + .post(&format!("{}/submit", "http://localhost:9090")) + .json(&to_hex(signed.encoded())) + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse JSON response"); + + Ok(()) + } +} From 7301f455c73f87e4410d8f01becddbc140182c49 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 14:41:09 +0100 Subject: [PATCH 036/143] chore: rebase fixes --- crates/pop-cli/src/commands/up/contract.rs | 113 --------------------- crates/pop-cli/src/common/wallet.rs | 5 +- crates/pop-cli/src/wallet_integration.rs | 1 - crates/pop-contracts/src/up.rs | 3 +- 4 files changed, 2 insertions(+), 120 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 814f36a6..4a5c2c26 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -423,9 +423,6 @@ fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Opti #[cfg(test)] mod tests { use super::*; - use duct::cmd; - use std::fs::{self, File}; - use subxt::{client::OfflineClientT, utils::to_hex}; use url::Url; fn default_up_contract_command() -> UpContractCommand { @@ -467,116 +464,6 @@ mod tests { Ok(()) } - // TODO: delete this test. - // This is a helper test for an actual running pop CLI. - // It can serve as the "frontend" to query the payload, sign it - // and submit back to the CLI. - #[ignore] - #[tokio::test] - async fn sign_call_data() -> anyhow::Result<()> { - use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; - // This struct implements the [`Payload`] trait and is used to submit - // pre-encoded SCALE call data directly, without the dynamic construction of transactions. - struct CallData(Vec); - - impl Payload for CallData { - fn encode_call_data_to( - &self, - _: &subxt::Metadata, - out: &mut Vec, - ) -> Result<(), subxt::ext::subxt_core::Error> { - out.extend_from_slice(&self.0); - Ok(()) - } - } - - use subxt_signer::sr25519::dev; - let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - let url = "ws://localhost:9944"; - let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; - let client = - subxt::OnlineClient::::from_rpc_client(rpc_client).await?; - - let signer = dev::alice(); - - let payload = CallData(payload.call_data()); - let ext_params = Params::new().build(); - let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; - - let response = reqwest::Client::new() - .post(&format!("{}/submit", "http://localhost:9090")) - .json(&to_hex(signed.encoded())) - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse JSON response"); - - Ok(()) - } - - // TODO: delete this test. - // This is a helper test for an actual running pop CLI. - // It can serve as the "frontend" to query the payload, sign it - // and submit back to the CLI. - #[tokio::test] - async fn sign_call_data() -> anyhow::Result<()> { - use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; - // This struct implements the [`Payload`] trait and is used to submit - // pre-encoded SCALE call data directly, without the dynamic construction of transactions. - struct CallData(Vec); - - impl Payload for CallData { - fn encode_call_data_to( - &self, - _: &subxt::Metadata, - out: &mut Vec, - ) -> Result<(), subxt::ext::subxt_core::Error> { - out.extend_from_slice(&self.0); - Ok(()) - } - } - - use subxt_signer::sr25519::dev; - let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - let url = "ws://localhost:9944"; - let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; - let client = - subxt::OnlineClient::::from_rpc_client(rpc_client).await?; - - let signer = dev::alice(); - - let payload = CallData(payload.call_data()); - let ext_params = Params::new().build(); - let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; - - let response = reqwest::Client::new() - .post(&format!("{}/submit", "http://localhost:9090")) - .json(&to_hex(signed.encoded())) - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse JSON response"); - - Ok(()) - } - - #[tokio::test] async fn get_upload_call_data_works() -> anyhow::Result<()> { todo!() } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 2025bec0..1cbcfbd3 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -1,9 +1,6 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::{ - cli::{traits::Cli as _, Cli}, - wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, -}; +use crate::wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}; use cliclack::log; use sp_core::bytes::to_hex; use std::path::PathBuf; diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 0be97ed5..1a6023f7 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -248,7 +248,6 @@ impl Frontend for FrontendFromString { #[cfg(test)] mod tests { use super::*; - use serde_json::json; const TEST_HTML: &str = "Hello, world!"; diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 47aa9dbb..24dccf01 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -18,13 +18,12 @@ use pop_common::{create_signer, DefaultConfig, Keypair}; use sp_core::{bytes::from_hex, Bytes}; use sp_weights::Weight; use std::{ - fmt::{format, Write}, + fmt::Write, path::{Path, PathBuf}, }; use subxt::{ blocks::ExtrinsicEvents, tx::{Payload, SubmittableExtrinsic}, - utils::to_hex, Config, SubstrateConfig, }; From d48f34eb9e4e8541e860bbc722d581cd90e140f1 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 15:03:00 +0100 Subject: [PATCH 037/143] refactor: clean after rebase --- crates/pop-contracts/src/up.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 24dccf01..dd186395 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -385,8 +385,7 @@ mod tests { }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; - use reqwest::get; - use std::{env, fs, process::Command, time::Duration}; + use std::{env, process::Command, time::Duration}; use tokio::time::sleep; use url::Url; @@ -679,7 +678,7 @@ mod tests { assert!(weight.proof_size() > 0); let call_data = get_instantiate_payload(instantiate_exec, weight).await?; - println!("{:?}", to_hex(call_data)); + //println!("{:?}", to_hex(call_data)); //Stop the process contracts-node Command::new("kill") From 9941d36caf4c10d3062c1afcf6de8d1be2da10be Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 15:17:05 +0100 Subject: [PATCH 038/143] fix: cargo.lock after rebase --- Cargo.lock | 11269 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 9159 insertions(+), 2110 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fb30acb5..cd34b02a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,11 +23,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli 0.31.0", + "gimli 0.31.1", ] [[package]] @@ -46,6 +46,31 @@ dependencies = [ "generic-array", ] +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" version = "0.7.8" @@ -81,9 +106,68 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.18", + "hex-literal", + "itoa", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +dependencies = [ + "arrayvec 0.7.6", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +dependencies = [ + "const-hex", + "dunce", + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.90", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-types" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] [[package]] name = "android-tzdata" @@ -111,9 +195,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -126,49 +210,72 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.87" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.90", +] [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -180,8 +287,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -191,9 +310,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" +dependencies = [ + "ark-bw6-761", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -202,14 +360,83 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", "zeroize", ] @@ -219,20 +446,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.1", "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -243,6 +480,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -256,19 +505,56 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-models-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-scale" +version = "0.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -276,7 +562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.4.0", "digest 0.10.7", "num-bigint", ] @@ -292,6 +578,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -300,6 +596,7 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", + "rayon", ] [[package]] @@ -310,9 +607,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -355,7 +652,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -399,6 +696,66 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "asset-test-utils" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0324df9ce91a9840632e865dd3272bd20162023856f1b189b7ae58afa5c6b61" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-timestamp", + "pallet-xcm", + "pallet-xcm-bridge-hub-router", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + +[[package]] +name = "assets-common" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93438e31a4449fbeab87210931edc8cd156292354f1fc15f17d819ecded6bf25" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "impl-trait-for-tuples", + "log", + "pallet-asset-conversion", + "pallet-assets", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + [[package]] name = "async-channel" version = "2.3.1" @@ -437,9 +794,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", @@ -448,7 +805,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 0.38.36", + "rustix 0.38.42", "slab", "tracing", "windows-sys 0.59.0", @@ -478,9 +835,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.4" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel", "async-io", @@ -491,9 +848,8 @@ dependencies = [ "cfg-if", "event-listener 5.3.1", "futures-lite", - "rustix 0.38.36", + "rustix 0.38.42", "tracing", - "windows-sys 0.59.0", ] [[package]] @@ -508,7 +864,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.36", + "rustix 0.38.42", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -516,9 +872,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -527,13 +883,13 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -544,13 +900,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -565,11 +921,22 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" @@ -581,10 +948,10 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "itoa", "matchit", @@ -597,9 +964,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", - "tower 0.5.1", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -614,78 +981,23 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", ] [[package]] -name = "axum" -version = "0.7.9" +name = "backoff" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.4.1", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "tokio", - "tower 0.5.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper 1.0.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "backoff" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "getrandom", "instant", @@ -698,11 +1010,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.1", + "addr2line 0.24.2", "cfg-if", "libc", "miniz_oxide", - "object 0.36.4", + "object 0.36.5", "rustc-demangle", "windows-targets 0.52.6", ] @@ -767,6 +1079,16 @@ dependencies = [ "serde", ] +[[package]] +name = "binary-merkle-tree" +version = "15.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" +dependencies = [ + "hash-db", + "log", +] + [[package]] name = "bincode" version = "1.3.3" @@ -778,15 +1100,30 @@ dependencies = [ [[package]] name = "bip39" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" dependencies = [ - "bitcoin_hashes 0.11.0", + "bitcoin_hashes 0.13.0", "serde", "unicode-normalization", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -794,10 +1131,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" [[package]] -name = "bitcoin_hashes" -version = "0.11.0" +name = "bitcoin-io" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" [[package]] name = "bitcoin_hashes" @@ -806,7 +1143,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", ] [[package]] @@ -829,6 +1176,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -906,9 +1254,9 @@ dependencies = [ "futures-core", "futures-util", "hex", - "http 1.1.0", + "http 1.2.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-named-pipe", "hyper-util", "hyperlocal-next", @@ -919,7 +1267,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tower-service", @@ -940,9 +1288,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ "borsh-derive", "cfg_aliases", @@ -950,28 +1298,302 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.77", - "syn_derive", + "syn 2.0.90", ] [[package]] name = "bounded-collections" -version = "0.2.0" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" +dependencies = [ + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "bp-header-chain" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "890df97cea17ee61ff982466bb9e90cb6b1462adb45380999019388d05e4b92d" +dependencies = [ + "bp-runtime", + "finality-grandpa", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-messages" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efabf94339950b914ba87249497f1a0e35a73849934d164fecae4b275928cf6" +dependencies = [ + "bp-header-chain", + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", +] + +[[package]] +name = "bp-parachains" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9011e5c12c15caf3c4129a98f4f4916ea9165db8daf6ed85867c3106075f40df" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-polkadot" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa6277dd4333917ecfbcc35e9332a9f11682e0a506e76b617c336224660fce33" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "sp-api", + "sp-std", +] + +[[package]] +name = "bp-polkadot-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345cf472bac11ef79d403e4846a666b7d22a13cd16d9c85b62cd6b5e16c4a042" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "frame-system", + "parity-scale-codec", + "parity-util-mem", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-relayers" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9465ad727e466d67d64244a1aa7bb19933a297913fdde34b8e9bda0a341bdeb" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-runtime", + "frame-support", + "frame-system", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-runtime" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" +checksum = "746d9464f912b278f8a5e2400f10541f95da7fc6c7d688a2788b9a46296146ee" dependencies = [ + "frame-support", + "frame-system", + "hash-db", + "impl-trait-for-tuples", "log", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-std", + "sp-trie 37.0.0", + "trie-db 0.29.1", +] + +[[package]] +name = "bp-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e659078b54c0b6bd79896738212a305842ad37168976363233516754337826" +dependencies = [ + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "ed25519-dalek", + "finality-grandpa", + "parity-scale-codec", + "sp-application-crypto 38.0.0", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", +] + +[[package]] +name = "bp-xcm-bridge-hub" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6909117ca87cb93703742939d5f0c4c93e9646d9cda22262e9709d68c929999b" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", "parity-scale-codec", "scale-info", "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bp-xcm-bridge-hub-router" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9284820ca704f5c065563cad77d2e3d069a23cc9cb3a29db9c0de8dd3b173a87" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b53c53d627e2da38f8910807944bf3121e154b5c0ac9e122995af9dfb13ed" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "pallet-message-queue", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0b3aa5fd8481a06ca16e47fd3d2d9c6abe76b27d922ec8980a853f242173b3" +dependencies = [ + "asset-test-utils", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "bp-xcm-bridge-hub", + "bridge-runtime-common", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-bridge-hub", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "bridge-runtime-common" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c639aa22de6e904156a3e8b0e6b9e6af790cb27a1299688cc07997e1ffe5b648" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-xcm-bridge-hub", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-transaction-payment", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", + "staging-xcm 14.2.0", + "tuplex", ] [[package]] @@ -994,15 +1616,24 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.9", "serde", ] +[[package]] +name = "build-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" +dependencies = [ + "semver 0.6.0", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -1037,6 +1668,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bytemuck" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" + [[package]] name = "byteorder" version = "1.5.0" @@ -1045,9 +1682,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "camino" @@ -1060,13 +1697,27 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "cargo_metadata" version = "0.18.1" @@ -1075,17 +1726,17 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver", + "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "cargo_toml" -version = "0.20.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965" +checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" dependencies = [ "serde", "toml 0.8.19", @@ -1093,9 +1744,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.18" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" dependencies = [ "jobserver", "libc", @@ -1108,6 +1759,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -1133,9 +1793,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1152,13 +1812,14 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] name = "clap" -version = "4.5.17" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -1166,9 +1827,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.17" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -1178,27 +1839,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cliclack" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c827ccada848b64fba073b64518a7416d605ad70c594b5450b5ed1d97e3b5d4" +checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" dependencies = [ "console", "indicatif", @@ -1215,14 +1876,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" @@ -1268,10 +1929,23 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] +[[package]] +name = "const-hex" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -1279,17 +1953,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] -name = "const_env" -version = "0.1.2" +name = "const-random" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9e4f72c6e3398ca6da372abd9affd8f89781fe728869bbf986206e9af9627e" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" dependencies = [ - "const_env_impl", + "const-random-macro", ] [[package]] -name = "const_env_impl" -version = "0.1.2" +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "const_env" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9e4f72c6e3398ca6da372abd9affd8f89781fe728869bbf986206e9af9627e" +dependencies = [ + "const_env_impl", +] + +[[package]] +name = "const_env_impl" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a4f51209740b5e1589e702b3044cdd4562cef41b6da404904192ffffb852d62" dependencies = [ @@ -1324,7 +2018,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata", + "cargo_metadata 0.18.1", "clap", "colored", "contract-metadata", @@ -1332,11 +2026,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", "regex", - "rustc_version", - "semver", + "rustc_version 0.4.1", + "semver 1.0.23", "serde", "serde_json", "strum 0.26.3", @@ -1379,10 +2073,10 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-core", - "sp-runtime", - "sp-weights", - "subxt", + "sp-core 31.0.0", + "sp-runtime 34.0.0", + "sp-weights 30.0.0", + "subxt 0.37.0", "tokio", "tracing", "url", @@ -1394,8 +2088,8 @@ version = "5.0.0-alpha" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" dependencies = [ "anyhow", - "impl-serde", - "semver", + "impl-serde 0.4.0", + "semver 1.0.23", "serde", "serde_json", "url", @@ -1412,19 +2106,19 @@ dependencies = [ "contract-metadata", "escape8259", "hex", - "indexmap 2.5.0", + "indexmap 2.7.0", "ink_env", "ink_metadata", "itertools 0.12.1", "nom", "nom-supreme", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "scale-info", "serde", "serde_json", "strsim 0.11.1", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1470,13 +2164,57 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] +[[package]] +name = "cranelift-bforest" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" +dependencies = [ + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-isle", + "gimli 0.27.3", + "hashbrown 0.13.2", + "log", + "regalloc2 0.6.1", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" + [[package]] name = "cranelift-entity" version = "0.95.1" @@ -1486,6 +2224,51 @@ dependencies = [ "serde", ] +[[package]] +name = "cranelift-frontend" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" + +[[package]] +name = "cranelift-native" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" +dependencies = [ + "cranelift-codegen", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-wasm" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "itertools 0.10.5", + "log", + "smallvec", + "wasmparser 0.102.0", + "wasmtime-types", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -1495,6 +2278,25 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-queue" version = "0.3.11" @@ -1574,6 +2376,320 @@ dependencies = [ "subtle", ] +[[package]] +name = "crypto_secretbox" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d6cf87adf719ddf43a805e92c6870a531aedda35ff640442cbaf8674e141e1" +dependencies = [ + "aead", + "cipher", + "generic-array", + "poly1305", + "salsa20", + "subtle", + "zeroize", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "cumulus-pallet-aura-ext" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cbe2735fc7cf2b6521eab00cb1a1ab025abc1575cc36887b36dc8c5cb1c9434" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-aura", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-aura", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-pallet-dmp-queue" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97263a8e758d201ebe81db7cea7b278b4fb869c11442f77acef70138ac1a252f" +dependencies = [ + "cumulus-primitives-core", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-pallet-parachain-system" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "546403ee1185f4051a74cc9c9d76e82c63cac3fb68e1bf29f61efb5604c96488" +dependencies = [ + "bytes", + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-primitives-proof-size-hostfunction", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-message-queue", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "scale-info", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-std", + "sp-trie 37.0.0", + "sp-version", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "trie-db 0.29.1", +] + +[[package]] +name = "cumulus-pallet-parachain-system-proc-macro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "befbaf3a1ce23ac8476481484fef5f4d500cbd15b4dad6380ce1d28134b0c1f7" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "cumulus-pallet-session-benchmarking" +version = "19.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18168570689417abfb514ac8812fca7e6429764d01942750e395d7d8ce0716ef" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-pallet-solo-to-para" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42c74548c8cab75da6f2479a953f044b582cfce98479862344a24df7bbd215" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-sudo", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "scale-info", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-pallet-xcm" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e49231f6cd8274438b078305dc8ce44c54c0d3f4a28e902589bcbaa53d954608" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-pallet-xcmp-queue" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f788bdac9474795ea13ba791b55798fb664b2e3da8c3a7385b480c9af4e6539" +dependencies = [ + "bounded-collections", + "bp-xcm-bridge-hub-router", + "cumulus-primitives-core", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-message-queue", + "parity-scale-codec", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "cumulus-ping" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47128f797359951723e2d106a80e592d007bb7446c299958cdbafb1489ddbf0" +dependencies = [ + "cumulus-pallet-xcm", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-primitives-aura" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11e7825bcf3cc6c962a5b9b9f47e02dc381109e521d0bc00cad785c65da18471" +dependencies = [ + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-primitives 15.0.0", + "sp-api", + "sp-consensus-aura", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-primitives-core" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c6b5221a4a3097f2ebef66c84c1e6d7a0b8ec7e63f2bd5ae04c1e6d3fc7514e" +dependencies = [ + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "scale-info", + "sp-api", + "sp-runtime 39.0.2", + "sp-trie 37.0.0", + "staging-xcm 14.2.0", +] + +[[package]] +name = "cumulus-primitives-parachain-inherent" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "842a694901e04a62d88995418dec35c22f7dba2b34d32d2b8de37d6b92f973ff" +dependencies = [ + "async-trait", + "cumulus-primitives-core", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-inherents", + "sp-trie 37.0.0", +] + +[[package]] +name = "cumulus-primitives-proof-size-hostfunction" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "421f03af054aac7c89e87a49e47964886e53a8d7395990eab27b6f201d42524f" +dependencies = [ + "sp-externalities 0.29.0", + "sp-runtime-interface 28.0.0", + "sp-trie 37.0.0", +] + +[[package]] +name = "cumulus-primitives-storage-weight-reclaim" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fc49dfec0ba3438afad73787736cc0dba88d15b5855881f12a4d8b812a72927" +dependencies = [ + "cumulus-primitives-core", + "cumulus-primitives-proof-size-hostfunction", + "docify", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", +] + +[[package]] +name = "cumulus-primitives-timestamp" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cffb8f010f39ac36b31d38994b8f9d9256d9b5e495d96b4ec59d3e30852d53" +dependencies = [ + "cumulus-primitives-core", + "sp-inherents", + "sp-timestamp", +] + +[[package]] +name = "cumulus-primitives-utility" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bdcf4d46dd93f1e6d5dd6d379133566a44042ba6476d04bdcbdb4981c622ae4" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "log", + "pallet-asset-conversion", + "parity-scale-codec", + "polkadot-runtime-common", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "cumulus-test-relay-sproof-builder" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e570e41c3f05a8143ebff967bbb0c7dcaaa6f0bebd8639b9418b8005b13eda03" +dependencies = [ + "cumulus-primitives-core", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-trie 37.0.0", +] + [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -1598,7 +2714,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version", + "rustc_version 0.4.1", "subtle", "zeroize", ] @@ -1611,51 +2727,66 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "cxx" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ccead7d199d584d139148b04b4a368d1ec7556a1d9ea2548febb1b9d49f9a4" +checksum = "05e1ec88093d2abd9cf1b09ffd979136b8e922bf31cad966a8fe0d73233112ef" dependencies = [ "cc", + "cxxbridge-cmd", "cxxbridge-flags", "cxxbridge-macro", + "foldhash", "link-cplusplus", ] [[package]] name = "cxx-build" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77953e99f01508f89f55c494bfa867171ef3a6c8cea03d26975368f2121a5c1" +checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" dependencies = [ "cc", "codespan-reporting", - "once_cell", "proc-macro2", "quote", "scratch", - "syn 2.0.77", + "syn 2.0.90", +] + +[[package]] +name = "cxxbridge-cmd" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c23bfff654d6227cbc83de8e059d2f8678ede5fc3a6c5a35d5c379983cc61e6" +dependencies = [ + "clap", + "codespan-reporting", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] name = "cxxbridge-flags" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65777e06cc48f0cb0152024c77d6cf9e4bdb4408e7b48bea993d42fa0f5b02b6" +checksum = "f7c01b36e22051bc6928a78583f1621abaaf7621561c2ada1b00f7878fbe2caa" [[package]] name = "cxxbridge-macro" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98532a60dedaebc4848cb2cba5023337cc9ea3af16a5b062633fabfd9f18fb60" +checksum = "f6e14013136fac689345d17b9a6df55977251f11d333c0a571e8d963b55e1f95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "rustversion", + "syn 2.0.90", ] [[package]] @@ -1703,7 +2834,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1725,7 +2856,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1793,7 +2924,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1804,18 +2935,18 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1827,8 +2958,29 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version", - "syn 2.0.77", + "rustc_version 0.4.1", + "syn 2.0.90", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "unicode-xid", ] [[package]] @@ -1870,6 +3022,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs" version = "5.0.1" @@ -1891,6 +3053,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[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", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1899,7 +3072,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1910,18 +3083,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" dependencies = [ "common-path", "derive-syn-parse", @@ -1929,7 +3102,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.77", + "syn 2.0.90", "termcolor", "toml 0.8.19", "walkdir", @@ -1953,6 +3126,12 @@ dependencies = [ "shared_child", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -2083,13 +3262,44 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "env_filter" version = "0.1.2" @@ -2100,6 +3310,19 @@ dependencies = [ "regex", ] +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + [[package]] name = "env_logger" version = "0.11.5" @@ -2127,12 +3350,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2141,6 +3364,47 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" +[[package]] +name = "ethabi-decode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" +dependencies = [ + "ethereum-types", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "scale-info", + "uint 0.9.5", +] + [[package]] name = "event-listener" version = "4.0.3" @@ -2164,9 +3428,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ "event-listener 5.3.1", "pin-project-lite", @@ -2184,7 +3448,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -2193,11 +3457,28 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec 0.7.6", + "auto_impl", + "bytes", +] [[package]] name = "ff" @@ -2225,6 +3506,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "file-per-thread-logger" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" +dependencies = [ + "env_logger 0.10.2", + "log", +] + [[package]] name = "filetime" version = "0.2.25" @@ -2237,6 +3528,22 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "finality-grandpa" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3" +dependencies = [ + "either", + "futures", + "futures-timer", + "log", + "num-traits", + "parity-scale-codec", + "parking_lot", + "scale-info", +] + [[package]] name = "finito" version = "0.1.0" @@ -2261,9 +3568,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -2284,6 +3591,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2309,129 +3622,404 @@ dependencies = [ ] [[package]] -name = "frame-metadata" -version = "15.1.0" +name = "frame-benchmarking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +checksum = "a01bdd47c2d541b38bd892da647d1e972c9d85b4ecd7094ad64f7600175da54d" dependencies = [ - "cfg-if", + "frame-support", + "frame-support-procedural", + "frame-system", + "linregress", + "log", "parity-scale-codec", + "paste", "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-storage 21.0.0", + "static_assertions", ] [[package]] -name = "frame-metadata" -version = "16.0.0" +name = "frame-benchmarking-pallet-pov" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" +checksum = "6ffde6f573a63eeb1ccb7d2667c5741a11ce93bc30f33712e5326b9d8a811c29" dependencies = [ - "cfg-if", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "serde", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "fs-err" -version = "2.11.0" +name = "frame-decode" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +checksum = "02d3379df61ff3dd871e2dde7d1bcdc0263e613c21c7579b149fd4f0ad9b1dc2" dependencies = [ - "autocfg", + "frame-metadata 17.0.0", + "parity-scale-codec", + "scale-decode 0.14.0", + "scale-info", + "scale-type-resolver 0.2.0", + "sp-crypto-hashing", ] [[package]] -name = "funty" -version = "2.0.0" +name = "frame-election-provider-solution-type" +version = "14.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +checksum = "8156f209055d352994ecd49e19658c6b469d7c6de923bd79868957d0dcfb6f71" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] [[package]] -name = "futures" -version = "0.3.30" +name = "frame-election-provider-support" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "c36f5116192c63d39f1b4556fa30ac7db5a6a52575fa241b045f7dfa82ecc2be" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "frame-election-provider-solution-type", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", ] [[package]] -name = "futures-channel" -version = "0.3.30" +name = "frame-executive" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "c365bf3879de25bbee28e9584096955a02fbe8d7e7624e10675800317f1cee5b" dependencies = [ - "futures-core", - "futures-sink", + "aquamarine", + "frame-support", + "frame-system", + "frame-try-runtime", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", ] [[package]] -name = "futures-core" -version = "0.3.30" +name = "frame-metadata" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] [[package]] -name = "futures-executor" -version = "0.3.30" +name = "frame-metadata" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", ] [[package]] -name = "futures-io" -version = "0.3.30" +name = "frame-metadata" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "701bac17e9b55e0f95067c428ebcb46496587f08e8cf4ccc0fe5903bea10dbb8" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", +] [[package]] -name = "futures-lite" -version = "2.3.0" +name = "frame-metadata-hash-extension" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "56ac71dbd97039c49fdd69f416a4dd5d8da3652fdcafc3738b45772ad79eb4ec" dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", + "array-bytes", + "docify", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "futures-macro" -version = "0.3.30" +name = "frame-support" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "1e44af69fa61bc5005ffe0339e198957e77f0f255704a9bee720da18a733e3dc" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "aquamarine", + "array-bytes", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata 16.0.0", + "frame-support-procedural", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "smallvec", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing-proc-macro", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io 38.0.0", + "sp-metadata-ir", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", + "sp-state-machine 0.43.0", + "sp-std", + "sp-tracing 17.0.1", + "sp-weights 31.0.0", + "static_assertions", + "tt-call", ] [[package]] -name = "futures-sink" -version = "0.3.30" +name = "frame-support-procedural" +version = "30.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "5e8f9b6bc1517a6fcbf0b2377e5c8c6d39f5bb7862b191a59a9992081d63972d" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "expander", + "frame-support-procedural-tools", + "itertools 0.11.0", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-crypto-hashing", + "syn 2.0.90", +] [[package]] -name = "futures-task" -version = "0.3.30" +name = "frame-support-procedural-tools" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] +checksum = "bead15a320be1764cdd50458c4cfacb23e0cee65f64f500f8e34136a94c7eeca" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "frame-support-procedural-tools-derive" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed971c6435503a099bdac99fe4c5bea08981709e5b5a0a8535a1856f48561191" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "frame-system" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c7fa02f8c305496d2ae52edaecdb9d165f11afa965e05686d7d7dd1ce93611" +dependencies = [ + "cfg-if", + "docify", + "frame-support", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-version", + "sp-weights 31.0.0", +] + +[[package]] +name = "frame-system-benchmarking" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9693b2a736beb076e673520e1e8dee4fc128b8d35b020ef3e8a4b1b5ad63d9f2" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "frame-system-rpc-runtime-api" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "475c4f8604ba7e4f05cd2c881ba71105093e638b9591ec71a8db14a64b3b4ec3" +dependencies = [ + "docify", + "parity-scale-codec", + "sp-api", +] + +[[package]] +name = "frame-try-runtime" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c811a5a1f5429c7fb5ebbf6cf9502d8f9b673fd395c12cf46c44a30a7daf0e" +dependencies = [ + "frame-support", + "parity-scale-codec", + "sp-api", + "sp-runtime 39.0.2", +] + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] name = "futures-timer" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2439,9 +4027,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -2455,6 +4043,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -2487,22 +4084,42 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator", + "fallible-iterator 0.2.0", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.31.0" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +dependencies = [ + "fallible-iterator 0.3.0", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "git2" @@ -2568,7 +4185,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -2577,17 +4194,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.5.0", + "http 1.2.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -2638,6 +4255,17 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "heck" version = "0.4.1" @@ -2674,6 +4302,21 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec 0.7.6", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + [[package]] name = "hkdf" version = "0.12.4" @@ -2735,9 +4378,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -2762,7 +4405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -2773,7 +4416,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -2790,17 +4433,11 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" -[[package]] -name = "httparse" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" - [[package]] name = "httparse" version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -2825,9 +4462,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2849,15 +4486,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", - "http 1.1.0", + "h2 0.4.7", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -2875,7 +4512,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -2891,7 +4528,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -2906,13 +4543,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.4.1", + "http 1.2.0", + "hyper 1.5.1", "hyper-util", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tower-service", ] @@ -2922,7 +4559,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.30", + "hyper 0.14.31", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -2935,7 +4572,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -2949,7 +4586,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "native-tls", "tokio", @@ -2959,20 +4596,19 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.1", "pin-project-lite", "socket2", "tokio", - "tower 0.4.13", "tower-service", "tracing", ] @@ -2985,7 +4621,7 @@ checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" dependencies = [ "hex", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -2994,9 +4630,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3130,7 +4766,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -3169,6 +4805,24 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67aa010c1e3da95bf151bd8b4c059b2ed7e75387cdb969b4f8f2723a43f9941" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + [[package]] name = "impl-serde" version = "0.4.0" @@ -3178,15 +4832,43 @@ dependencies = [ "serde", ] +[[package]] +name = "impl-serde" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", ] [[package]] @@ -3208,12 +4890,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "serde", ] @@ -3225,80 +4907,81 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] name = "ink_allocator" -version = "5.0.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cee56055bac6d928d425e944c5f3b69baa33c9635822fd1c00cd4afc70fde3e" +checksum = "2ec348ce75d284bc2e698187dc01da416a52dfa2d685e2a57d04e9e580447df0" dependencies = [ "cfg-if", ] [[package]] name = "ink_engine" -version = "5.0.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f357e2e867f4e222ffc4015a6e61d1073548de89f70a4e36a8b0385562777fa" +checksum = "d273f2aa983d04a6476d3c5ac76ddbef07555664b88f923996e7465e261dda48" dependencies = [ "blake2", - "derive_more", + "derive_more 1.0.0", "ink_primitives", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", ] [[package]] name = "ink_env" -version = "5.0.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cec50b7e4f8406aab25801b015d3802a52d76cfbe48ce11cfb4200fa88e296" +checksum = "f9ee6089a1836c2e92d00be97d42308b7fb2c2b51ff6150b1130166a58107092" dependencies = [ "blake2", "cfg-if", "const_env", - "derive_more", + "derive_more 1.0.0", "ink_allocator", "ink_engine", "ink_prelude", "ink_primitives", "ink_storage_traits", "num-traits", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", "paste", "rlibc", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "schnorrkel", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", + "staging-xcm 11.0.0", "static_assertions", ] [[package]] name = "ink_metadata" -version = "5.0.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98fcc0ff9292ff68c7ee7b84c93533c9ff13859ec3b148faa822e2da9954fe6" +checksum = "27135c651274087ba0578d2c07866c31d8dd481ae8de5bb7295fe3931491aa80" dependencies = [ - "derive_more", - "impl-serde", + "derive_more 1.0.0", + "impl-serde 0.4.0", "ink_prelude", "ink_primitives", "linkme", @@ -3310,33 +4993,33 @@ dependencies = [ [[package]] name = "ink_prelude" -version = "5.0.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea1734d058c80aa72e59c8ae75624fd8a51791efba21469f273156c0f4cad5c9" +checksum = "b29c9b7f686f4305f523bca5e2ae6f22a09531ec2bf0a9498cdc877959f70ad0" dependencies = [ "cfg-if", ] [[package]] name = "ink_primitives" -version = "5.0.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec35ef7f45e67a53b6142d7e7f18e6d9292d76c3a2a1da14cf8423e481813d" +checksum = "a530c1b352a53176ea718f3a65f15003e54e0474ec12353ea0e0e5bb60b25741" dependencies = [ - "derive_more", + "derive_more 1.0.0", "ink_prelude", "parity-scale-codec", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "xxhash-rust", ] [[package]] name = "ink_storage_traits" -version = "5.0.0" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ce49e3d2935fc1ec3e73117119712b187d3123339f6a31624e92f75fa2293d" +checksum = "fde9b3f4a1e355682e5d13fd5639e5da4d0a2029537292e05a4255ea1169663e" dependencies = [ "ink_metadata", "ink_prelude", @@ -3385,9 +5068,20 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-terminal" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] [[package]] name = "is_terminal_polyfill" @@ -3404,6 +5098,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -3413,11 +5116,20 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -3429,7 +5141,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", ] @@ -3456,10 +5168,11 @@ checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -3471,7 +5184,7 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3484,7 +5197,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3507,7 +5220,19 @@ checksum = "62b089779ad7f80768693755a031cc14a7766aba707cbe886674e3f79e9b7e47" dependencies = [ "jsonrpsee-core 0.23.2", "jsonrpsee-types 0.23.2", - "jsonrpsee-ws-client", + "jsonrpsee-ws-client 0.23.2", +] + +[[package]] +name = "jsonrpsee" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5c71d8c1a731cc4227c2f698d377e7848ca12c8a48866fc5e6951c43a4db843" +dependencies = [ + "jsonrpsee-client-transport 0.24.7", + "jsonrpsee-core 0.24.7", + "jsonrpsee-types 0.24.7", + "jsonrpsee-ws-client 0.24.7", ] [[package]] @@ -3523,7 +5248,7 @@ dependencies = [ "rustls-native-certs 0.7.3", "rustls-pki-types", "soketto 0.7.1", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-rustls 0.25.0", "tokio-util", @@ -3539,16 +5264,39 @@ checksum = "08163edd8bcc466c33d79e10f695cdc98c00d1e6ddfb95cec41b6b0279dd5432" dependencies = [ "base64 0.22.1", "futures-util", - "http 1.1.0", + "http 1.2.0", "jsonrpsee-core 0.23.2", "pin-project", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "rustls-platform-verifier", - "soketto 0.8.0", - "thiserror", + "soketto 0.8.1", + "thiserror 1.0.69", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "548125b159ba1314104f5bb5f38519e03a41862786aa3925cf349aae9cdd546e" +dependencies = [ + "base64 0.22.1", + "futures-util", + "http 1.2.0", + "jsonrpsee-core 0.24.7", + "pin-project", + "rustls 0.23.19", + "rustls-pki-types", + "rustls-platform-verifier", + "soketto 0.8.1", + "thiserror 1.0.69", + "tokio", + "tokio-rustls 0.26.1", "tokio-util", "tracing", "url", @@ -3565,13 +5313,13 @@ dependencies = [ "beef", "futures-timer", "futures-util", - "hyper 0.14.30", + "hyper 0.14.31", "jsonrpsee-types 0.22.5", "pin-project", - "rustc-hash", + "rustc-hash 1.1.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -3590,10 +5338,30 @@ dependencies = [ "futures-util", "jsonrpsee-types 0.23.2", "pin-project", - "rustc-hash", + "rustc-hash 1.1.0", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2882f6f8acb9fdaec7cefc4fd607119a9bd709831df7d7672a1d3b644628280" +dependencies = [ + "async-trait", + "futures-timer", + "futures-util", + "jsonrpsee-types 0.24.7", + "pin-project", + "rustc-hash 2.1.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -3606,13 +5374,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ccf93fc4a0bfe05d851d37d7c32b7f370fe94336b52a2f0efc5f1981895c2e5" dependencies = [ "async-trait", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "jsonrpsee-core 0.22.5", "jsonrpsee-types 0.22.5", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tower 0.4.13", "tracing", @@ -3629,7 +5397,7 @@ dependencies = [ "beef", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3639,10 +5407,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c465fbe385238e861fdc4d1c85e04ada6c1fd246161d26385c1b311724d2af" dependencies = [ "beef", - "http 1.1.0", + "http 1.2.0", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1" +dependencies = [ + "http 1.2.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3651,18 +5431,31 @@ version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c28759775f5cb2f1ea9667672d3fe2b0e701d1f4b7b67954e60afe7fd058b5e" dependencies = [ - "http 1.1.0", + "http 1.2.0", "jsonrpsee-client-transport 0.23.2", "jsonrpsee-core 0.23.2", "jsonrpsee-types 0.23.2", "url", ] +[[package]] +name = "jsonrpsee-ws-client" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" +dependencies = [ + "http 1.2.0", + "jsonrpsee-client-transport 0.24.7", + "jsonrpsee-core 0.24.7", + "jsonrpsee-types 0.24.7", + "url", +] + [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -3695,6 +5488,16 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + [[package]] name = "kube" version = "0.87.2" @@ -3721,7 +5524,7 @@ dependencies = [ "home", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "hyper-timeout", "jsonpath-rust", @@ -3732,11 +5535,11 @@ dependencies = [ "rand", "rustls 0.21.12", "rustls-pemfile 1.0.4", - "secrecy", + "secrecy 0.8.0", "serde", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite", "tokio-util", @@ -3759,7 +5562,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3782,7 +5585,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -3802,9 +5605,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libgit2-sys" @@ -3822,9 +5625,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libp2p" @@ -3846,7 +5649,7 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3896,16 +5699,16 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror", - "unsigned-varint", + "thiserror 1.0.69", + "unsigned-varint 0.7.2", "void", ] [[package]] name = "libp2p-identity" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" +checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" dependencies = [ "bs58", "ed25519-dalek", @@ -3914,7 +5717,7 @@ dependencies = [ "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", "tracing", "zeroize", ] @@ -4036,22 +5839,31 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "566336154b9e58a4f055f6dd4cbab62c7dc0826ce3c0a04e63b2d2ecd784cdae" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", +] + +[[package]] +name = "linregress" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9eda9dcf4f2a99787827661f312ac3219292549c2ee992bf9a6248ffb066bf7" +dependencies = [ + "nalgebra", ] [[package]] @@ -4090,11 +5902,20 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.12.3", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", ] [[package]] @@ -4106,6 +5927,54 @@ dependencies = [ "libc", ] +[[package]] +name = "macro_magic" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "macro_magic_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "macro_magic_core_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "macro_magic_macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.90", +] + [[package]] name = "matchers" version = "0.0.1" @@ -4115,12 +5984,31 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matchit" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matrixmultiply" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +dependencies = [ + "autocfg", + "rawpointer", +] + [[package]] name = "memchr" version = "2.7.4" @@ -4133,7 +6021,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.36", + "rustix 0.38.42", ] [[package]] @@ -4211,11 +6099,10 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi", "windows-sys 0.52.0", @@ -4223,18 +6110,18 @@ dependencies = [ [[package]] name = "mockito" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" +checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" dependencies = [ "assert-json-diff", "bytes", "colored", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "log", "rand", @@ -4245,11 +6132,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "multi-stash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" + [[package]] name = "multiaddr" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" dependencies = [ "arrayref", "byteorder", @@ -4260,7 +6153,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.8.0", "url", ] @@ -4277,12 +6170,12 @@ dependencies = [ [[package]] name = "multihash" -version = "0.19.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076d548d76a0e2a0d4ab471d0b1c36c577786dfc4471242035d97a12a735c492" +checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint", + "unsigned-varint 0.8.0", ] [[package]] @@ -4296,7 +6189,22 @@ dependencies = [ "log", "pin-project", "smallvec", - "unsigned-varint", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", ] [[package]] @@ -4374,6 +6282,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -4384,12 +6302,32 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "num-format" version = "0.4.4" @@ -4427,6 +6365,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -4459,18 +6398,27 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -4480,9 +6428,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -4501,7 +6449,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -4512,18 +6460,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.2+3.3.2" +version = "300.4.1+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -4549,9 +6497,9 @@ dependencies = [ [[package]] name = "os_info" -version = "3.8.2" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" +checksum = "e5ca711d8b83edbb00b44d504503cd247c9c0bd8b0fa2694f2a1a3d8165379ce" dependencies = [ "log", "windows-sys 0.52.0", @@ -4568,1375 +6516,2076 @@ dependencies = [ ] [[package]] -name = "pallet-contracts-uapi-next" -version = "6.0.3" +name = "overload" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd549c16296ea5b2eb7c65c56aba548b286c1be4d7675b424ff6ccb8319c97a9" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallet-alliance" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59378a648a0aa279a4b10650366c3389cd0a1239b1876f74bfecd268eecb086b" dependencies = [ - "bitflags 1.3.2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-collective", + "pallet-identity", "parity-scale-codec", - "paste", - "polkavm-derive 0.5.0", "scale-info", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parity-bip39" -version = "2.0.1" +name = "pallet-asset-conversion" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +checksum = "33f0078659ae95efe6a1bf138ab5250bc41ab98f22ff3651d0208684f08ae797" dependencies = [ - "bitcoin_hashes 0.13.0", - "rand", - "rand_core 0.5.1", - "serde", - "unicode-normalization", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parity-scale-codec" -version = "3.6.12" +name = "pallet-asset-conversion-ops" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "3edbeda834bcd6660f311d4eead3dabdf6d385b7308ac75b0fae941a960e6c3a" dependencies = [ - "arrayvec 0.7.6", - "bitvec", - "byte-slice-cast", - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-asset-conversion", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" +name = "pallet-asset-conversion-tx-payment" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "1ab66c4c22ac0f20e620a954ce7ba050118d6d8011e2d02df599309502064e98" dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 1.0.109", + "frame-support", + "frame-system", + "pallet-asset-conversion", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "parking" -version = "2.2.1" +name = "pallet-asset-rate" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" +checksum = "71b2149aa741bc39466bbcc92d9d0ab6e9adcf39d2790443a735ad573b3191e7" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "parking_lot" -version = "0.12.3" +name = "pallet-asset-tx-payment" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "406a486466d15acc48c99420191f96f1af018f3381fde829c467aba489030f18" dependencies = [ - "lock_api", - "parking_lot_core", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "parking_lot_core" -version = "0.9.10" +name = "pallet-assets" +version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "f45f4eb6027fc34c4650e0ed6a7e57ed3335cc364be74b4531f714237676bcee" dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "password-hash" +name = "pallet-assets-freezer" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +checksum = "127adc2250b89416b940850ce2175dab10a9297b503b1fcb05dc555bd9bd3207" dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-assets", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "paste" -version = "1.0.15" +name = "pallet-atomic-swap" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "15906a685adeabe6027e49c814a34066222dd6136187a8a79c213d0d739b6634" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "pbkdf2" -version = "0.12.2" +name = "pallet-aura" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "b31da6e794d655d1f9c4da6557a57399538d75905a7862a2ed3f7e5fb711d7e4" dependencies = [ - "digest 0.10.7", - "password-hash", + "frame-support", + "frame-system", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-aura", + "sp-runtime 39.0.2", ] [[package]] -name = "pem" -version = "3.0.4" +name = "pallet-authority-discovery" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +checksum = "ffb0208f0538d58dcb78ce1ff5e6e8641c5f37b23b20b05587e51da30ab13541" dependencies = [ - "base64 0.22.1", - "serde", + "frame-support", + "frame-system", + "pallet-session", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-authority-discovery", + "sp-runtime 39.0.2", ] [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "pallet-authorship" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "625d47577cabbe1318ccec5d612e2379002d1b6af1ab6edcef3243c66ec246df" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", +] [[package]] -name = "pest" -version = "2.7.12" +name = "pallet-babe" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" +checksum = "4ee096c0def13832475b340d00121025e0225de29604d44bc6dfcaa294c995b4" dependencies = [ - "memchr", - "thiserror", - "ucd-trie", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-babe", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", ] [[package]] -name = "pest_derive" -version = "2.7.12" +name = "pallet-bags-list" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664d22978e2815783adbdd2c588b455b1bd625299ce36b2a99881ac9627e6d8d" +checksum = "0fd23a6f94ba9c1e57c8a7f8a41327d132903a79c55c0c83f36cbae19946cf10" dependencies = [ - "pest", - "pest_generator", + "aquamarine", + "docify", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", ] [[package]] -name = "pest_generator" -version = "2.7.12" +name = "pallet-balances" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2d5487022d5d33f4c30d91c22afa240ce2a644e87fe08caad974d4eab6badbe" +checksum = "5c6945b078919acb14d126490e4b0973a688568b30142476ca69c6df2bed27ad" dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.77", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "pest_meta" -version = "2.7.12" +name = "pallet-beefy" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0091754bbd0ea592c4deb3a122ce8ecbb0753b738aa82bc055fcc2eccc8d8174" +checksum = "014d177a3aba19ac144fc6b2b5eb94930b9874734b91fd014902b6706288bb5f" dependencies = [ - "once_cell", - "pest", - "sha2 0.10.8", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-beefy", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", ] [[package]] -name = "pin-project" -version = "1.1.5" +name = "pallet-beefy-mmr" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "9c64f536e7f04cf3a0a17fdf20870ddb3d63a7690419c40f75cfd2f72b6e6d22" dependencies = [ - "pin-project-internal", + "array-bytes", + "binary-merkle-tree", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-beefy", + "pallet-mmr", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-consensus-beefy", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", ] [[package]] -name = "pin-project-internal" -version = "1.1.5" +name = "pallet-bounties" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a1163f9cd8bbc47ec0c6900a3ca67689d8d7b40bedfa6aa22b1b3c6027b1090e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "pin-project-lite" -version = "0.2.14" +name = "pallet-bridge-grandpa" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "1d825fbed9fb68bc5d344311653dc0f69caeabe647365abf79a539310b2245f6" +dependencies = [ + "bp-header-chain", + "bp-runtime", + "bp-test-utils", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-consensus-grandpa", + "sp-runtime 39.0.2", + "sp-std", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "pallet-bridge-messages" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a1decdc9fb885e46eb17f850aa14f8cf39e17f31574aa6a5fa1a9e603cc526a2" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", +] [[package]] -name = "piper" -version = "0.2.4" +name = "pallet-bridge-parachains" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "41450a8d214f20eaff57aeca8e647b20c0df7d66871ee2262609b90824bd4cca" dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", ] [[package]] -name = "pkcs8" -version = "0.10.2" +name = "pallet-bridge-relayers" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "2faead05455a965a0a0ec69ffa779933479b599e40bda809c0aa1efa72a39281" dependencies = [ - "der", - "spki", + "bp-header-chain", + "bp-messages", + "bp-relayers", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-runtime 39.0.2", + "sp-std", ] [[package]] -name = "pkg-config" -version = "0.3.30" +name = "pallet-broker" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "3043c90106d88cb93fcf0d9b6d19418f11f44cc2b11873414aec3b46044a24ea" +dependencies = [ + "bitvec", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "polkavm-common" -version = "0.5.0" +name = "pallet-child-bounties" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" +checksum = "c7f3bc38ae6584b5f57e4de3e49e5184bfc0f20692829530ae1465ffe04e09e7" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bounties", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "polkavm-common" -version = "0.8.0" +name = "pallet-collator-selection" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" +checksum = "658798d70c9054165169f6a6a96cfa9d6a5e7d24a524bc19825bf17fcbc5cc5a" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-balances", + "pallet-session", + "parity-scale-codec", + "rand", + "scale-info", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", +] [[package]] -name = "polkavm-common" -version = "0.9.0" +name = "pallet-collective" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" +checksum = "8e149f1aefd444c9a1da6ec5a94bc8a7671d7a33078f85dd19ae5b06e3438e60" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "polkavm-derive" -version = "0.5.0" +name = "pallet-collective-content" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8" +checksum = "38a6a5cbe781d9c711be74855ba32ef138f3779d6c54240c08e6d1b4bbba4d1d" dependencies = [ - "polkavm-derive-impl 0.5.0", - "syn 2.0.77", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "polkavm-derive" -version = "0.8.0" +name = "pallet-contracts" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" +checksum = "5df77077745d891c822b4275f273f336077a97e69e62a30134776aa721c96fee" dependencies = [ - "polkavm-derive-impl-macro 0.8.0", + "bitflags 1.3.2", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-contracts-proc-macro", + "pallet-contracts-uapi 12.0.0", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "smallvec", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "wasm-instrument", + "wasmi 0.32.3", ] [[package]] -name = "polkavm-derive" -version = "0.9.1" +name = "pallet-contracts-mock-network" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" -dependencies = [ - "polkavm-derive-impl-macro 0.9.0", +checksum = "309666537ed001c61a99f59fa7b98680f4a6e4e361ed3bc64f7b0237da3e3e06" +dependencies = [ + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-contracts", + "pallet-contracts-proc-macro", + "pallet-contracts-uapi 12.0.0", + "pallet-insecure-randomness-collective-flip", + "pallet-message-queue", + "pallet-proxy", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "xcm-simulator", ] [[package]] -name = "polkavm-derive-impl" -version = "0.5.0" +name = "pallet-contracts-proc-macro" +version = "23.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d" +checksum = "94226cbd48516b7c310eb5dae8d50798c1ce73a7421dc0977c55b7fc2237a283" dependencies = [ - "polkavm-common 0.5.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] -name = "polkavm-derive-impl" -version = "0.8.0" +name = "pallet-contracts-uapi" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" +checksum = "2d7a51646d9ff1d91abd0186d2c074f0dfd3b1a2d55f08a229a2f2e4bc6d1e49" dependencies = [ - "polkavm-common 0.8.0", - "proc-macro2", - "quote", - "syn 2.0.77", + "bitflags 1.3.2", + "paste", + "polkavm-derive 0.9.1", ] [[package]] -name = "polkavm-derive-impl" -version = "0.9.0" +name = "pallet-contracts-uapi" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" +checksum = "16f74b000590c33fadea48585d3ae3f4b7867e99f0a524c444d5779f36b9a1b6" dependencies = [ - "polkavm-common 0.9.0", - "proc-macro2", - "quote", - "syn 2.0.77", + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.9.1", + "scale-info", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.8.0" +name = "pallet-contracts-uapi-next" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" +checksum = "fd549c16296ea5b2eb7c65c56aba548b286c1be4d7675b424ff6ccb8319c97a9" dependencies = [ - "polkavm-derive-impl 0.8.0", - "syn 2.0.77", + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.5.0", + "scale-info", ] [[package]] -name = "polkavm-derive-impl-macro" -version = "0.9.0" +name = "pallet-conviction-voting" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +checksum = "999c242491b74395b8c5409ef644e782fe426d87ae36ad92240ffbf21ff0a76e" dependencies = [ - "polkavm-derive-impl 0.9.0", - "syn 2.0.77", + "assert_matches", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "polling" -version = "3.7.3" +name = "pallet-core-fellowship" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "d063b41df454bd128d6fefd5800af8a71ac383c9dd6f20096832537efc110a8a" dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi 0.4.0", - "pin-project-lite", - "rustix 0.38.36", - "tracing", - "windows-sys 0.59.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-ranked-collective", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "poly1305" -version = "0.8.0" +name = "pallet-delegated-staking" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +checksum = "117f003a97f980514c6db25a50c22aaec2a9ccb5664b3cb32f52fb990e0b0c12" dependencies = [ - "cpufeatures", - "opaque-debug", - "universal-hash", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "pop-cli" -version = "0.5.0" +name = "pallet-democracy" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d1dc655f50b7c65bb2fb14086608ba11af02ef2936546f7a67db980ec1f133" dependencies = [ - "anyhow", - "assert_cmd", - "axum", - "clap", - "cliclack", - "console", - "dirs", - "duct", - "env_logger", - "git2", - "os_info", - "pop-common", - "pop-contracts", - "pop-parachains", - "pop-telemetry", - "predicates", - "reqwest 0.12.7", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", "serde", - "serde_json", - "sp-core", - "sp-weights", - "strum 0.26.3", - "strum_macros 0.26.4", - "subxt", - "subxt-signer", - "tempfile", - "tokio", - "tower-http 0.6.2", - "url", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "pop-common" -version = "0.5.0" +name = "pallet-dev-mode" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1d8050c09c5e003d502c1addc7fdfbde21a854bd57787e94447078032710c8" dependencies = [ - "anyhow", - "cargo_toml", - "duct", - "flate2", - "git2", - "git2_credentials", - "mockito", - "regex", - "reqwest 0.12.7", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", "scale-info", - "serde", - "serde_json", - "strum 0.26.3", - "strum_macros 0.26.4", - "subxt", - "subxt-signer", - "tar", - "tempfile", - "thiserror", - "tokio", - "toml 0.5.11", - "toml_edit 0.22.20", - "url", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "pop-contracts" -version = "0.5.0" +name = "pallet-election-provider-multi-phase" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f9ad5ae0c13ba3727183dadf1825b6b7b0b0598ed5c366f8697e13fd540f7d" dependencies = [ - "anyhow", - "contract-build", - "contract-extrinsics", - "contract-transcode", - "dirs", - "duct", - "flate2", - "heck 0.5.0", - "ink_env", - "mockito", - "pop-common", - "reqwest 0.12.7", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-election-provider-support-benchmarking", + "parity-scale-codec", + "rand", "scale-info", - "sp-core", - "sp-weights", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", "strum 0.26.3", - "strum_macros 0.26.4", - "subxt", - "subxt-signer", - "tar", - "tempfile", - "thiserror", - "tokio", - "tokio-test", - "url", ] [[package]] -name = "pop-parachains" -version = "0.5.0" +name = "pallet-election-provider-support-benchmarking" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4111d0d27545c260c9dd0d6fc504961db59c1ec4b42e1bcdc28ebd478895c22" dependencies = [ - "anyhow", - "askama", - "clap", - "duct", - "flate2", - "glob", - "hex", - "indexmap 2.5.0", - "mockito", - "pop-common", - "reqwest 0.12.7", - "scale-info", - "scale-value", - "serde_json", - "strum 0.26.3", - "strum_macros 0.26.4", - "subxt", - "symlink", - "tar", - "tempfile", - "thiserror", - "tokio", - "tokio-test", - "toml_edit 0.22.20", - "url", - "walkdir", - "zombienet-sdk", + "frame-benchmarking", + "frame-election-provider-support", + "frame-system", + "parity-scale-codec", + "sp-npos-elections", + "sp-runtime 39.0.2", ] [[package]] -name = "pop-telemetry" -version = "0.5.0" +name = "pallet-elections-phragmen" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "705c66d6c231340c6d085a0df0319a6ce42a150f248171e88e389ab1e3ce20f5" dependencies = [ - "dirs", - "env_logger", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "mockito", - "reqwest 0.12.7", - "serde", - "serde_json", - "tempfile", - "thiserror", - "tokio", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "portable-atomic" -version = "1.7.0" +name = "pallet-fast-unstake" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "e0ee60e8ef10b3936f2700bd61fa45dcc190c61124becc63bed787addcfa0d20" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", +] [[package]] -name = "powerfmt" -version = "0.2.0" +name = "pallet-glutton" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "a1c79ab340890f6ab088a638c350ac1173a1b2a79c18004787523032025582b4" +dependencies = [ + "blake2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "ppv-lite86" -version = "0.2.20" +name = "pallet-grandpa" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "6d3a570a4aac3173ea46b600408183ca2bcfdaadc077f802f11e6055963e2449" dependencies = [ - "zerocopy", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", ] [[package]] -name = "predicates" -version = "3.1.2" +name = "pallet-identity" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +checksum = "e3a4288548de9a755e39fcb82ffb9024b6bb1ba0f582464a44423038dd7a892e" dependencies = [ - "anstyle", - "difflib", - "float-cmp", - "normalize-line-endings", - "predicates-core", - "regex", + "enumflags2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "predicates-core" -version = "1.0.8" +name = "pallet-im-online" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" +checksum = "c6fd95270cf029d16cb40fe6bd9f8ab9c78cd966666dccbca4d8bfec35c5bba5" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "parity-scale-codec", + "scale-info", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", +] [[package]] -name = "predicates-tree" -version = "1.0.11" +name = "pallet-indices" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +checksum = "c5e4b97de630427a39d50c01c9e81ab8f029a00e56321823958b39b438f7b940" dependencies = [ - "predicates-core", - "termtree", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", ] [[package]] -name = "prettyplease" -version = "0.2.22" +name = "pallet-insecure-randomness-collective-flip" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "dce7ad80675d78bd38a7a66ecbbf2d218dd32955e97f8e301d0afe6c87b0f251" dependencies = [ - "proc-macro2", - "syn 2.0.77", + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "primitive-types" -version = "0.12.2" +name = "pallet-lottery" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +checksum = "ae0920ee53cf7b0665cfb6d275759ae0537dc3850ec78da5f118d814c99d3562" dependencies = [ - "fixed-hash", - "impl-codec", - "impl-serde", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", "scale-info", - "uint", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro-crate" -version = "1.3.1" +name = "pallet-membership" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "1868b5dca4bbfd1f4a222cbb80735a5197020712a71577b496bbb7e19aaa5394" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro-crate" -version = "3.2.0" +name = "pallet-message-queue" +version = "41.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "983f7d1be18e9a089a3e23670918f5085705b4403acd3fdde31878d57b76a1a8" dependencies = [ - "toml_edit 0.22.20", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "pallet-migrations" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "9b417fc975636bce94e7c6d707e42d0706d67dfa513e72f5946918e1044beef1" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "pallet-mixnet" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "cf3fa2b7f759a47f698a403ab40c54bc8935e2969387947224cbdb4e2bc8a28a" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-mixnet", + "sp-runtime 39.0.2", ] [[package]] -name = "proc-macro2" -version = "1.0.86" +name = "pallet-mmr" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f6932dfb85f77a57c2d1fdc28a7b3a59ffe23efd8d5bb02dc3039d91347e4a3b" dependencies = [ - "unicode-ident", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-mmr-primitives", + "sp-runtime 39.0.2", ] [[package]] -name = "psm" -version = "0.1.23" +name = "pallet-multisig" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +checksum = "0e5099c9a4442efcc1568d88ca1d22d624e81ab96358f99f616c67fbd82532d2" dependencies = [ - "cc", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "ptr_meta" -version = "0.1.4" +name = "pallet-nft-fractionalization" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +checksum = "168792cf95a32fa3baf9b874efec82a45124da0a79cee1ae3c98a823e6841959" dependencies = [ - "ptr_meta_derive", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-assets", + "pallet-nfts", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "ptr_meta_derive" -version = "0.1.4" +name = "pallet-nfts" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +checksum = "59e2aad461a0849d7f0471576eeb1fe3151795bcf2ec9e15eca5cca5b9d743b2" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "enumflags2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "quick-protobuf" -version = "0.8.1" +name = "pallet-nfts-runtime-api" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +checksum = "a7a1f50c217e19dc50ff586a71eb5915df6a05bc0b25564ea20674c8cd182c1f" dependencies = [ - "byteorder", + "pallet-nfts", + "parity-scale-codec", + "sp-api", ] [[package]] -name = "quote" -version = "1.0.37" +name = "pallet-nis" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "8ac349e119880b7df1a7c4c36d919b33a498d0e9548af3c237365c654ae0c73d" dependencies = [ - "proc-macro2", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "radium" -version = "0.7.0" +name = "pallet-node-authorization" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +checksum = "39ec3133be9e767b8feafbb26edd805824faa59956da008d2dc7fcf4b4720e56" +dependencies = [ + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "rand" -version = "0.8.5" +name = "pallet-nomination-pools" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "c42906923f9f2b65b22f1211136b57c6878296ba6f6228a075c4442cc1fc1659" dependencies = [ - "libc", - "rand_chacha", - "rand_core 0.6.4", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", + "sp-tracing 17.0.1", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "pallet-nomination-pools-benchmarking" +version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "38d2eaca0349bcda923343226b8b64d25a80b67e0a1ebaaa5b0ab1e1b3b225bc" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "pallet-bags-list", + "pallet-delegated-staking", + "pallet-nomination-pools", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-staking 36.0.0", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "pallet-nomination-pools-runtime-api" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "7a9e1cb89cc2e6df06ce274a7fc814e5e688aad04c43902a10191fa3d2a56a96" +dependencies = [ + "pallet-nomination-pools", + "parity-scale-codec", + "sp-api", +] [[package]] -name = "rand_core" -version = "0.6.4" +name = "pallet-offences" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "6c4379cf853465696c1c5c03e7e8ce80aeaca0a6139d698abe9ecb3223fd732a" dependencies = [ - "getrandom", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "reconnecting-jsonrpsee-ws-client" -version = "0.4.3" +name = "pallet-offences-benchmarking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06fa4f17e09edfc3131636082faaec633c7baa269396b4004040bc6c52f49f65" +checksum = "69aa1b24cdffc3fa8c89cdea32c83f1bf9c1c82a87fa00e57ae4be8e85f5e24f" dependencies = [ - "cfg_aliases", - "finito", - "futures", - "jsonrpsee 0.23.2", - "serde_json", - "thiserror", - "tokio", - "tracing", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-babe", + "pallet-balances", + "pallet-grandpa", + "pallet-im-online", + "pallet-offences", + "pallet-session", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "redox_syscall" -version = "0.5.3" +name = "pallet-paged-list" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "c8e099fb116068836b17ca4232dc52f762b69dc8cd4e33f509372d958de278b0" dependencies = [ - "bitflags 2.6.0", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-metadata-ir", + "sp-runtime 39.0.2", ] [[package]] -name = "redox_users" -version = "0.4.6" +name = "pallet-parameters" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "b9aba424d55e17b2a2bec766a41586eab878137704d4803c04bebd6a4743db7b" dependencies = [ - "getrandom", - "libredox", - "thiserror", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "ref-cast" -version = "1.0.23" +name = "pallet-preimage" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +checksum = "407828bc48c6193ac076fdf909b2fadcaaecd65f42b0b0a04afe22fe8e563834" dependencies = [ - "ref-cast-impl", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "ref-cast-impl" -version = "1.0.23" +name = "pallet-proxy" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +checksum = "d39df395f0dbcf07dafe842916adea3266a87ce36ed87b5132184b6bcd746393" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex" -version = "1.10.6" +name = "pallet-ranked-collective" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "c2b38708feaed202debf1ac6beffaa5e20c99a9825c5ca0991753c2d4eaaf3ac" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex-automata" -version = "0.1.10" +name = "pallet-recovery" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "406a116aa6d05f88f3c10d79ff89cf577323680a48abd8e5550efb47317e67fa" dependencies = [ - "regex-syntax 0.6.29", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex-automata" -version = "0.4.7" +name = "pallet-referenda" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "c3008c20531d1730c9b457ae77ecf0e3c9b07aaf8c4f5d798d61ef6f0b9e2d4b" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.4", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "regex-syntax" -version = "0.6.29" +name = "pallet-remark" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "a3e8cae0e20888065ec73dda417325c6ecabf797f4002329484b59c25ecc34d4" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "regex-syntax" -version = "0.8.4" +name = "pallet-revive" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "be02c94dcbadd206a910a244ec19b493aac793eed95e23d37d6699547234569f" +dependencies = [ + "bitflags 1.3.2", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-revive-fixtures", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "parity-scale-codec", + "paste", + "polkavm 0.10.0", + "scale-info", + "serde", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", +] [[package]] -name = "rend" -version = "0.4.2" +name = "pallet-revive-fixtures" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +checksum = "8a38c27f1531f36e5327f3084eb24cf1c9dd46b372e030c0169e843ce363105e" dependencies = [ - "bytecheck", + "anyhow", + "frame-system", + "parity-wasm", + "polkavm-linker 0.10.0", + "sp-runtime 39.0.2", + "tempfile", + "toml 0.8.19", ] [[package]] -name = "reqwest" -version = "0.11.27" +name = "pallet-revive-mock-network" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.30", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", +checksum = "60e74591d44dbd78db02c8593f5caa75bd61bcc4d63999302150223fb969ae37" +dependencies = [ + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-message-queue", + "pallet-proxy", + "pallet-revive", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "xcm-simulator", ] [[package]] -name = "reqwest" -version = "0.12.7" +name = "pallet-revive-proc-macro" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "0cc16d1f7cee6a1ee6e8cd710e16230d59fb4935316c1704cf770e4d2335f8d4" dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.4.6", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.4.1", - "hyper-rustls 0.27.3", - "hyper-tls 0.6.0", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 2.1.3", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "system-configuration 0.6.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-registry", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] -name = "rfc6979" -version = "0.4.0" +name = "pallet-revive-uapi" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "ecb4686c8415619cc13e43fadef146ffff46424d9b4d037fe4c069de52708aac" dependencies = [ - "hmac 0.12.1", - "subtle", + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.10.0", + "scale-info", ] [[package]] -name = "ring" -version = "0.17.8" +name = "pallet-root-offences" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "b35774b830928daaeeca7196cead7c56eeed952a6616ad6dc5ec068d8c85c81a" dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", + "frame-support", + "frame-system", + "pallet-session", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "rkyv" -version = "0.7.45" +name = "pallet-root-testing" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +checksum = "be95e7c320ac1d381715364cd721e67ab3152ab727f8e4defd3a92e41ebbc880" dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rkyv_derive" -version = "0.7.45" +name = "pallet-safe-mode" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +checksum = "6d3e67dd4644c168cedbf257ac3dd2527aad81acf4a0d413112197094e549f76" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-proxy", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rlibc" -version = "1.0.0" +name = "pallet-salary" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" +checksum = "0544a71dba06a9a29da0778ba8cb37728c3b9a8377ac9737c4b1bc48c618bc2f" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-ranked-collective", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "rust_decimal" -version = "1.36.0" +name = "pallet-scheduler" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +checksum = "26899a331e7ab5f7d5966cbf203e1cf5bd99cd110356d7ddcaa7597087cdc0b5" dependencies = [ - "arrayvec 0.7.6", - "borsh", - "bytes", - "num-traits", - "rand", - "rkyv", - "serde", - "serde_json", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", ] [[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hash" -version = "1.1.0" +name = "pallet-scored-pool" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +checksum = "9f84b48bb4702712c902f43931c4077d3a1cb6773c8d8c290d4a6251f6bc2a5c" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "rustc_version" -version = "0.4.1" +name = "pallet-session" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "8474b62b6b7622f891e83d922a589e2ad5be5471f5ca47d45831a797dba0b3f4" dependencies = [ - "semver", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", + "sp-state-machine 0.43.0", + "sp-trie 37.0.0", ] [[package]] -name = "rustix" -version = "0.36.17" +name = "pallet-session-benchmarking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" +checksum = "8aadce7df0fee981721983795919642648b846dab5ab9096f82c2cea781007d0" dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.45.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-session", + "pallet-staking", + "parity-scale-codec", + "rand", + "sp-runtime 39.0.2", + "sp-session", ] [[package]] -name = "rustix" -version = "0.38.36" +name = "pallet-skip-feeless-payment" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" +checksum = "f8c2cb0dae13d2c2d2e76373f337d408468f571459df1900cbd7458f21cf6c01" dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls" -version = "0.21.12" +name = "pallet-society" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "d1dc69fea8a8de343e71691f009d5fece6ae302ed82b7bb357882b2ea6454143" dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "ring", - "rustls-webpki 0.101.7", - "sct", + "parity-scale-codec", + "rand_chacha", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls" -version = "0.22.4" +name = "pallet-staking" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "c870d123f4f053b56af808a4beae1ffc4309a696e829796c26837936c926db3b" dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "log", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-application-crypto 38.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "rustls" -version = "0.23.13" +name = "pallet-staking-reward-fn" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "988a7ebeacc84d4bdb0b12409681e956ffe35438447d8f8bc78db547cffb6ebc" dependencies = [ "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", + "sp-arithmetic 26.0.0", ] [[package]] -name = "rustls-native-certs" -version = "0.6.3" +name = "pallet-staking-runtime-api" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "e7298559ef3a6b2f5dfbe9a3b8f3d22f2ff9b073c97f4c4853d2b316d973e72d" dependencies = [ - "openssl-probe", - "rustls-pemfile 1.0.4", - "schannel", - "security-framework", + "parity-scale-codec", + "sp-api", + "sp-staking 36.0.0", ] [[package]] -name = "rustls-native-certs" -version = "0.7.3" +name = "pallet-state-trie-migration" +version = "40.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +checksum = "138c15b4200b9dc4c3e031def6a865a235cdc76ff91ee96fba19ca1787c9dda6" dependencies = [ - "openssl-probe", - "rustls-pemfile 2.1.3", - "rustls-pki-types", - "schannel", - "security-framework", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "pallet-statement" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "5e03e147efa900e75cd106337f36da3d7dcd185bd9e5f5c3df474c08c3c37d16" dependencies = [ - "base64 0.21.7", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-statement-store", ] [[package]] -name = "rustls-pemfile" -version = "2.1.3" +name = "pallet-sudo" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "1574fe2aed3d52db4a389b77b53d8c9758257b121e3e7bbe24c4904e11681e0e" dependencies = [ - "base64 0.22.1", - "rustls-pki-types", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls-pki-types" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" - -[[package]] -name = "rustls-platform-verifier" -version = "0.3.4" +name = "pallet-timestamp" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +checksum = "a9ba9b71bbfd33ae672f23ba7efaeed2755fdac37b8f946cb7474fc37841b7e1" dependencies = [ - "core-foundation", - "core-foundation-sys", - "jni", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "once_cell", - "rustls 0.23.13", - "rustls-native-certs 0.7.3", - "rustls-platform-verifier-android", - "rustls-webpki 0.102.8", - "security-framework", - "security-framework-sys", - "webpki-roots", - "winapi", + "parity-scale-codec", + "scale-info", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-storage 21.0.0", + "sp-timestamp", ] [[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - -[[package]] -name = "rustls-webpki" -version = "0.101.7" +name = "pallet-tips" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "aa1d4371a70c309ba11624933f8f5262fe4edad0149c556361d31f26190da936" dependencies = [ - "ring", - "untrusted", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-treasury", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustls-webpki" -version = "0.102.8" +name = "pallet-transaction-payment" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "47b1aa3498107a30237f941b0f02180db3b79012c3488878ff01a4ac3e8ee04e" dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "rustversion" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ruzstd" -version = "0.5.0" +name = "pallet-transaction-payment-rpc-runtime-api" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +checksum = "49fdf5ab71e9dbcadcf7139736b6ea6bac8ec4a83985d46cbd130e1eec770e41" dependencies = [ - "byteorder", - "derive_more", - "twox-hash", + "pallet-transaction-payment", + "parity-scale-codec", + "sp-api", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", ] [[package]] -name = "rw-stream-sink" -version = "0.4.0" +name = "pallet-transaction-storage" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +checksum = "f8c337a972a6a796c0a0acc6c03b5e02901c43ad721ce79eb87b45717d75c93b" dependencies = [ - "futures", - "pin-project", - "static_assertions", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-inherents", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-transaction-storage-proof", ] [[package]] -name = "ryu" -version = "1.0.18" +name = "pallet-treasury" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "98bfdd3bb9b58fb010bcd419ff5bf940817a8e404cdbf7886a53ac730f5dda2b" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] [[package]] -name = "same-file" -version = "1.0.6" +name = "pallet-tx-pause" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "cee153f5be5efc84ebd53aa581e5361cde17dc3669ef80d8ad327f4041d89ebe" dependencies = [ - "winapi-util", + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-proxy", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-bits" -version = "0.4.0" +name = "pallet-uniques" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" +checksum = "c2b13cdaedf2d5bd913a5f6e637cb52b5973d8ed4b8d45e56d921bc4d627006f" dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", "scale-info", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-bits" -version = "0.6.0" +name = "pallet-utility" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" +checksum = "2fdcade6efc0b66fc7fc4138964802c02d0ffb7380d894e26b9dd5073727d2b3" dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "scale-type-resolver", - "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-decode" -version = "0.10.0" +name = "pallet-vesting" +version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" +checksum = "807df2ef13ab6bf940879352c3013bfa00b670458b4c125c2f60e5753f68e3d5" dependencies = [ - "derive_more", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", - "scale-bits 0.4.0", - "scale-decode-derive 0.10.0", "scale-info", - "smallvec", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-decode" -version = "0.13.1" +name = "pallet-whitelist" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" +checksum = "1ef17df925290865cf37096dd0cb76f787df11805bba01b1d0ca3e106d06280b" dependencies = [ - "derive_more", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", - "primitive-types", - "scale-bits 0.6.0", - "scale-decode-derive 0.13.1", - "scale-type-resolver", - "smallvec", + "scale-info", + "sp-api", + "sp-runtime 39.0.2", ] [[package]] -name = "scale-decode-derive" -version = "0.10.0" +name = "pallet-xcm" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" +checksum = "989676964dbda5f5275650fbdcd3894fe7fac626d113abf89d572b4952adcc36" dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", + "bounded-collections", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "tracing", + "xcm-runtime-apis", ] [[package]] -name = "scale-decode-derive" -version = "0.13.1" +name = "pallet-xcm-benchmarks" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021" +checksum = "2da423463933b42f4a4c74175f9e9295a439de26719579b894ce533926665e4a" dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "scale-encode" -version = "0.5.0" +name = "pallet-xcm-bridge-hub" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" +checksum = "d5f9670065b7cba92771060a4a3925b6650ff67611443ccfccd5aa356f7d5aac" dependencies = [ - "derive_more", + "bp-messages", + "bp-runtime", + "bp-xcm-bridge-hub", + "frame-support", + "frame-system", + "log", + "pallet-bridge-messages", "parity-scale-codec", - "scale-encode-derive 0.5.0", "scale-info", - "smallvec", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "scale-encode" -version = "0.7.1" +name = "pallet-xcm-bridge-hub-router" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba0b9c48dc0eb20c60b083c29447c0c4617cb7c4a4c9fef72aa5c5bc539e15e" +checksum = "f3b5347c826b721098ef39afb0d750e621c77538044fc1e865af1a8747824fdf" dependencies = [ - "derive_more", + "bp-xcm-bridge-hub-router", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", - "primitive-types", - "scale-bits 0.6.0", - "scale-encode-derive 0.7.1", - "scale-type-resolver", - "smallvec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", ] [[package]] -name = "scale-encode-derive" -version = "0.5.0" +name = "parachains-common" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" +checksum = "c9460a69f409be27c62161d8b4d36ffc32735d09a4f9097f9c789db0cca7196c" dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-support", + "frame-system", + "log", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", + "pallet-xcm", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "scale-info", + "sp-consensus-aura", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-executor", + "substrate-wasm-builder", +] + +[[package]] +name = "parachains-runtimes-test-utils" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287d2db0a2d19466caa579a69f021bfdc6fa352f382c8395dade58d1d0c6adfe" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-relay-sproof-builder", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-timestamp", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "sp-consensus-aura", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-executor", + "substrate-wasm-builder", ] [[package]] -name = "scale-encode-derive" -version = "0.7.1" +name = "parity-bip39" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82ab7e60e2d9c8d47105f44527b26f04418e5e624ffc034f6b4a86c0ba19c5bf" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ - "darling 0.14.4", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", + "bitcoin_hashes 0.13.0", + "rand", + "rand_core 0.6.4", + "serde", + "unicode-normalization", ] [[package]] -name = "scale-info" -version = "2.11.3" +name = "parity-bytes" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ + "arrayvec 0.7.6", "bitvec", - "cfg-if", - "derive_more", - "parity-scale-codec", - "scale-info-derive", - "schemars", + "byte-slice-cast", + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec-derive", "serde", ] [[package]] -name = "scale-info-derive" -version = "2.11.3" +name = "parity-scale-codec-derive" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -5945,1058 +8594,4861 @@ dependencies = [ ] [[package]] -name = "scale-type-resolver" -version = "0.2.0" +name = "parity-util-mem" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" dependencies = [ - "scale-info", + "cfg-if", + "ethereum-types", + "hashbrown 0.12.3", + "impl-trait-for-tuples", + "lru 0.8.1", + "parity-util-mem-derive", + "parking_lot", + "primitive-types 0.12.2", "smallvec", + "winapi", ] [[package]] -name = "scale-typegen" -version = "0.8.0" +name = "parity-util-mem-derive" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac" +checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ "proc-macro2", - "quote", - "scale-info", - "syn 2.0.77", - "thiserror", -] - -[[package]] -name = "scale-value" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4d772cfb7569e03868400344a1695d16560bf62b86b918604773607d39ec84" -dependencies = [ - "base58", - "blake2", - "derive_more", - "either", - "frame-metadata 15.1.0", - "parity-scale-codec", - "scale-bits 0.6.0", - "scale-decode 0.13.1", - "scale-encode 0.7.1", - "scale-info", - "scale-type-resolver", - "serde", - "yap", + "syn 1.0.109", + "synstructure 0.12.6", ] [[package]] -name = "schannel" -version = "0.1.24" +name = "parity-wasm" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" -dependencies = [ - "windows-sys 0.59.0", -] +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" [[package]] -name = "schemars" -version = "0.8.21" +name = "parking" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] -name = "schemars_derive" -version = "0.8.21" +name = "parking_lot" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.77", + "lock_api", + "parking_lot_core", ] [[package]] -name = "schnellru" -version = "0.2.3" +name = "parking_lot_core" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "ahash 0.8.11", "cfg-if", - "hashbrown 0.13.2", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", ] [[package]] -name = "schnorrkel" -version = "0.11.4" +name = "password-hash" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ - "aead", - "arrayref", - "arrayvec 0.7.6", - "curve25519-dalek 4.1.3", - "getrandom_or_panic", - "merlin", + "base64ct", "rand_core 0.6.4", - "serde_bytes", - "sha2 0.10.8", "subtle", - "zeroize", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "scratch" -version = "1.0.7" +name = "pbkdf2" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", + "password-hash", +] [[package]] -name = "sct" -version = "0.7.1" +name = "pem" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "ring", - "untrusted", + "base64 0.22.1", + "serde", ] [[package]] -name = "seahash" -version = "4.1.0" +name = "percent-encoding" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] -name = "sec1" -version = "0.7.3" +name = "pest" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "serdect", - "subtle", - "zeroize", + "memchr", + "thiserror 2.0.6", + "ucd-trie", ] [[package]] -name = "secp256k1" -version = "0.28.2" +name = "pest_derive" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" dependencies = [ - "secp256k1-sys", + "pest", + "pest_generator", ] [[package]] -name = "secp256k1-sys" -version = "0.9.2" +name = "pest_generator" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" dependencies = [ - "cc", + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] -name = "secrecy" -version = "0.8.0" +name = "pest_meta" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" dependencies = [ - "serde", - "zeroize", + "once_cell", + "pest", + "sha2 0.10.8", ] [[package]] -name = "security-framework" -version = "2.11.1" +name = "pin-project" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-foundation-sys", - "libc", - "num-bigint", - "security-framework-sys", + "pin-project-internal", ] [[package]] -name = "security-framework-sys" -version = "2.11.1" +name = "pin-project-internal" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ - "core-foundation-sys", - "libc", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] -name = "semver" -version = "1.0.23" +name = "pin-project-lite" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] -name = "serde" -version = "1.0.210" +name = "pin-utils" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" -dependencies = [ - "serde_derive", -] +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "serde-value" -version = "0.7.0" +name = "piper" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ - "ordered-float", - "serde", + "atomic-waker", + "fastrand", + "futures-io", ] [[package]] -name = "serde_bytes" -version = "0.11.15" +name = "pkcs8" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "serde", + "der", + "spki", ] [[package]] -name = "serde_derive" -version = "1.0.210" +name = "pkg-config" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", -] +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] -name = "serde_derive_internals" -version = "0.29.1" +name = "polkadot-ckb-merkle-mountain-range" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +checksum = "a4b44320e5f7ce2c18227537a3032ae5b2c476a7e8eddba45333e1011fc31b92" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "cfg-if", + "itertools 0.10.5", ] [[package]] -name = "serde_json" -version = "1.0.128" +name = "polkadot-core-primitives" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "e2900d3b857e34c480101618a950c3a4fbcddc8c0d50573d48553376185908b8" dependencies = [ - "indexmap 2.5.0", - "itoa", - "memchr", - "ryu", - "serde", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", ] [[package]] -name = "serde_path_to_error" -version = "0.1.16" +name = "polkadot-parachain-primitives" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "52b5648a2e8ce1f9a0f8c41c38def670cefd91932cd793468e1a5b0b0b4e4af1" dependencies = [ - "itoa", + "bounded-collections", + "derive_more 0.99.18", + "parity-scale-codec", + "polkadot-core-primitives", + "scale-info", "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", ] [[package]] -name = "serde_repr" -version = "0.1.19" +name = "polkadot-primitives" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "b57bc055fa389372ec5fc0001b99aeffd50f3fd379280ce572d935189bb58dd8" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", + "bitvec", + "hex-literal", + "log", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-authority-discovery", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-staking 34.0.0", ] [[package]] -name = "serde_spanned" -version = "0.6.7" +name = "polkadot-primitives" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "6bb20b75d33212150242d39890d7ededab55f1084160c337f15d0eb8ca8c3ad4" dependencies = [ + "bitvec", + "hex-literal", + "log", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "scale-info", "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-authority-discovery", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "polkadot-runtime-common" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "dc15154ba5ca55d323fcf7af0f5dcd39d58dcb4dfac3d9b30404840a6d8bbde4" dependencies = [ - "form_urlencoded", - "itoa", - "ryu", + "bitvec", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "libsecp256k1", + "log", + "pallet-asset-rate", + "pallet-authorship", + "pallet-balances", + "pallet-broker", + "pallet-election-provider-multi-phase", + "pallet-fast-unstake", + "pallet-identity", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-fn", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-treasury", + "pallet-vesting", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "rustc-hex", + "scale-info", "serde", + "serde_derive", + "slot-range-helper", + "sp-api", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-npos-elections", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "static_assertions", ] [[package]] -name = "serde_with" -version = "3.9.0" +name = "polkadot-runtime-metrics" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "2c306f1ace7644a24de860479f92cf8d6467393bb0c9b0777c57e2d42c9d452a" dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.5.0", - "serde", - "serde_derive", - "serde_json", - "time", + "bs58", + "frame-benchmarking", + "parity-scale-codec", + "polkadot-primitives 16.0.0", + "sp-tracing 17.0.1", ] [[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" +name = "polkadot-runtime-parachains" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +checksum = "bd58e3a17e5df678f5737b018cbfec603af2c93bec56bbb9f8fb8b2b017b54b1" dependencies = [ - "indexmap 2.5.0", - "itoa", - "ryu", + "bitflags 1.3.2", + "bitvec", + "derive_more 0.99.18", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-broker", + "pallet-message-queue", + "pallet-mmr", + "pallet-session", + "pallet-staking", + "pallet-timestamp", + "pallet-vesting", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-metrics", + "rand", + "rand_chacha", + "scale-info", "serde", - "unsafe-libyaml", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-session", + "sp-staking 36.0.0", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", ] [[package]] -name = "serdect" -version = "0.2.0" +name = "polkadot-sdk" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +checksum = "eb819108697967452fa6d8d96ab4c0d48cbaa423b3156499dcb24f1cf95d6775" +dependencies = [ + "asset-test-utils", + "assets-common", + "binary-merkle-tree", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "bp-xcm-bridge-hub", + "bp-xcm-bridge-hub-router", + "bridge-hub-common", + "bridge-hub-test-utils", + "bridge-runtime-common", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-pallet-session-benchmarking", + "cumulus-pallet-solo-to-para", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-ping", + "cumulus-primitives-aura", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-primitives-proof-size-hostfunction", + "cumulus-primitives-storage-weight-reclaim", + "cumulus-primitives-timestamp", + "cumulus-primitives-utility", + "cumulus-test-relay-sproof-builder", + "frame-benchmarking", + "frame-benchmarking-pallet-pov", + "frame-election-provider-support", + "frame-executive", + "frame-metadata-hash-extension", + "frame-support", + "frame-support-procedural", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "pallet-alliance", + "pallet-asset-conversion", + "pallet-asset-conversion-ops", + "pallet-asset-conversion-tx-payment", + "pallet-asset-rate", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-assets-freezer", + "pallet-atomic-swap", + "pallet-aura", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-bags-list", + "pallet-balances", + "pallet-beefy", + "pallet-beefy-mmr", + "pallet-bounties", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-broker", + "pallet-child-bounties", + "pallet-collator-selection", + "pallet-collective", + "pallet-collective-content", + "pallet-contracts", + "pallet-contracts-mock-network", + "pallet-conviction-voting", + "pallet-core-fellowship", + "pallet-delegated-staking", + "pallet-democracy", + "pallet-dev-mode", + "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", + "pallet-elections-phragmen", + "pallet-fast-unstake", + "pallet-glutton", + "pallet-grandpa", + "pallet-identity", + "pallet-im-online", + "pallet-indices", + "pallet-insecure-randomness-collective-flip", + "pallet-lottery", + "pallet-membership", + "pallet-message-queue", + "pallet-migrations", + "pallet-mixnet", + "pallet-mmr", + "pallet-multisig", + "pallet-nft-fractionalization", + "pallet-nfts", + "pallet-nfts-runtime-api", + "pallet-nis", + "pallet-node-authorization", + "pallet-nomination-pools", + "pallet-nomination-pools-benchmarking", + "pallet-nomination-pools-runtime-api", + "pallet-offences", + "pallet-offences-benchmarking", + "pallet-paged-list", + "pallet-parameters", + "pallet-preimage", + "pallet-proxy", + "pallet-ranked-collective", + "pallet-recovery", + "pallet-referenda", + "pallet-remark", + "pallet-revive", + "pallet-revive-fixtures", + "pallet-revive-mock-network", + "pallet-root-offences", + "pallet-root-testing", + "pallet-safe-mode", + "pallet-salary", + "pallet-scheduler", + "pallet-scored-pool", + "pallet-session", + "pallet-session-benchmarking", + "pallet-skip-feeless-payment", + "pallet-society", + "pallet-staking", + "pallet-staking-reward-fn", + "pallet-staking-runtime-api", + "pallet-state-trie-migration", + "pallet-statement", + "pallet-sudo", + "pallet-timestamp", + "pallet-tips", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-transaction-storage", + "pallet-treasury", + "pallet-tx-pause", + "pallet-uniques", + "pallet-utility", + "pallet-vesting", + "pallet-whitelist", + "pallet-xcm", + "pallet-xcm-benchmarks", + "pallet-xcm-bridge-hub", + "pallet-xcm-bridge-hub-router", + "parachains-common", + "parachains-runtimes-test-utils", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-common", + "polkadot-runtime-metrics", + "polkadot-runtime-parachains", + "polkadot-sdk-frame", + "sc-executor", + "slot-range-helper", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-ethereum", + "snowbridge-outbound-queue-merkle-tree", + "snowbridge-outbound-queue-runtime-api", + "snowbridge-pallet-ethereum-client", + "snowbridge-pallet-ethereum-client-fixtures", + "snowbridge-pallet-inbound-queue", + "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-pallet-outbound-queue", + "snowbridge-pallet-system", + "snowbridge-router-primitives", + "snowbridge-runtime-common", + "snowbridge-runtime-test-common", + "snowbridge-system-runtime-api", + "sp-api", + "sp-api-proc-macro", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-consensus-grandpa", + "sp-consensus-pow", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-core-hashing", + "sp-crypto-ec-utils", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.29.0", + "sp-genesis-builder", + "sp-inherents", + "sp-io 38.0.0", + "sp-keyring", + "sp-keystore 0.40.0", + "sp-metadata-ir", + "sp-mixnet", + "sp-mmr-primitives", + "sp-npos-elections", + "sp-offchain", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-session", + "sp-staking 36.0.0", + "sp-state-machine 0.43.0", + "sp-statement-store", + "sp-std", + "sp-storage 21.0.0", + "sp-timestamp", + "sp-tracing 17.0.1", + "sp-transaction-pool", + "sp-transaction-storage-proof", + "sp-trie 37.0.0", + "sp-version", + "sp-wasm-interface 21.0.1", + "sp-weights 31.0.0", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-bip39 0.6.0", + "testnet-parachains-constants", + "xcm-runtime-apis", +] + +[[package]] +name = "polkadot-sdk-frame" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbdeb15ce08142082461afe1a62c15f7ce10a731d91b203ad6a8dc8d2e4a6a54" dependencies = [ - "base16ct", - "serde", + "docify", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-arithmetic 26.0.0", + "sp-block-builder", + "sp-consensus-aura", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-inherents", + "sp-io 38.0.0", + "sp-offchain", + "sp-runtime 39.0.2", + "sp-session", + "sp-storage 21.0.0", + "sp-transaction-pool", + "sp-version", ] [[package]] -name = "sha-1" -version = "0.9.8" +name = "polkavm" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +checksum = "8a3693e5efdb2bf74e449cd25fd777a28bd7ed87e41f5d5da75eb31b4de48b94" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "libc", + "log", + "polkavm-assembler 0.9.0", + "polkavm-common 0.9.0", + "polkavm-linux-raw 0.9.0", ] [[package]] -name = "sha1" -version = "0.10.6" +name = "polkavm" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "b7ec0c5935f2eff23cfc4653002f4f8d12b37f87a720e0631282d188c32089d6" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "libc", + "log", + "polkavm-assembler 0.10.0", + "polkavm-common 0.10.0", + "polkavm-linux-raw 0.10.0", ] [[package]] -name = "sha2" -version = "0.9.9" +name = "polkavm-assembler" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "1fa96d6d868243acc12de813dd48e756cbadcc8e13964c70d272753266deadc1" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "log", ] [[package]] -name = "sha2" -version = "0.10.8" +name = "polkavm-assembler" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "d8e4fd5a43100bf1afe9727b8130d01f966f5cfc9144d5604b21e795c2bcd80e" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "log", ] [[package]] -name = "sha3" -version = "0.10.8" +name = "polkavm-common" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" + +[[package]] +name = "polkavm-common" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c99f7eee94e7be43ba37eef65ad0ee8cbaf89b7c00001c3f6d2be985cb1817" + +[[package]] +name = "polkavm-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" dependencies = [ - "digest 0.10.7", - "keccak", + "log", ] [[package]] -name = "sharded-slab" -version = "0.1.7" +name = "polkavm-common" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" dependencies = [ - "lazy_static", + "log", + "polkavm-assembler 0.10.0", ] [[package]] -name = "shared_child" -version = "1.0.1" +name = "polkavm-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" +checksum = "6380dbe1fb03ecc74ad55d841cfc75480222d153ba69ddcb00977866cbdabdb8" dependencies = [ - "libc", - "windows-sys 0.59.0", + "polkavm-derive-impl 0.5.0", + "syn 2.0.90", ] [[package]] -name = "shell-words" -version = "1.1.0" +name = "polkavm-derive" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +checksum = "79fa916f7962348bd1bb1a65a83401675e6fc86c51a0fdbcf92a3108e58e6125" +dependencies = [ + "polkavm-derive-impl-macro 0.8.0", +] [[package]] -name = "shlex" -version = "1.3.0" +name = "polkavm-derive" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +dependencies = [ + "polkavm-derive-impl-macro 0.9.0", +] [[package]] -name = "signal-hook" -version = "0.3.17" +name = "polkavm-derive" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" dependencies = [ - "libc", - "signal-hook-registry", + "polkavm-derive-impl-macro 0.10.0", ] [[package]] -name = "signal-hook-mio" -version = "0.2.4" +name = "polkavm-derive-impl" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +checksum = "dc8211b3365bbafb2fb32057d68b0e1ca55d079f5cf6f9da9b98079b94b3987d" dependencies = [ - "libc", - "mio 0.8.11", - "signal-hook", + "polkavm-common 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] -name = "signal-hook-registry" -version = "1.4.2" +name = "polkavm-derive-impl" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "c10b2654a8a10a83c260bfb93e97b262cf0017494ab94a65d389e0eda6de6c9c" dependencies = [ - "libc", + "polkavm-common 0.8.0", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] -name = "signature" -version = "2.2.0" +name = "polkavm-derive-impl" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", + "polkavm-common 0.9.0", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] -name = "simdutf8" -version = "0.1.4" +name = "polkavm-derive-impl" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "7855353a5a783dd5d09e3b915474bddf66575f5a3cf45dec8d1c5e051ba320dc" +dependencies = [ + "polkavm-common 0.10.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] [[package]] -name = "similar" -version = "2.6.0" +name = "polkavm-derive-impl-macro" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "15e85319a0d5129dc9f021c62607e0804f5fb777a05cdda44d750ac0732def66" +dependencies = [ + "polkavm-derive-impl 0.8.0", + "syn 2.0.90", +] [[package]] -name = "simple-mermaid" -version = "0.1.1" +name = "polkavm-derive-impl-macro" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" +checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +dependencies = [ + "polkavm-derive-impl 0.9.0", + "syn 2.0.90", +] [[package]] -name = "siphasher" -version = "1.0.1" +name = "polkavm-derive-impl-macro" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" +dependencies = [ + "polkavm-derive-impl 0.10.0", + "syn 2.0.90", +] + +[[package]] +name = "polkavm-linker" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.32.2", + "polkavm-common 0.9.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linker" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.36.5", + "polkavm-common 0.10.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linux-raw" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" + +[[package]] +name = "polkavm-linux-raw" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix 0.38.42", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "pop-cli" +version = "0.5.0" +dependencies = [ + "anyhow", + "assert_cmd", + "axum", + "clap", + "cliclack", + "console", + "dirs", + "duct", + "env_logger 0.11.5", + "git2", + "os_info", + "pop-common", + "pop-contracts", + "pop-parachains", + "pop-telemetry", + "predicates", + "reqwest 0.12.9", + "serde", + "serde_json", + "sp-core 31.0.0", + "sp-weights 30.0.0", + "strum 0.26.3", + "strum_macros 0.26.4", + "subxt 0.37.0", + "subxt-signer 0.37.0", + "tempfile", + "tokio", + "tower-http 0.6.2", + "url", +] + +[[package]] +name = "pop-common" +version = "0.5.0" +dependencies = [ + "anyhow", + "cargo_toml", + "duct", + "flate2", + "git2", + "git2_credentials", + "mockito", + "regex", + "reqwest 0.12.9", + "scale-info", + "serde", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "subxt 0.37.0", + "subxt-signer 0.37.0", + "tar", + "tempfile", + "thiserror 1.0.69", + "tokio", + "toml 0.5.11", + "toml_edit 0.22.22", + "url", +] + +[[package]] +name = "pop-contracts" +version = "0.5.0" +dependencies = [ + "anyhow", + "contract-build", + "contract-extrinsics", + "contract-transcode", + "dirs", + "duct", + "flate2", + "heck 0.5.0", + "ink_env", + "mockito", + "pop-common", + "reqwest 0.12.9", + "scale-info", + "sp-core 31.0.0", + "sp-weights 30.0.0", + "strum 0.26.3", + "strum_macros 0.26.4", + "subxt 0.37.0", + "subxt-signer 0.37.0", + "tar", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-test", + "url", +] + +[[package]] +name = "pop-parachains" +version = "0.5.0" +dependencies = [ + "anyhow", + "askama", + "clap", + "duct", + "flate2", + "glob", + "hex", + "indexmap 2.7.0", + "mockito", + "pop-common", + "reqwest 0.12.9", + "scale-info", + "scale-value 0.16.3", + "serde_json", + "strum 0.26.3", + "strum_macros 0.26.4", + "subxt 0.37.0", + "symlink", + "tar", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-test", + "toml_edit 0.22.22", + "url", + "walkdir", + "zombienet-sdk", +] + +[[package]] +name = "pop-telemetry" +version = "0.5.0" +dependencies = [ + "dirs", + "env_logger 0.11.5", + "log", + "mockito", + "reqwest 0.12.9", + "serde", + "serde_json", + "tempfile", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "predicates" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +dependencies = [ + "anstyle", + "difflib", + "float-cmp", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" + +[[package]] +name = "predicates-tree" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.90", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.0", + "impl-serde 0.5.0", + "scale-info", + "uint 0.10.0", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.22", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "proc-macro-warning" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "psm" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +dependencies = [ + "cc", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-protobuf" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +dependencies = [ + "byteorder", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "reconnecting-jsonrpsee-ws-client" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06fa4f17e09edfc3131636082faaec633c7baa269396b4004040bc6c52f49f65" +dependencies = [ + "cfg_aliases", + "finito", + "futures", + "jsonrpsee 0.23.2", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "regalloc2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80535183cae11b149d618fbd3c37e38d7cda589d82d7769e196ca9a9042d7621" +dependencies = [ + "fxhash", + "log", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash 1.1.0", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.31", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.7", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.1", + "hyper-rustls 0.27.3", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.2.0", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "system-configuration 0.6.1", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rlibc" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc874b127765f014d792f16763a81245ab80500e2ad921ed4ee9e82481ee08fe" + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rococo-runtime-constants" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1ec6683a2e52fe3be2eaf942a80619abd99eb36e973c5ab4489a2f3b100db5c" +dependencies = [ + "frame-support", + "polkadot-primitives 16.0.0", + "polkadot-runtime-common", + "smallvec", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-builder", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec", + "primitive-types 0.12.2", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rust_decimal" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +dependencies = [ + "arrayvec 0.7.6", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.36.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.1.4", + "windows-sys 0.45.0", +] + +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls" +version = "0.23.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-platform-verifier" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +dependencies = [ + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.19", + "rustls-native-certs 0.7.3", + "rustls-platform-verifier-android", + "rustls-webpki 0.102.8", + "security-framework", + "security-framework-sys", + "webpki-roots", + "winapi", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ruzstd" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +dependencies = [ + "byteorder", + "derive_more 0.99.18", + "twox-hash", +] + +[[package]] +name = "ruzstd" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" +dependencies = [ + "byteorder", + "derive_more 0.99.18", +] + +[[package]] +name = "rw-stream-sink" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +dependencies = [ + "futures", + "pin-project", + "static_assertions", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "safe-mix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" +dependencies = [ + "rustc_version 0.2.3", +] + +[[package]] +name = "safe_arch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "sc-allocator" +version = "29.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b975ee3a95eaacb611e7b415737a7fa2db4d8ad7b880cc1b97371b04e95c7903" +dependencies = [ + "log", + "sp-core 34.0.0", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", +] + +[[package]] +name = "sc-executor" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f0cc0a3728fd033589183460c5a49b2e7545d09dc89a098216ef9e9aadcd9dc" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sc-executor-common", + "sc-executor-polkavm", + "sc-executor-wasmtime", + "schnellru", + "sp-api", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-io 38.0.0", + "sp-panic-handler", + "sp-runtime-interface 28.0.0", + "sp-trie 37.0.0", + "sp-version", + "sp-wasm-interface 21.0.1", + "tracing", +] + +[[package]] +name = "sc-executor-common" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3b703a33dcb7cddf19176fdf12294b9a6408125836b0f4afee3e6969e7f190" +dependencies = [ + "polkavm 0.9.3", + "sc-allocator", + "sp-maybe-compressed-blob", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", + "wasm-instrument", +] + +[[package]] +name = "sc-executor-polkavm" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fe58d9cacfab73e5595fa84b80f7bd03efebe54a0574daaeb221a1d1f7ab80" +dependencies = [ + "log", + "polkavm 0.9.3", + "sc-executor-common", + "sp-wasm-interface 21.0.1", +] + +[[package]] +name = "sc-executor-wasmtime" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd498f2f77ec1f861c30804f5bfd796d4afcc8ce44ea1f11bfbe2847551d161" +dependencies = [ + "anyhow", + "cfg-if", + "libc", + "log", + "parking_lot", + "rustix 0.36.17", + "sc-allocator", + "sc-executor-common", + "sp-runtime-interface 28.0.0", + "sp-wasm-interface 21.0.1", + "wasmtime", +] + +[[package]] +name = "scale-bits" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" +dependencies = [ + "parity-scale-codec", + "scale-type-resolver 0.1.1", +] + +[[package]] +name = "scale-bits" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" +dependencies = [ + "parity-scale-codec", + "scale-info", + "scale-type-resolver 0.2.0", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "scale-bits 0.5.0", + "scale-decode-derive 0.11.1", + "scale-type-resolver 0.1.1", + "smallvec", +] + +[[package]] +name = "scale-decode" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "primitive-types 0.12.2", + "scale-bits 0.6.0", + "scale-decode-derive 0.13.1", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-decode" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ae9cc099ae85ff28820210732b00f019546f36f33225f509fe25d5816864a0" +dependencies = [ + "derive_more 1.0.0", + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode-derive 0.14.0", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-decode-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" +dependencies = [ + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-decode-derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021" +dependencies = [ + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-decode-derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "scale-encode" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "scale-encode-derive 0.6.0", + "scale-type-resolver 0.1.1", + "smallvec", +] + +[[package]] +name = "scale-encode" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528464e6ae6c8f98e2b79633bf79ef939552e795e316579dab09c61670d56602" +dependencies = [ + "derive_more 0.99.18", + "parity-scale-codec", + "primitive-types 0.12.2", + "scale-bits 0.6.0", + "scale-encode-derive 0.7.2", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-encode" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9271284d05d0749c40771c46180ce89905fd95aa72a2a2fddb4b7c0aa424db" +dependencies = [ + "derive_more 1.0.0", + "parity-scale-codec", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-encode-derive 0.8.0", + "scale-type-resolver 0.2.0", + "smallvec", +] + +[[package]] +name = "scale-encode-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" +dependencies = [ + "darling 0.14.4", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-encode-derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef2618f123c88da9cd8853b69d766068f1eddc7692146d7dfe9b89e25ce2efd" +dependencies = [ + "darling 0.20.10", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "scale-encode-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102fbc6236de6c53906c0b262f12c7aa69c2bdc604862c12728f5f4d370bc137" +dependencies = [ + "darling 0.20.10", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "scale-info" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +dependencies = [ + "bitvec", + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", + "schemars", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "scale-type-resolver" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b800069bfd43374e0f96f653e0d46882a2cb16d6d961ac43bea80f26c76843" +dependencies = [ + "smallvec", +] + +[[package]] +name = "scale-type-resolver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" +dependencies = [ + "scale-info", + "smallvec", +] + +[[package]] +name = "scale-typegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498d1aecf2ea61325d4511787c115791639c0fd21ef4f8e11e49dd09eff2bbac" +dependencies = [ + "proc-macro2", + "quote", + "scale-info", + "syn 2.0.90", + "thiserror 1.0.69", +] + +[[package]] +name = "scale-typegen" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc4c70c7fea2eef1740f0081d3fe385d8bee1eef11e9272d3bec7dc8e5438e0" +dependencies = [ + "proc-macro2", + "quote", + "scale-info", + "syn 2.0.90", + "thiserror 1.0.69", +] + +[[package]] +name = "scale-value" +version = "0.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd6ab090d823e75cfdb258aad5fe92e13f2af7d04b43a55d607d25fcc38c811" +dependencies = [ + "base58", + "blake2", + "derive_more 0.99.18", + "either", + "frame-metadata 15.1.0", + "parity-scale-codec", + "scale-bits 0.6.0", + "scale-decode 0.13.1", + "scale-encode 0.7.2", + "scale-info", + "scale-type-resolver 0.2.0", + "serde", + "yap", +] + +[[package]] +name = "scale-value" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e0ef2a0ee1e02a69ada37feb87ea1616ce9808aca072befe2d3131bf28576e" +dependencies = [ + "base58", + "blake2", + "derive_more 1.0.0", + "either", + "parity-scale-codec", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-type-resolver 0.2.0", + "serde", + "yap", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.90", +] + +[[package]] +name = "schnellru" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +dependencies = [ + "ahash 0.8.11", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "schnorrkel" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "aead", + "arrayref", + "arrayvec 0.7.6", + "curve25519-dalek 4.1.3", + "getrandom_or_panic", + "merlin", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.8", + "subtle", + "zeroize", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scratch" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" + +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "password-hash", + "pbkdf2", + "salsa20", + "sha2 0.10.8", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +dependencies = [ + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand", + "secp256k1-sys 0.10.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "serde", + "zeroize", +] + +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "num-bigint", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser 0.10.3", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" +dependencies = [ + "serde", +] + +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.7.0", + "serde", + "serde_derive", + "serde_json", + "time", +] + +[[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 = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[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", + "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", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared_child" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio 0.8.11", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" + +[[package]] +name = "simple-mermaid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "slot-range-helper" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e34f1146a457a5c554dedeae6c7273aa54c3b031f3e9eb0abd037b5511e2ce9" +dependencies = [ + "enumn", + "parity-scale-codec", + "paste", + "sp-runtime 39.0.2", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "smol" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" +dependencies = [ + "async-channel", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", + "blocking", + "futures-lite", +] + +[[package]] +name = "smoldot" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.21.7", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 4.0.3", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.12.1", + "libm", + "libsecp256k1", + "merlin", + "no-std-net", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.5.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.7.1", + "twox-hash", + "wasmi 0.31.2", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.22.1", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 5.3.1", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.13.0", + "libm", + "libsecp256k1", + "merlin", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.6.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.8.1", + "twox-hash", + "wasmi 0.32.3", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot-light" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7" +dependencies = [ + "async-channel", + "async-lock", + "base64 0.21.7", + "blake2-rfc", + "derive_more 0.99.18", + "either", + "event-listener 4.0.3", + "fnv", + "futures-channel", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "itertools 0.12.1", + "log", + "lru 0.12.5", + "no-std-net", + "parking_lot", + "pin-project", + "rand", + "rand_chacha", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot 0.16.0", + "zeroize", +] + +[[package]] +name = "smoldot-light" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" +dependencies = [ + "async-channel", + "async-lock", + "base64 0.22.1", + "blake2-rfc", + "bs58", + "derive_more 0.99.18", + "either", + "event-listener 5.3.1", + "fnv", + "futures-channel", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "log", + "lru 0.12.5", + "parking_lot", + "pin-project", + "rand", + "rand_chacha", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot 0.18.0", + "zeroize", +] + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "snowbridge-beacon-primitives" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10bd720997e558beb556d354238fa90781deb38241cf31c1b6368738ef21c279" +dependencies = [ + "byte-slice-cast", + "frame-support", + "hex", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "snowbridge-ethereum", + "snowbridge-milagro-bls", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "ssz_rs", + "ssz_rs_derive", +] + +[[package]] +name = "snowbridge-core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6be61e4db95d1e253a1d5e722953b2d2f6605e5f9761f0a919e5d3fbdbff9da9" +dependencies = [ + "ethabi-decode", + "frame-support", + "frame-system", + "hex-literal", + "parity-scale-codec", + "polkadot-parachain-primitives", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", +] + +[[package]] +name = "snowbridge-ethereum" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc3d6d549c57df27cf89ec852f932fa4008eea877a6911a87e03e8002104eabd" +dependencies = [ + "ethabi-decode", + "ethbloom", + "ethereum-types", + "hex-literal", + "parity-bytes", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "serde-big-array", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "snowbridge-milagro-bls" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "026aa8638f690a53e3f7676024b9e913b1cab0111d1b7b92669d40a188f9d7e6" +dependencies = [ + "hex", + "lazy_static", + "parity-scale-codec", + "rand", + "scale-info", + "snowbridge-amcl", + "zeroize", +] + +[[package]] +name = "snowbridge-outbound-queue-merkle-tree" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c6a9b65fa61711b704f0c6afb3663c6288288e8822ddae5cc1146fe3ad9ce8" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "snowbridge-outbound-queue-runtime-api" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d27b8d9cb8022637a5ce4f52692520fa75874f393e04ef5cd75bd8795087f6" +dependencies = [ + "frame-support", + "parity-scale-codec", + "snowbridge-core", + "snowbridge-outbound-queue-merkle-tree", + "sp-api", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-ethereum-client" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d53d32d8470c643f9f8c1f508e1e34263f76297e4c9150e10e8f2e0b63992e1" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-ethereum", + "snowbridge-pallet-ethereum-client-fixtures", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "static_assertions", +] + +[[package]] +name = "snowbridge-pallet-ethereum-client-fixtures" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3984b98465af1d862d4e87ba783e1731f2a3f851b148d6cb98d526cebd351185" +dependencies = [ + "hex-literal", + "snowbridge-beacon-primitives", + "snowbridge-core", + "sp-core 34.0.0", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-inbound-queue" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2e6a9d00e60e3744e6b6f0c21fea6694b9c6401ac40e41340a96e561dcf1935" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-router-primitives", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-pallet-inbound-queue-fixtures" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b099db83f4c10c0bf84e87deb1596019f91411ea1c8c9733ea9a7f2e7e967073" +dependencies = [ + "hex-literal", + "snowbridge-beacon-primitives", + "snowbridge-core", + "sp-core 34.0.0", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-outbound-queue" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d49478041b6512c710d0d4655675d146fe00a8e0c1624e5d8a1d6c161d490f" +dependencies = [ + "bridge-hub-common", + "ethabi-decode", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-core", + "snowbridge-outbound-queue-merkle-tree", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-system" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "674db59b3c8013382e5c07243ad9439b64d81d2e8b3c4f08d752b55aa5de697e" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-router-primitives" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "025f1e6805753821b1db539369f1fb183fd59fd5df7023f7633a4c0cfd3e62f9" +dependencies = [ + "frame-support", + "hex-literal", + "log", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-runtime-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093f0e73d6cfdd2eea8712155d1d75b5063fc9b1d854d2665b097b4bb29570d" +dependencies = [ + "frame-support", + "log", + "parity-scale-codec", + "snowbridge-core", + "sp-arithmetic 26.0.0", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-runtime-test-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "893480d6cde2489051c65efb5d27fa87efe047b3b61216d8e27bb2f0509b7faf" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", + "pallet-session", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "snowbridge-core", + "snowbridge-pallet-ethereum-client", + "snowbridge-pallet-ethereum-client-fixtures", + "snowbridge-pallet-outbound-queue", + "snowbridge-pallet-system", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-system-runtime-api" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b8b83b3db781c49844312a23965073e4d93341739a35eafe526c53b578d3b7" +dependencies = [ + "parity-scale-codec", + "snowbridge-core", + "sp-api", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "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", + "httparse", + "log", + "rand", + "sha-1", +] + +[[package]] +name = "soketto" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e859df029d160cb88608f5d7df7fb4753fd20fdfb4de5644f3d8b8440841721" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures", + "httparse", + "log", + "rand", + "sha1", +] + +[[package]] +name = "sp-api" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbce492e0482134128b7729ea36f5ef1a9f9b4de2d48ff8dde7b5e464e28ce75" +dependencies = [ + "docify", + "hash-db", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-metadata-ir", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "sp-state-machine 0.43.0", + "sp-trie 37.0.0", + "sp-version", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-api-proc-macro" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9aadf9e97e694f0e343978aa632938c5de309cbcc8afed4136cb71596737278" +dependencies = [ + "Inflector", + "blake2", + "expander", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sp-application-crypto" +version = "33.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 31.0.0", + "sp-io 33.0.0", + "sp-std", +] + +[[package]] +name = "sp-application-crypto" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", +] + +[[package]] +name = "sp-arithmetic" +version = "25.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "910c07fa263b20bf7271fdd4adcb5d3217dfdac14270592e0780223542e7e114" +dependencies = [ + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std", + "static_assertions", +] + +[[package]] +name = "sp-arithmetic" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46d0d0a4c591c421d3231ddd5e27d828618c24456d51445d21a1f79fcee97c23" +dependencies = [ + "docify", + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std", + "static_assertions", +] + +[[package]] +name = "sp-authority-discovery" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "519c33af0e25ba2dd2eb3790dc404d634b6e4ce0801bcc8fa3574e07c365e734" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-block-builder" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74738809461e3d4bd707b5b94e0e0c064a623a74a6a8fe5c98514417a02858dd" +dependencies = [ + "sp-api", + "sp-inherents", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-consensus-aura" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8faaa05bbcb9c41f0cc535c4c1315abf6df472b53eae018678d1b4d811ac47" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime 39.0.2", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-babe" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ee95e17ee8dcd14db7d584b899a426565ca9abe5a266ab82277977fc547f86" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-consensus-slots", + "sp-core 34.0.0", + "sp-inherents", + "sp-runtime 39.0.2", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-beefy" +version = "22.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d97e8cd75d85d15cda6f1923cf3834e848f80d5a6de1cf4edbbc5f0ad607eb" +dependencies = [ + "lazy_static", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-io 38.0.0", + "sp-keystore 0.40.0", + "sp-mmr-primitives", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "strum 0.26.3", +] + +[[package]] +name = "sp-consensus-grandpa" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "587b791efe6c5f18e09dbbaf1ece0ee7b5fe51602c233e7151a3676b0de0260b" +dependencies = [ + "finality-grandpa", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-consensus-pow" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa6b7d199a1c16cea1b74ee7cee174bf08f2120ab66a87bee7b12353100b47c" +dependencies = [ + "parity-scale-codec", + "sp-api", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-consensus-slots" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbafb7ed44f51c22fa277fb39b33dc601fa426133a8e2b53f3f46b10f07fba43" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-timestamp", +] + +[[package]] +name = "sp-core" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 3.1.0", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.10.5", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.27.0", + "sp-runtime-interface 26.0.0", + "sp-std", + "sp-storage 20.0.0", + "ss58-registry", + "substrate-bip39 0.5.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 4.0.3", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.29.0", + "sp-runtime-interface 28.0.0", + "sp-std", + "sp-storage 21.0.0", + "ss58-registry", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core-hashing" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f812cb2dff962eb378c507612a50f1c59f52d92eb97b710f35be3c2346a3cd7" +dependencies = [ + "sp-crypto-hashing", +] + +[[package]] +name = "sp-crypto-ec-utils" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acb24f8a607a48a87f0ee4c090fc5d577eee49ff39ced6a3c491e06eca03c37" +dependencies = [ + "ark-bls12-377", + "ark-bls12-377-ext", + "ark-bls12-381", + "ark-bls12-381-ext", + "ark-bw6-761", + "ark-bw6-761-ext", + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ed-on-bls12-377-ext", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ed-on-bls12-381-bandersnatch-ext", + "ark-scale", + "sp-runtime-interface 28.0.0", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.8", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing-proc-macro" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b85d0f1f1e44bd8617eb2a48203ee854981229e3e79e6f468c7175d5fd37489b" +dependencies = [ + "quote", + "sp-crypto-hashing", + "syn 2.0.90", +] + +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sp-externalities" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d6a4572eadd4a63cff92509a210bf425501a0c5e76574b30a366ac77653787" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-std", + "sp-storage 20.0.0", +] + +[[package]] +name = "sp-externalities" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a904407d61cb94228c71b55a9d3708e9d6558991f9e83bd42bd91df37a159d30" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a646ed222fd86d5680faa4a8967980eb32f644cae6c8523e1c689a6deda3e8" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-inherents" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afffbddc380d99a90c459ba1554bbbc01d62e892de9f1485af6940b89c4c0d57" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-io" +version = "33.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" +dependencies = [ + "bytes", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "rustversion", + "secp256k1 0.28.2", + "sp-core 31.0.0", + "sp-crypto-hashing", + "sp-externalities 0.27.0", + "sp-keystore 0.37.0", + "sp-runtime-interface 26.0.0", + "sp-state-machine 0.38.0", + "sp-std", + "sp-tracing 16.0.0", + "sp-trie 32.0.0", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-io" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "rustversion", + "secp256k1 0.28.2", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-externalities 0.29.0", + "sp-keystore 0.40.0", + "sp-runtime-interface 28.0.0", + "sp-state-machine 0.43.0", + "sp-tracing 17.0.1", + "sp-trie 37.0.0", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-keyring" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" +dependencies = [ + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "strum 0.26.3", +] + +[[package]] +name = "sp-keystore" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core 31.0.0", + "sp-externalities 0.27.0", +] + +[[package]] +name = "sp-keystore" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0248b4d784cb4a01472276928977121fa39d977a5bb24793b6b15e64b046df42" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core 34.0.0", + "sp-externalities 0.29.0", +] + +[[package]] +name = "sp-maybe-compressed-blob" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c768c11afbe698a090386876911da4236af199cd38a5866748df4d8628aeff" +dependencies = [ + "thiserror 1.0.69", + "zstd 0.12.4", +] + +[[package]] +name = "sp-metadata-ir" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a616fa51350b35326682a472ee8e6ba742fdacb18babac38ecd46b3e05ead869" +dependencies = [ + "frame-metadata 16.0.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "sp-mixnet" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0b017dd54823b6e62f9f7171a1df350972e5c6d0bf17e0c2f78680b5c31942" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto 38.0.0", +] + +[[package]] +name = "sp-mmr-primitives" +version = "34.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a12dd76e368f1e48144a84b4735218b712f84b3f976970e2f25a29b30440e10" +dependencies = [ + "log", + "parity-scale-codec", + "polkadot-ckb-merkle-mountain-range", + "scale-info", + "serde", + "sp-api", + "sp-core 34.0.0", + "sp-debug-derive", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-npos-elections" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af922f112c7c1ed199eabe14f12a82ceb75e1adf0804870eccfbcf3399492847" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-offchain" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d9de237d72ecffd07f90826eef18360208b16d8de939d54e61591fac0fcbf99" +dependencies = [ + "sp-api", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-panic-handler" +version = "13.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f5a17a0a11de029a8b811cb6e8b32ce7e02183cc04a3e965c383246798c416" +dependencies = [ + "backtrace", + "lazy_static", + "regex", +] + +[[package]] +name = "sp-runtime" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 33.0.0", + "sp-arithmetic 25.0.0", + "sp-core 31.0.0", + "sp-io 33.0.0", + "sp-std", + "sp-weights 30.0.0", +] + +[[package]] +name = "sp-runtime" +version = "39.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "sp-weights 31.0.0", + "tracing", +] [[package]] -name = "slab" -version = "0.4.9" +name = "sp-runtime-interface" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" dependencies = [ - "autocfg", + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.8.0", + "primitive-types 0.12.2", + "sp-externalities 0.27.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 20.0.0", + "sp-tracing 16.0.0", + "sp-wasm-interface 20.0.0", + "static_assertions", ] [[package]] -name = "smallvec" -version = "1.13.2" +name = "sp-runtime-interface" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.29.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", + "static_assertions", +] [[package]] -name = "smawk" -version = "0.3.2" +name = "sp-runtime-interface-proc-macro" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" +checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] [[package]] -name = "smol" -version = "2.0.2" +name = "sp-session" +version = "36.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" +checksum = "00a3a307fedc423fb8cd2a7726a3bbb99014f1b4b52f26153993e2aae3338fe6" dependencies = [ - "async-channel", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-net", - "async-process", - "blocking", - "futures-lite", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-core 34.0.0", + "sp-keystore 0.40.0", + "sp-runtime 39.0.2", + "sp-staking 36.0.0", ] [[package]] -name = "smoldot" -version = "0.16.0" +name = "sp-staking" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d1eaa97d77be4d026a1e7ffad1bb3b78448763b357ea6f8188d3e6f736a9b9" +checksum = "143a764cacbab58347d8b2fd4c8909031fb0888d7b02a0ec9fa44f81f780d732" dependencies = [ - "arrayvec 0.7.6", - "async-lock", - "atomic-take", - "base64 0.21.7", - "bip39", - "blake2-rfc", - "bs58", - "chacha20", - "crossbeam-queue", - "derive_more", - "ed25519-zebra 4.0.3", - "either", - "event-listener 4.0.3", - "fnv", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "hmac 0.12.1", - "itertools 0.12.1", - "libm", - "libsecp256k1", - "merlin", - "no-std-net", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", - "pin-project", - "poly1305", - "rand", - "rand_chacha", - "ruzstd", - "schnorrkel", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "siphasher", - "slab", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-staking" +version = "36.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a73eedb4b85f4cd420d31764827546aa22f82ce1646d0fd258993d051de7a90" +dependencies = [ + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-state-machine" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot", + "rand", "smallvec", - "soketto 0.7.1", - "twox-hash", - "wasmi", - "x25519-dalek", - "zeroize", + "sp-core 31.0.0", + "sp-externalities 0.27.0", + "sp-panic-handler", + "sp-std", + "sp-trie 32.0.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.28.0", ] [[package]] -name = "smoldot-light" -version = "0.14.0" +name = "sp-state-machine" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5496f2d116b7019a526b1039ec2247dd172b8670633b1a64a614c9ea12c9d8c7" +checksum = "930104d6ae882626e8880d9b1578da9300655d337a3ffb45e130c608b6c89660" dependencies = [ - "async-channel", - "async-lock", - "base64 0.21.7", - "blake2-rfc", - "derive_more", - "either", - "event-listener 4.0.3", - "fnv", - "futures-channel", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "itertools 0.12.1", + "hash-db", "log", - "lru", - "no-std-net", + "parity-scale-codec", "parking_lot", - "pin-project", "rand", - "rand_chacha", + "smallvec", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-panic-handler", + "sp-trie 37.0.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.29.1", +] + +[[package]] +name = "sp-statement-store" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c219bc34ef4d1f9835f3ed881f965643c32034fcc030eb33b759dadbc802c1c2" +dependencies = [ + "aes-gcm", + "curve25519-dalek 4.1.3", + "ed25519-dalek", + "hkdf", + "parity-scale-codec", + "rand", + "scale-info", + "sha2 0.10.8", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-externalities 0.29.0", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "thiserror 1.0.69", + "x25519-dalek", +] + +[[package]] +name = "sp-std" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" + +[[package]] +name = "sp-storage" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" +dependencies = [ + "impl-serde 0.4.0", + "parity-scale-codec", + "ref-cast", "serde", - "serde_json", - "siphasher", - "slab", - "smol", - "smoldot", - "zeroize", + "sp-debug-derive", + "sp-std", ] [[package]] -name = "socket2" -version = "0.5.7" +name = "sp-storage" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "99c82989b3a4979a7e1ad848aad9f5d0b4388f1f454cc131766526601ab9e8f8" dependencies = [ - "libc", - "windows-sys 0.52.0", + "impl-serde 0.4.0", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", ] [[package]] -name = "soketto" -version = "0.7.1" +name = "sp-timestamp" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a1cb4df653d62ccc0dbce1db45d1c9443ec60247ee9576962d24da4c9c6f07" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-tracing" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0351810b9d074df71c4514c5228ed05c250607cba131c1c9d1526760ab69c05c" +dependencies = [ + "parity-scale-codec", + "sp-std", + "tracing", + "tracing-core", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "sp-tracing" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +checksum = "cf641a1d17268c8fcfdb8e0fa51a79c2d4222f4cfda5f3944dbdbc384dced8d5" dependencies = [ - "base64 0.13.1", - "bytes", - "futures", - "httparse", - "log", - "rand", - "sha-1", + "parity-scale-codec", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.19", ] [[package]] -name = "soketto" -version = "0.8.0" +name = "sp-transaction-pool" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37468c595637c10857701c990f93a40ce0e357cedb0953d1c26c8d8027f9bb53" +checksum = "fc4bf251059485a7dd38fe4afeda8792983511cc47f342ff4695e2dcae6b5247" dependencies = [ - "base64 0.22.1", - "bytes", - "futures", - "httparse", - "log", - "rand", - "sha1", + "sp-api", + "sp-runtime 39.0.2", ] [[package]] -name = "sp-application-crypto" -version = "33.0.0" +name = "sp-transaction-storage-proof" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" +checksum = "c765c2e9817d95f13d42a9f2295c60723464669765c6e5acbacebd2f54932f67" dependencies = [ + "async-trait", "parity-scale-codec", "scale-info", - "serde", - "sp-core", - "sp-io", - "sp-std", + "sp-core 34.0.0", + "sp-inherents", + "sp-runtime 39.0.2", + "sp-trie 37.0.0", ] [[package]] -name = "sp-arithmetic" -version = "25.0.0" +name = "sp-trie" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910c07fa263b20bf7271fdd4adcb5d3217dfdac14270592e0780223542e7e114" +checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" dependencies = [ - "integer-sqrt", - "num-traits", + "ahash 0.8.11", + "hash-db", + "lazy_static", + "memory-db", + "nohash-hasher", "parity-scale-codec", + "parking_lot", + "rand", "scale-info", - "serde", + "schnellru", + "sp-core 31.0.0", + "sp-externalities 0.27.0", "sp-std", - "static_assertions", + "thiserror 1.0.69", + "tracing", + "trie-db 0.28.0", + "trie-root", ] [[package]] -name = "sp-core" -version = "31.0.0" +name = "sp-trie" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d7a0fd8f16dcc3761198fc83be12872f823b37b749bc72a3a6a1f702509366" +checksum = "6282aef9f4b6ecd95a67a45bcdb67a71f4a4155c09a53c10add4ffe823db18cd" dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra 3.1.0", - "futures", + "ahash 0.8.11", "hash-db", - "hash256-std-hasher", - "impl-serde", - "itertools 0.10.5", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", + "lazy_static", + "memory-db", + "nohash-hasher", "parity-scale-codec", "parking_lot", - "paste", - "primitive-types", "rand", "scale-info", - "schnorrkel", - "secp256k1", - "secrecy", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities", - "sp-runtime-interface", - "sp-std", - "sp-storage", - "ss58-registry", - "substrate-bip39", - "thiserror", + "schnellru", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "thiserror 1.0.69", "tracing", - "w3f-bls", - "zeroize", + "trie-db 0.29.1", + "trie-root", ] [[package]] -name = "sp-crypto-hashing" -version = "0.1.0" +name = "sp-version" +version = "37.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9927a7f81334ed5b8a98a4a978c81324d12bd9713ec76b5c68fd410174c5eb" +checksum = "d521a405707b5be561367cd3d442ff67588993de24062ce3adefcf8437ee9fe1" dependencies = [ - "blake2b_simd", - "byteorder", - "digest 0.10.7", - "sha2 0.10.8", - "sha3", - "twox-hash", + "impl-serde 0.4.0", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime 39.0.2", + "sp-std", + "sp-version-proc-macro", + "thiserror 1.0.69", ] [[package]] -name = "sp-debug-derive" +name = "sp-version-proc-macro" version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" +checksum = "5aee8f6730641a65fcf0c8f9b1e448af4b3bb083d08058b47528188bccc7b7a7" dependencies = [ + "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] -name = "sp-externalities" -version = "0.27.0" +name = "sp-wasm-interface" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d6a4572eadd4a63cff92509a210bf425501a0c5e76574b30a366ac77653787" +checksum = "9ef97172c42eb4c6c26506f325f48463e9bc29b2034a587f1b9e48c751229bee" dependencies = [ - "environmental", + "anyhow", + "impl-trait-for-tuples", + "log", "parity-scale-codec", "sp-std", - "sp-storage", + "wasmtime", ] [[package]] -name = "sp-io" -version = "33.0.0" +name = "sp-wasm-interface" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" +checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" dependencies = [ - "bytes", - "ed25519-dalek", - "libsecp256k1", + "anyhow", + "impl-trait-for-tuples", "log", "parity-scale-codec", - "polkavm-derive 0.9.1", - "rustversion", - "secp256k1", - "sp-core", - "sp-crypto-hashing", - "sp-externalities", - "sp-keystore", - "sp-runtime-interface", - "sp-state-machine", - "sp-std", - "sp-tracing", - "sp-trie", - "tracing", - "tracing-core", + "wasmtime", ] [[package]] -name = "sp-keystore" -version = "0.37.0" +name = "sp-weights" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" +checksum = "9af6c661fe3066b29f9e1d258000f402ff5cc2529a9191972d214e5871d0ba87" dependencies = [ + "bounded-collections", "parity-scale-codec", - "parking_lot", - "sp-core", - "sp-externalities", -] - -[[package]] -name = "sp-panic-handler" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f5a17a0a11de029a8b811cb6e8b32ce7e02183cc04a3e965c383246798c416" -dependencies = [ - "backtrace", - "lazy_static", - "regex", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 25.0.0", + "sp-debug-derive", + "sp-std", ] [[package]] -name = "sp-runtime" -version = "34.0.0" +name = "sp-weights" +version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", + "bounded-collections", "parity-scale-codec", - "paste", - "rand", "scale-info", "serde", - "simple-mermaid", - "sp-application-crypto", - "sp-arithmetic", - "sp-core", - "sp-io", - "sp-std", - "sp-weights", + "smallvec", + "sp-arithmetic 26.0.0", + "sp-debug-derive", ] [[package]] -name = "sp-runtime-interface" -version = "26.0.0" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.8.0", - "primitive-types", - "sp-externalities", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage", - "sp-tracing", - "sp-wasm-interface", - "static_assertions", + "base64ct", + "der", ] [[package]] -name = "sp-runtime-interface-proc-macro" -version = "18.0.0" +name = "ss58-registry" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0195f32c628fee3ce1dfbbf2e7e52a30ea85f3589da9fe62a8b816d70fc06294" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" dependencies = [ "Inflector", - "expander", - "proc-macro-crate 3.2.0", + "num-format", "proc-macro2", "quote", - "syn 2.0.77", + "serde", + "serde_json", + "unicode-xid", ] [[package]] -name = "sp-state-machine" -version = "0.38.0" +name = "ssz_rs" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" +checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot", - "rand", - "smallvec", - "sp-core", - "sp-externalities", - "sp-panic-handler", - "sp-std", - "sp-trie", - "thiserror", - "tracing", - "trie-db", + "bitvec", + "num-bigint", + "sha2 0.9.9", + "ssz_rs_derive", ] [[package]] -name = "sp-std" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" - -[[package]] -name = "sp-storage" -version = "20.0.0" +name = "ssz_rs_derive" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" +checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive", - "sp-std", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "sp-tracing" -version = "16.0.0" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0351810b9d074df71c4514c5228ed05c250607cba131c1c9d1526760ab69c05c" -dependencies = [ - "parity-scale-codec", - "sp-std", - "tracing", - "tracing-core", - "tracing-subscriber", -] +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] -name = "sp-trie" -version = "32.0.0" +name = "staging-parachain-info" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" +checksum = "d28266dfddbfff721d70ad2f873380845b569adfab32f257cf97d9cedd894b68" dependencies = [ - "ahash 0.8.11", - "hash-db", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot", - "rand", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", "scale-info", - "schnellru", - "sp-core", - "sp-externalities", - "sp-std", - "thiserror", - "tracing", - "trie-db", - "trie-root", + "sp-runtime 39.0.2", ] [[package]] -name = "sp-wasm-interface" -version = "20.0.0" +name = "staging-xcm" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef97172c42eb4c6c26506f325f48463e9bc29b2034a587f1b9e48c751229bee" +checksum = "aded0292274ad473250c22ed3deaf2d9ed47d15786d700e9e83ab7c1cad2ad44" dependencies = [ - "anyhow", + "array-bytes", + "bounded-collections", + "derivative", + "environmental", "impl-trait-for-tuples", "log", "parity-scale-codec", - "sp-std", - "wasmtime", + "scale-info", + "serde", + "sp-weights 31.0.0", + "xcm-procedural 8.0.0", ] [[package]] -name = "sp-weights" -version = "30.0.0" +name = "staging-xcm" +version = "14.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9af6c661fe3066b29f9e1d258000f402ff5cc2529a9191972d214e5871d0ba87" +checksum = "96bee7cd999e9cdf10f8db72342070d456e21e82a0f5962ff3b87edbd5f2b20e" dependencies = [ + "array-bytes", "bounded-collections", + "derivative", + "environmental", + "impl-trait-for-tuples", + "log", "parity-scale-codec", "scale-info", "serde", - "smallvec", - "sp-arithmetic", - "sp-debug-derive", - "sp-std", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "xcm-procedural 10.1.0", ] [[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.7.3" +name = "staging-xcm-builder" +version = "17.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "a3746adbbae27b1e6763f0cca622e15482ebcb94835a9e078c212dd7be896e35" dependencies = [ - "base64ct", - "der", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-asset-conversion", + "pallet-transaction-payment", + "parity-scale-codec", + "polkadot-parachain-primitives", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-executor", ] [[package]] -name = "ss58-registry" -version = "1.50.0" +name = "staging-xcm-executor" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" +checksum = "79dd0c5332a5318e58f0300b20768b71cf9427c906f94a743c9dc7c3ee9e7fa9" dependencies = [ - "Inflector", - "num-format", - "proc-macro2", - "quote", - "serde", - "serde_json", - "unicode-xid", + "environmental", + "frame-benchmarking", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "tracing", ] -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string-interner" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "serde", +] + [[package]] name = "strsim" version = "0.10.0" @@ -7047,7 +13499,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -7063,6 +13515,40 @@ dependencies = [ "zeroize", ] +[[package]] +name = "substrate-bip39" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "schnorrkel", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "substrate-wasm-builder" +version = "24.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf035ffe7335fb24053edfe4d0a5780250eda772082a1b80ae25835dd4c09265" +dependencies = [ + "build-helper", + "cargo_metadata 0.15.4", + "console", + "filetime", + "jobserver", + "parity-wasm", + "polkavm-linker 0.9.2", + "sp-maybe-compressed-blob", + "strum 0.26.3", + "tempfile", + "toml 0.8.19", + "walkdir", + "wasm-opt", +] + [[package]] name = "subtle" version = "2.6.1" @@ -7081,28 +13567,65 @@ dependencies = [ "frame-metadata 16.0.0", "futures", "hex", - "impl-serde", + "impl-serde 0.4.0", "instant", "jsonrpsee 0.22.5", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "reconnecting-jsonrpsee-ws-client", "scale-bits 0.6.0", "scale-decode 0.13.1", - "scale-encode 0.7.1", + "scale-encode 0.7.2", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", "sp-crypto-hashing", - "subxt-core", - "subxt-lightclient", - "subxt-macro", - "subxt-metadata", - "thiserror", + "subxt-core 0.37.1", + "subxt-lightclient 0.37.0", + "subxt-macro 0.37.0", + "subxt-metadata 0.37.0", + "thiserror 1.0.69", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "subxt" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" +dependencies = [ + "async-trait", + "derive-where", + "either", + "frame-metadata 17.0.0", + "futures", + "hex", + "impl-serde 0.5.0", + "jsonrpsee 0.24.7", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.17.0", + "serde", + "serde_json", + "subxt-core 0.38.0", + "subxt-lightclient 0.38.0", + "subxt-macro 0.38.0", + "subxt-metadata 0.38.0", + "thiserror 1.0.69", + "tokio", "tokio-util", "tracing", "url", + "wasm-bindgen-futures", + "web-time", ] [[package]] @@ -7119,18 +13642,35 @@ dependencies = [ "proc-macro2", "quote", "scale-info", - "scale-typegen", - "subxt-metadata", - "syn 2.0.77", - "thiserror", + "scale-typegen 0.8.0", + "subxt-metadata 0.37.0", + "syn 2.0.90", + "thiserror 1.0.69", "tokio", ] +[[package]] +name = "subxt-codegen" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cfcfb7d9589f3df0ac87c4988661cf3fb370761fcb19f2fd33104cc59daf22a" +dependencies = [ + "heck 0.5.0", + "parity-scale-codec", + "proc-macro2", + "quote", + "scale-info", + "scale-typegen 0.9.0", + "subxt-metadata 0.38.0", + "syn 2.0.90", + "thiserror 1.0.69", +] + [[package]] name = "subxt-core" -version = "0.37.0" +version = "0.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f41eb2e2eea6ed45649508cc735f92c27f1fcfb15229e75f8270ea73177345" +checksum = "3af3b36405538a36b424d229dc908d1396ceb0994c90825ce928709eac1a159a" dependencies = [ "base58", "blake2", @@ -7138,20 +13678,47 @@ dependencies = [ "frame-metadata 16.0.0", "hashbrown 0.14.5", "hex", - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "scale-bits 0.6.0", "scale-decode 0.13.1", - "scale-encode 0.7.1", + "scale-encode 0.7.2", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", - "sp-core", "sp-crypto-hashing", - "sp-runtime", - "subxt-metadata", + "subxt-metadata 0.37.0", + "tracing", +] + +[[package]] +name = "subxt-core" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ea28114366780d23684bd55ab879cd04c9d4cbba3b727a3854a3eca6bf29a1a" +dependencies = [ + "base58", + "blake2", + "derive-where", + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "hex", + "impl-serde 0.5.0", + "keccak-hash", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.17.0", + "serde", + "serde_json", + "subxt-metadata 0.38.0", "tracing", ] @@ -7165,8 +13732,25 @@ dependencies = [ "futures-util", "serde", "serde_json", - "smoldot-light", - "thiserror", + "smoldot-light 0.14.0", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "subxt-lightclient" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534d4b725183a9fa09ce0e0f135674473297fdd97dee4d683f41117f365ae997" +dependencies = [ + "futures", + "futures-util", + "serde", + "serde_json", + "smoldot-light 0.16.2", + "thiserror 1.0.69", "tokio", "tokio-stream", "tracing", @@ -7182,9 +13766,25 @@ dependencies = [ "parity-scale-codec", "proc-macro-error", "quote", - "scale-typegen", - "subxt-codegen", - "syn 2.0.77", + "scale-typegen 0.8.0", + "subxt-codegen 0.37.0", + "syn 2.0.90", +] + +[[package]] +name = "subxt-macro" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228db9a5c95a6d8dc6152b4d6cdcbabc4f60821dd3f482a4f8791e022b7caadb" +dependencies = [ + "darling 0.20.10", + "parity-scale-codec", + "proc-macro-error2", + "quote", + "scale-typegen 0.9.0", + "subxt-codegen 0.38.0", + "subxt-utils-fetchmetadata", + "syn 2.0.90", ] [[package]] @@ -7200,6 +13800,20 @@ dependencies = [ "sp-crypto-hashing", ] +[[package]] +name = "subxt-metadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" +dependencies = [ + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "polkadot-sdk", + "scale-info", +] + [[package]] name = "subxt-signer" version = "0.37.0" @@ -7214,14 +13828,52 @@ dependencies = [ "pbkdf2", "regex", "schnorrkel", - "secp256k1", - "secrecy", + "secp256k1 0.28.2", + "secrecy 0.8.0", "sha2 0.10.8", "sp-crypto-hashing", - "subxt-core", + "subxt-core 0.37.1", + "zeroize", +] + +[[package]] +name = "subxt-signer" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7a336d6a1f86f126100a4a717be58352de4c8214300c4f7807f974494efdb9" +dependencies = [ + "base64 0.22.1", + "bip39", + "cfg-if", + "crypto_secretbox", + "hex", + "hmac 0.12.1", + "parity-scale-codec", + "pbkdf2", + "polkadot-sdk", + "regex", + "schnorrkel", + "scrypt", + "secp256k1 0.30.0", + "secrecy 0.10.3", + "serde", + "serde_json", + "sha2 0.10.8", + "subxt-core 0.38.0", "zeroize", ] +[[package]] +name = "subxt-utils-fetchmetadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082b17a86e3c3fe45d858d94d68f6b5247caace193dad6201688f24db8ba9bb" +dependencies = [ + "hex", + "parity-scale-codec", + "thiserror 1.0.69", +] + [[package]] name = "symlink" version = "0.1.0" @@ -7241,9 +13893,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -7251,15 +13903,15 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "syn-solidity" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" dependencies = [ - "proc-macro-error", + "paste", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -7270,13 +13922,25 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + [[package]] name = "synstructure" version = "0.13.1" @@ -7285,7 +13949,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -7338,9 +14002,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.41" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -7355,14 +14019,14 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", "once_cell", - "rustix 0.38.36", + "rustix 0.38.42", "windows-sys 0.59.0", ] @@ -7391,6 +14055,22 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +[[package]] +name = "testnet-parachains-constants" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bceae6f7c89d47daff6c7e05f712551a01379f61b07d494661941144878589" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "polkadot-core-primitives", + "rococo-runtime-constants", + "smallvec", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "westend-runtime-constants", +] + [[package]] name = "textwrap" version = "0.16.1" @@ -7399,27 +14079,47 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width", + "unicode-width 0.1.14", +] + +[[package]] +name = "thiserror" +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 = "1.0.63" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" +dependencies = [ + "thiserror-impl 2.0.6", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -7434,9 +14134,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -7455,14 +14155,23 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -7490,14 +14199,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.2", + "mio 1.0.3", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -7524,7 +14233,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -7560,20 +14269,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.13", - "rustls-pki-types", + "rustls 0.23.19", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -7607,9 +14315,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -7650,7 +14358,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -7668,7 +14376,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -7677,15 +14385,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.20", ] [[package]] @@ -7707,14 +14415,14 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", "tokio", "tower-layer", "tower-service", @@ -7751,7 +14459,7 @@ dependencies = [ "bitflags 2.6.0", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "http-range-header 0.4.2", @@ -7781,9 +14489,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -7793,20 +14501,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -7823,6 +14531,17 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-serde" version = "0.1.3" @@ -7842,7 +14561,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers", + "matchers 0.0.1", "regex", "serde", "serde_json", @@ -7851,10 +14570,29 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-serde", ] +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers 0.1.0", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "time", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + [[package]] name = "trie-db" version = "0.28.0" @@ -7868,6 +14606,18 @@ dependencies = [ "smallvec", ] +[[package]] +name = "trie-db" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" +dependencies = [ + "hash-db", + "log", + "rustc-hex", + "smallvec", +] + [[package]] name = "trie-root" version = "0.18.0" @@ -7883,6 +14633,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + [[package]] name = "tungstenite" version = "0.20.1" @@ -7897,11 +14653,17 @@ dependencies = [ "log", "rand", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + [[package]] name = "twox-hash" version = "1.6.3" @@ -7922,9 +14684,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -7939,19 +14701,34 @@ dependencies = [ ] [[package]] -name = "unicase" -version = "2.7.0" +name = "uint" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" dependencies = [ - "version_check", + "byteorder", + "crunchy", + "hex", + "static_assertions", ] +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicase" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" + [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-linebreak" @@ -7970,15 +14747,21 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -8002,6 +14785,12 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" + [[package]] name = "untrusted" version = "0.9.0" @@ -8046,9 +14835,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] @@ -8089,15 +14878,15 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" +checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff", - "ark-serialize", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", "ark-serialize-derive", "arrayref", "constcat", @@ -8107,7 +14896,7 @@ dependencies = [ "rand_core 0.6.4", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -8147,9 +14936,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -8158,36 +14947,36 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8195,22 +14984,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-encoder" @@ -8222,6 +15011,15 @@ dependencies = [ "wasmparser 0.207.0", ] +[[package]] +name = "wasm-instrument" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" +dependencies = [ + "parity-wasm", +] + [[package]] name = "wasm-opt" version = "0.116.1" @@ -8233,7 +15031,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror", + "thiserror 1.0.69", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -8271,7 +15069,24 @@ dependencies = [ "smallvec", "spin", "wasmi_arena", - "wasmi_core", + "wasmi_core 0.13.0", + "wasmparser-nostd", +] + +[[package]] +name = "wasmi" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50386c99b9c32bd2ed71a55b6dd4040af2580530fae8bdb9a6576571a80d0cca" +dependencies = [ + "arrayvec 0.7.6", + "multi-stash", + "num-derive", + "num-traits", + "smallvec", + "spin", + "wasmi_collections", + "wasmi_core 0.32.3", "wasmparser-nostd", ] @@ -8281,6 +15096,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" +[[package]] +name = "wasmi_collections" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" +dependencies = [ + "ahash 0.8.11", + "hashbrown 0.14.5", + "string-interner", +] + [[package]] name = "wasmi_core" version = "0.13.0" @@ -8293,6 +15119,18 @@ dependencies = [ "paste", ] +[[package]] +name = "wasmi_core" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmparser" version = "0.102.0" @@ -8312,8 +15150,8 @@ dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", "hashbrown 0.14.5", - "indexmap 2.5.0", - "semver", + "indexmap 2.7.0", + "semver 1.0.23", ] [[package]] @@ -8341,9 +15179,12 @@ dependencies = [ "once_cell", "paste", "psm", + "rayon", "serde", "target-lexicon", "wasmparser 0.102.0", + "wasmtime-cache", + "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -8359,6 +15200,63 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "wasmtime-cache" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" +dependencies = [ + "anyhow", + "base64 0.21.7", + "bincode", + "directories-next", + "file-per-thread-logger", + "log", + "rustix 0.36.17", + "serde", + "sha2 0.10.8", + "toml 0.5.11", + "windows-sys 0.45.0", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "wasmtime-cranelift" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "gimli 0.27.3", + "log", + "object 0.30.4", + "target-lexicon", + "thiserror 1.0.69", + "wasmparser 0.102.0", + "wasmtime-cranelift-shared", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-cranelift-shared" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-native", + "gimli 0.27.3", + "object 0.30.4", + "target-lexicon", + "wasmtime-environ", +] + [[package]] name = "wasmtime-environ" version = "8.0.1" @@ -8373,7 +15271,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", "wasmtime-types", ] @@ -8396,6 +15294,7 @@ dependencies = [ "serde", "target-lexicon", "wasmtime-environ", + "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-runtime", "windows-sys 0.45.0", @@ -8407,7 +15306,9 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" dependencies = [ + "object 0.30.4", "once_cell", + "rustix 0.36.17", ] [[package]] @@ -8453,15 +15354,25 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", ] [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -8469,13 +15380,30 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] +[[package]] +name = "westend-runtime-constants" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06861bf945aadac59f4be23b44c85573029520ea9bd3d6c9ab21c8b306e81cdc" +dependencies = [ + "frame-support", + "polkadot-primitives 16.0.0", + "polkadot-runtime-common", + "smallvec", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-builder", +] + [[package]] name = "which" version = "6.0.3" @@ -8484,10 +15412,20 @@ checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix 0.38.36", + "rustix 0.38.42", "winsafe", ] +[[package]] +name = "wide" +version = "0.7.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" +dependencies = [ + "bytemuck", + "safe_arch", +] + [[package]] name = "winapi" version = "0.3.9" @@ -8783,9 +15721,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -8847,7 +15785,69 @@ checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", "linux-raw-sys 0.4.14", - "rustix 0.38.36", + "rustix 0.38.42", +] + +[[package]] +name = "xcm-procedural" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4717a97970a9cda70d7db53cf50d2615c2f6f6b7c857445325b4a39ea7aa2cd" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "xcm-procedural" +version = "10.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fb4f14094d65c500a59bcf540cf42b99ee82c706edd6226a92e769ad60563e" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "xcm-runtime-apis" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d4473a5d157e4d437d9ebcb1b99f9693a64983877ee57d97005f0167869935" +dependencies = [ + "frame-support", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-weights 31.0.0", + "staging-xcm 14.2.0", + "staging-xcm-executor", +] + +[[package]] +name = "xcm-simulator" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058e21bfc3e1180bbd83cad3690d0e63f34f43ab309e338afe988160aa776fcf" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "paste", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives 16.0.0", + "polkadot-runtime-parachains", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] @@ -8882,8 +15882,8 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", - "synstructure", + "syn 2.0.90", + "synstructure 0.13.1", ] [[package]] @@ -8904,7 +15904,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -8924,8 +15924,8 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", - "synstructure", + "syn 2.0.90", + "synstructure 0.13.1", ] [[package]] @@ -8945,7 +15945,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -8967,29 +15967,29 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "arbitrary", "crc32fast", "crossbeam-utils", "displaydoc", - "indexmap 2.5.0", + "indexmap 2.7.0", "memchr", - "thiserror", + "thiserror 2.0.6", ] [[package]] name = "zombienet-configuration" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ab4af5d47f03cb8ae0fa96ffbf3881ca050c51e62367685ebdd3e8ae52b220" +checksum = "22860eef7e651d6e0aa7e37fc3bcba3c2c8b7bd1c140d7ea929caacf2b7fc726" dependencies = [ "anyhow", "lazy_static", @@ -8998,7 +15998,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "toml 0.7.8", "url", @@ -9007,9 +16007,9 @@ dependencies = [ [[package]] name = "zombienet-orchestrator" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580e01019655a2bd296e42f48876c2e78c94a989147376e025c0e64daf717cf7" +checksum = "b19b1b2fd2db3153155f21cb84cdd8e5d6faefc3043353b8c90661c44f4660da" dependencies = [ "anyhow", "async-trait", @@ -9025,10 +16025,10 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "sp-core", - "subxt", - "subxt-signer", - "thiserror", + "sp-core 31.0.0", + "subxt 0.38.0", + "subxt-signer 0.38.0", + "thiserror 1.0.69", "tokio", "tracing", "uuid", @@ -9040,20 +16040,20 @@ dependencies = [ [[package]] name = "zombienet-prom-metrics-parser" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d026607c1a6e198b653c5979fb07078740861978ddecfd5460f2c32cdc182b1" +checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" dependencies = [ "pest", "pest_derive", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "zombienet-provider" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55583d8be6b2ca2e679d85ee2e17eb0802fbf8d2ee05c1b326fff81fd6b3b5c3" +checksum = "c99cc7c143f1145bda2b2f5a945b8040a898a85fc029dba51f220395a7188d9d" dependencies = [ "anyhow", "async-trait", @@ -9070,7 +16070,7 @@ dependencies = [ "serde_yaml", "sha2 0.10.8", "tar", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -9082,14 +16082,15 @@ dependencies = [ [[package]] name = "zombienet-sdk" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300f3f07aa72df21a52611a0df1033325a454252e36d964c4308b0a8b7356f77" +checksum = "09e5abdad4ad32c1c06cb8fdc4507db026f65987cb5c46ae4224118cc496097b" dependencies = [ "async-trait", "futures", "lazy_static", - "subxt", + "subxt 0.38.0", + "subxt-signer 0.38.0", "tokio", "zombienet-configuration", "zombienet-orchestrator", @@ -9099,9 +16100,9 @@ dependencies = [ [[package]] name = "zombienet-support" -version = "0.2.14" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e566ea145dab27c6fbb24b13d4c789efa7e675e1fdaf6d007dfe1154d59317c6" +checksum = "2e3310631948f8bb4d394c160c4b063889a4e0c6beadd6b95f9b62d1616ab93c" dependencies = [ "anyhow", "async-trait", @@ -9110,8 +16111,56 @@ dependencies = [ "rand", "regex", "reqwest 0.11.27", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "uuid", ] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe 6.0.6", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] From f6bc2726fb2744682cbc4a10a2fe027e54e1b2f7 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 23:20:16 +0100 Subject: [PATCH 039/143] refactor: move terminate node into common::contracts --- crates/pop-cli/src/commands/up/contract.rs | 46 +++++----------------- crates/pop-cli/src/common/contracts.rs | 29 +++++++++++++- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 4a5c2c26..14eed8dc 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -3,7 +3,7 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::{ - contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + contracts::{check_contracts_node_and_prompt, has_contract_been_built, terminate_node}, wallet::wait_for_signature, }, style::style, @@ -20,10 +20,7 @@ use pop_contracts::{ }; use sp_core::Bytes; use sp_weights::Weight; -use std::{ - path::PathBuf, - process::{Child, Command}, -}; +use std::path::PathBuf; use tempfile::NamedTempFile; use url::Url; @@ -178,7 +175,7 @@ impl UpContractCommand { Ok(data) => data, Err(e) => { error(format!("An error occurred getting the call data: {e}"))?; - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -195,7 +192,7 @@ impl UpContractCommand { // TODO: dry (see else below) if let Err(e) = result { spinner.error(format!("An error occurred uploading your contract: {e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); } @@ -214,7 +211,7 @@ impl UpContractCommand { let result = instantiate_contract_signed(self.url.as_str(), payload).await; if let Err(e) = result { spinner.error(format!("An error occurred uploading your contract: {e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); } @@ -235,7 +232,7 @@ impl UpContractCommand { Cli.outro_cancel("Signed payload doesn't exist.")?; } - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro(COMPLETE)?; return Ok(()); } @@ -243,7 +240,7 @@ impl UpContractCommand { // Check for upload only. if self.upload_only { let result = self.upload_contract().await; - Self::terminate_node(process)?; + terminate_node(process)?; match result { Ok(_) => { Cli.outro(COMPLETE)?; @@ -260,7 +257,7 @@ impl UpContractCommand { Ok(i) => i, Err(e) => { error(format!("An error occurred instantiating the contract: {e}"))?; - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -278,7 +275,7 @@ impl UpContractCommand { }, Err(e) => { spinner.error(format!("{e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -296,7 +293,7 @@ impl UpContractCommand { contract_info.code_hash, ); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro(COMPLETE)?; } @@ -338,29 +335,6 @@ impl UpContractCommand { Ok(()) } - /// Handles the optional termination of a local running node. - fn terminate_node(process: Option<(Child, NamedTempFile)>) -> anyhow::Result<()> { - // Prompt to close any launched node - let Some((process, log)) = process else { - return Ok(()); - }; - if confirm("Would you like to terminate the local node?") - .initial_value(true) - .interact()? - { - // Stop the process contracts-node - Command::new("kill") - .args(["-s", "TERM", &process.id().to_string()]) - .spawn()? - .wait()?; - } else { - log.keep()?; - log::warning(format!("NOTE: The node is running in the background with process ID {}. Please terminate it manually when done.", process.id()))?; - } - - Ok(()) - } - // get the call data and contract code hash async fn get_contract_data(&self) -> anyhow::Result<(Vec, [u8; 32])> { let contract_code = get_contract_code(self.path.as_ref()).await?; diff --git a/crates/pop-cli/src/common/contracts.rs b/crates/pop-cli/src/common/contracts.rs index 3d0be11f..c353d196 100644 --- a/crates/pop-cli/src/common/contracts.rs +++ b/crates/pop-cli/src/common/contracts.rs @@ -3,7 +3,11 @@ use cliclack::{confirm, log::warning, spinner}; use pop_common::{manifest::from_path, sourcing::set_executable_permission}; use pop_contracts::contracts_node_generator; -use std::path::{Path, PathBuf}; +use std::{ + path::{Path, PathBuf}, + process::{Child, Command}, +}; +use tempfile::NamedTempFile; /// Checks the status of the `substrate-contracts-node` binary, sources it if necessary, and /// prompts the user to update it if the existing binary is not the latest version. @@ -68,6 +72,29 @@ pub async fn check_contracts_node_and_prompt(skip_confirm: bool) -> anyhow::Resu Ok(node_path) } +/// Handles the optional termination of a local running node. +pub fn terminate_node(process: Option<(Child, NamedTempFile)>) -> anyhow::Result<()> { + // Prompt to close any launched node + let Some((process, log)) = process else { + return Ok(()); + }; + if confirm("Would you like to terminate the local node?") + .initial_value(true) + .interact()? + { + // Stop the process contracts-node + Command::new("kill") + .args(["-s", "TERM", &process.id().to_string()]) + .spawn()? + .wait()?; + } else { + log.keep()?; + warning(format!("NOTE: The node is running in the background with process ID {}. Please terminate it manually when done.", process.id()))?; + } + + Ok(()) +} + /// Checks if a contract has been built by verifying the existence of the build directory and the /// .contract file. /// From a08b18db90cb6d92a878898e458d02268cb1220d Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 23:23:32 +0100 Subject: [PATCH 040/143] fix: sp-core not only for contracts --- crates/pop-cli/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index e5babd7a..99523cfc 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -28,12 +28,12 @@ url.workspace = true clap.workspace = true cliclack.workspace = true console.workspace = true +sp-core.workspace = true strum.workspace = true strum_macros.workspace = true # contracts pop-contracts = { path = "../pop-contracts", version = "0.5.0", optional = true } -sp-core = { workspace = true, optional = true } sp-weights = { workspace = true, optional = true } # parachains @@ -59,6 +59,6 @@ subxt-signer.workspace = true [features] default = ["contract", "parachain", "telemetry"] -contract = ["dep:pop-contracts", "dep:sp-core", "dep:sp-weights", "dep:dirs"] +contract = ["dep:pop-contracts", "dep:sp-weights", "dep:dirs"] parachain = ["dep:pop-parachains", "dep:dirs"] telemetry = ["dep:pop-telemetry"] From 741836f4bf3d98a0183b88245f1ccfcbadba4775 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 12 Dec 2024 00:07:04 -0700 Subject: [PATCH 041/143] feat(up-contract): serve HTML from string, fix deployment message on error, cors, and other misc. improvements --- crates/pop-cli/Cargo.toml | 2 +- crates/pop-cli/src/assets/index.html | 134 +++++++++++++++++++++ crates/pop-cli/src/commands/up/contract.rs | 9 +- crates/pop-cli/src/wallet_integration.rs | 15 ++- crates/pop-contracts/src/up.rs | 2 +- 5 files changed, 153 insertions(+), 9 deletions(-) create mode 100644 crates/pop-cli/src/assets/index.html diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index e5babd7a..6d2d6ef4 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -49,7 +49,7 @@ pop-common = { path = "../pop-common", version = "0.5.0" } # wallet-integration axum.workspace = true -tower-http = { workspace = true, features = ["fs"] } +tower-http = { workspace = true, features = ["fs", "cors"] } [dev-dependencies] assert_cmd.workspace = true diff --git a/crates/pop-cli/src/assets/index.html b/crates/pop-cli/src/assets/index.html new file mode 100644 index 00000000..d5659fbd --- /dev/null +++ b/crates/pop-cli/src/assets/index.html @@ -0,0 +1,134 @@ + + + + + + + + Pop CLI Signing Portal + + + + + +

+ + + diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 9b19ef6c..34a8ce62 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -4,7 +4,7 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::contracts::check_contracts_node_and_prompt, style::style, - wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, + wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; @@ -230,6 +230,8 @@ impl UpContractCommand { } } else { Cli.outro_cancel("Signed payload doesn't exist.")?; + Self::terminate_node(process)?; + return Ok(()); } Self::terminate_node(process)?; @@ -380,10 +382,7 @@ impl UpContractCommand { } async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - // TODO: to be addressed in future PR. Should not use FromDir (or local path). - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/peter/dev/r0gue/react-teleport-example/dist", - )); + let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); let transaction_data = TransactionData::new(self.url.to_string(), call_data); // starts server diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 4b9d6e7e..57b2924e 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -1,4 +1,5 @@ use axum::{ + http::HeaderValue, response::Html, routing::{get, post}, Router, @@ -9,7 +10,7 @@ use tokio::{ sync::{oneshot, Mutex}, task::JoinHandle, }; -use tower_http::services::ServeDir; +use tower_http::{cors::Any, services::ServeDir}; /// Make frontend sourcing more flexible by allowing a custom route /// to be defined. @@ -29,6 +30,7 @@ impl TransactionData { pub fn new(chain_rpc: String, call_data: Vec) -> Self { Self { chain_rpc, call_data } } + #[allow(dead_code)] pub fn call_data(&self) -> Vec { self.call_data.clone() } @@ -85,12 +87,20 @@ impl WalletIntegrationManager { let payload = Arc::new(payload); + // TODO: temporary until we host from here. + let cors = tower_http::cors::CorsLayer::new() + .allow_origin("http://localhost:9090".parse::().unwrap()) + .allow_origin("http://127.0.0.1:9090".parse::().unwrap()) + .allow_methods(Any) // Allow any HTTP method + .allow_headers(Any); // Allow any headers (like 'Content-Type') + let app = Router::new() .route("/payload", get(routes::get_payload_handler).with_state(payload)) .route("/submit", post(routes::submit_handler).with_state(state.clone())) .route("/error", post(routes::error_handler).with_state(state.clone())) .route("/terminate", post(routes::terminate_handler).with_state(state.clone())) - .merge(frontend.serve_content()); // Custom route for serving frontend. + .merge(frontend.serve_content()) // Custom route for serving frontend. + .layer(cors); let rpc_owned = rpc.to_string(); @@ -216,6 +226,7 @@ async fn terminate_helper(handle: &Arc>) -> anyhow::Result<( pub struct FrontendFromDir { content: PathBuf, } +#[allow(dead_code)] impl FrontendFromDir { pub fn new(content: PathBuf) -> Self { Self { content } diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 3d99c1b0..8a789101 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -16,7 +16,7 @@ use ink_env::{DefaultEnvironment, Environment}; use sp_core::{bytes::from_hex, Bytes}; use sp_weights::Weight; use std::{ - fmt::{format, Write}, + fmt::Write, path::{Path, PathBuf}, }; use subxt::{ From e78eb9d0d62004315889e3033fc318f29f8dc98c Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 20:37:48 +0100 Subject: [PATCH 042/143] fix: rebase --- crates/pop-cli/src/commands/up/contract.rs | 3 +-- crates/pop-cli/src/common/wallet.rs | 8 ++------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index e36846d8..8717ec93 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -7,7 +7,6 @@ use crate::{ wallet::wait_for_signature, }, style::style, - wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; @@ -231,7 +230,7 @@ impl UpContractCommand { } } else { Cli.outro_cancel("Signed payload doesn't exist.")?; - Self::terminate_node(process)?; + terminate_node(process)?; return Ok(()); } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 1cbcfbd3..163e8aa9 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -1,15 +1,11 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}; +use crate::wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}; use cliclack::log; use sp_core::bytes::to_hex; -use std::path::PathBuf; pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { - // TODO: to be addressed in future PR. Should not use FromDir (or local path). - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/alexbean/Documents/react-teleport-example/dist", - )); + let ui = FrontendFromString::new(include_str!("../assets/index.html").to_string()); let transaction_data = TransactionData::new(url, call_data); let call_data_bytes = to_hex(&transaction_data.call_data(), false); From 179c6f68e8b0fa619f49a1532ceb9d3c07ed1767 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 22:02:23 +0100 Subject: [PATCH 043/143] chore: deny.toml license --- deny.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deny.toml b/deny.toml index 53c6d37e..483282c4 100644 --- a/deny.toml +++ b/deny.toml @@ -22,7 +22,8 @@ allow = [ "MPL-2.0", "Unicode-3.0", "Unicode-DFS-2016", - "Unlicense" + "Unlicense", + "Zlib", ] confidence-threshold = 0.93 From 083149d7c253b021423b122e4b83a633055246d9 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 23:12:49 +0100 Subject: [PATCH 044/143] feat: secure signing logic for pop call contract --- crates/pop-cli/src/commands/call/contract.rs | 118 +++++++++++++++++-- crates/pop-contracts/src/call.rs | 42 ++++++- crates/pop-contracts/src/lib.rs | 3 + 3 files changed, 149 insertions(+), 14 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 0b2815a8..08829938 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -2,21 +2,25 @@ use crate::{ cli::{self, traits::*}, - common::contracts::has_contract_been_built, + common::{contracts::has_contract_been_built, wallet::wait_for_signature}, }; use anyhow::{anyhow, Result}; use clap::Args; use cliclack::spinner; +use pop_common::{DefaultConfig, Keypair}; use pop_contracts::{ build_smart_contract, call_smart_contract, dry_run_call, dry_run_gas_estimate_call, - get_messages, parse_account, set_up_call, CallOpts, Verbosity, + get_messages, instantiate_contract_signed, parse_account, set_up_call, CallExec, CallOpts, + DefaultEnvironment, Verbosity, }; use sp_weights::Weight; use std::path::PathBuf; +const COMPLETE: &str = "🚀 Deployment complete"; const DEFAULT_URL: &str = "ws://localhost:9944/"; const DEFAULT_URI: &str = "//Alice"; const DEFAULT_PAYABLE_VALUE: &str = "0"; +const FAILED: &str = "🚫 Deployment failed."; #[derive(Args, Clone)] pub struct CallContractCommand { @@ -54,6 +58,9 @@ pub struct CallContractCommand { /// - with a password "//Alice///SECRET_PASSWORD" #[arg(name = "suri", long, short, default_value = DEFAULT_URI)] suri: String, + /// Use your browser wallet to sign a transaction. + #[clap(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] + use_wallet: bool, /// Submit an extrinsic for on-chain execution. #[arg(short('x'), long)] execute: bool, @@ -117,7 +124,11 @@ impl CallContractCommand { if let Some(proof_size) = self.proof_size { full_message.push_str(&format!(" --proof_size {}", proof_size)); } - full_message.push_str(&format!(" --url {} --suri {}", self.url, self.suri)); + if self.use_wallet { + full_message.push_str(&format!(" --url {} --use_wallet", self.url)); + } else { + full_message.push_str(&format!(" --url {} --suri {}", self.url, self.suri)); + } if self.execute { full_message.push_str(" --execute"); } @@ -303,15 +314,24 @@ impl CallContractCommand { self.proof_size = proof_size_input.parse::().ok(); // If blank or bad input, estimate it. } - // Resolve who is calling the contract. - if self.suri == DEFAULT_URI { - // Prompt for uri. - self.suri = cli - .input("Signer calling the contract:") - .placeholder("//Alice") - .default_input("//Alice") - .interact()?; - }; + if !self.use_wallet { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + .initial_value(true) + .interact()? { + self.use_wallet = true; + } + else{ + // Resolve who is calling the contract. + if self.suri == DEFAULT_URI { + // Prompt for uri. + self.suri = cli + .input("Signer calling the contract:") + .placeholder("//Alice") + .default_input("//Alice") + .interact()?; + }; + } + } // Finally prompt for confirmation. let is_call_confirmed = if message.mutates && !self.dev_mode { @@ -346,6 +366,7 @@ impl CallContractCommand { return Err(anyhow!("Please specify the contract address.")); }, }; + let call_exec = match set_up_call(CallOpts { path: self.path.clone(), contract, @@ -366,6 +387,11 @@ impl CallContractCommand { }, }; + // Run steps for signing with wallet integration. Returns early. + if self.use_wallet { + return self.execute_call_secure_signing(&call_exec, cli).await; + } + if self.dry_run { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); @@ -435,6 +461,62 @@ impl CallContractCommand { } } + async fn execute_call_secure_signing( + &self, + call_exec: Result>, + cli: &mut impl Cli, + ) -> Result<()> { + let call_data = match self.get_contract_data(call_exec).await { + Ok(data) => data, + Err(e) => { + return Err(anyhow!(format!( + "An error occurred getting the call data: {}", + e.to_string() + ))); + }, + }; + + let maybe_payload = wait_for_signature(call_data, self.url.to_string()).await?; + if let Some(payload) = maybe_payload { + cli.success("Signed payload received.")?; + let spinner = spinner(); + spinner.start("Uploading contract..."); + + let result = + call_smart_contract_from_signed_payload(call_data, payload, self.url).await; + if let Err(e) = result { + return Err(anyhow!(format!( + "An error occurred calling your contract: {}", + e.to_string() + ))); + } + + // let contract_info = result.unwrap(); + // let hash = contract_info.code_hash.map(|code_hash| format!("{:?}", code_hash)); + // display_contract_info(&spinner, contract_info.contract_address.to_string(), hash); + } else { + display_message("Signed payload doesn't exist.", false, cli)?; + } + + display_message(COMPLETE, true, cli)?; + Ok(()) + } + + /// Get the call data and contract code hash + async fn get_contract_data( + &self, + call_exec: Result>, + ) -> anyhow::Result> { + let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { + Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) + } else { + // Frontend will do dry run and update call data. + Weight::from_parts(0, 0) + }; + let call_data = get_call_payload(call_exec, weight_limit).await?; + Ok(call_data) + } + /// Resets message specific fields to default values for a new call. fn reset_for_new_call(&mut self) { self.message = None; @@ -482,6 +564,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -517,6 +600,7 @@ mod tests { proof_size: Some(10), url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: true, execute: false, dev_mode: false, @@ -553,6 +637,7 @@ mod tests { proof_size: Some(10), url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: true, execute: false, dev_mode: false, @@ -638,6 +723,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -704,6 +790,7 @@ mod tests { proof_size: None, url: Url::parse(DEFAULT_URL)?, suri: DEFAULT_URI.to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -791,6 +878,7 @@ mod tests { proof_size: None, url: Url::parse(DEFAULT_URL)?, suri: DEFAULT_URI.to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -877,6 +965,7 @@ mod tests { proof_size: None, url: Url::parse(DEFAULT_URL)?, suri: DEFAULT_URI.to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: true, @@ -935,6 +1024,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -984,6 +1074,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -1002,6 +1093,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -1025,6 +1117,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, @@ -1055,6 +1148,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), + use_wallet: false, dry_run: false, execute: false, dev_mode: false, diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 03effcb0..0ad024c1 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -2,6 +2,7 @@ use crate::{ errors::Error, + submit_signed_payload, utils::{ get_manifest_path, metadata::{process_function_args, FunctionType}, @@ -11,16 +12,18 @@ use crate::{ use anyhow::Context; use contract_build::Verbosity; use contract_extrinsics::{ - BalanceVariant, CallCommandBuilder, CallExec, ContractArtifacts, DisplayEvents, ErrorVariant, - ExtrinsicOptsBuilder, TokenMetadata, + extrinsic_calls::Call, BalanceVariant, CallCommandBuilder, CallExec, ContractArtifacts, + DisplayEvents, ErrorVariant, ExtrinsicOptsBuilder, TokenMetadata, }; use ink_env::{DefaultEnvironment, Environment}; use pop_common::{create_signer, Config, DefaultConfig, Keypair}; use sp_weights::Weight; use std::path::PathBuf; +use subxt::SubstrateConfig; use url::Url; /// Attributes for the `call` command. +#[derive(Clone, Debug, PartialEq)] pub struct CallOpts { /// Path to the contract build directory. pub path: Option, @@ -173,6 +176,41 @@ pub async fn call_smart_contract( Ok(output) } +pub async fn call_smart_contract_from_signed_payload( + call_exec: CallExec, + payload: String, + url: &Url, +) -> anyhow::Result { + let token_metadata = TokenMetadata::query::(url).await?; + let metadata = call_exec.client().metadata(); + let events = submit_signed_payload(url.as_str(), payload).await?; + let display_events = DisplayEvents::from_events::( + &events, None, &metadata, + )?; + + let output = + display_events.display_events::(Verbosity::Default, &token_metadata)?; + Ok(output) +} + +pub async fn get_call_payload( + call_exec: CallExec, + gas_limit: Weight, +) -> anyhow::Result> { + let storage_deposit_limit: Option = None; + let mut encoded_data = Vec::::new(); + Call::new( + call_exec.contract(), + call_exec.value(), + gas_limit, + storage_deposit_limit, + call_exec.call_data(), + ) + .build() + .encode_call_data_to(&call_exec.client().metadata(), &mut encoded_data)?; + Ok(encoded_data) +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 69897be3..c105dabf 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -31,3 +31,6 @@ pub use utils::{ metadata::{get_messages, ContractFunction}, parse_account, parse_hex_bytes, }; +// External exports +pub use contract_extrinsics::CallExec; +pub use ink_env::DefaultEnvironment; From a5219664974aa6d92e6ea03f40f0279414c5c165 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 10:16:29 +0100 Subject: [PATCH 045/143] feat: integrate secure signing with pop call contract --- Cargo.lock | 50 ++++---- crates/pop-cli/src/commands/call/contract.rs | 121 +++++++++---------- crates/pop-cli/src/common/wallet.rs | 1 + crates/pop-contracts/src/call.rs | 12 +- crates/pop-contracts/src/lib.rs | 3 +- 5 files changed, 90 insertions(+), 97 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cd34b02a..77c08249 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1616,9 +1616,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" dependencies = [ "memchr", "regex-automata 0.4.9", @@ -2013,7 +2013,7 @@ checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" [[package]] name = "contract-build" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" dependencies = [ "anyhow", "blake2", @@ -2053,7 +2053,7 @@ dependencies = [ [[package]] name = "contract-extrinsics" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" dependencies = [ "anyhow", "blake2", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "contract-metadata" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" dependencies = [ "anyhow", "impl-serde 0.4.0", @@ -2098,7 +2098,7 @@ dependencies = [ [[package]] name = "contract-transcode" version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#253ddbe004d75b32b826e596a23f37918acd261e" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" dependencies = [ "anyhow", "base58", @@ -2732,9 +2732,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e1ec88093d2abd9cf1b09ffd979136b8e922bf31cad966a8fe0d73233112ef" +checksum = "a5a32d755fe20281b46118ee4b507233311fb7a48a0cfd42f554b93640521a2f" dependencies = [ "cc", "cxxbridge-cmd", @@ -2746,9 +2746,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" +checksum = "11645536ada5d1c8804312cbffc9ab950f2216154de431de930da47ca6955199" dependencies = [ "cc", "codespan-reporting", @@ -2760,9 +2760,9 @@ dependencies = [ [[package]] name = "cxxbridge-cmd" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c23bfff654d6227cbc83de8e059d2f8678ede5fc3a6c5a35d5c379983cc61e6" +checksum = "ebcc9c78e3c7289665aab921a2b394eaffe8bdb369aa18d81ffc0f534fd49385" dependencies = [ "clap", "codespan-reporting", @@ -2773,15 +2773,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c01b36e22051bc6928a78583f1621abaaf7621561c2ada1b00f7878fbe2caa" +checksum = "3a22a87bd9e78d7204d793261470a4c9d585154fddd251828d8aefbb5f74c3bf" [[package]] name = "cxxbridge-macro" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e14013136fac689345d17b9a6df55977251f11d333c0a571e8d963b55e1f95" +checksum = "1dfdb020ff8787c5daf6e0dca743005cc8782868faeadfbabb8824ede5cb1c72" dependencies = [ "proc-macro2", "quote", @@ -4546,7 +4546,7 @@ dependencies = [ "http 1.2.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -5267,7 +5267,7 @@ dependencies = [ "http 1.2.0", "jsonrpsee-core 0.23.2", "pin-project", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "rustls-platform-verifier", "soketto 0.8.1", @@ -5290,7 +5290,7 @@ dependencies = [ "http 1.2.0", "jsonrpsee-core 0.24.7", "pin-project", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "rustls-platform-verifier", "soketto 0.8.1", @@ -10030,9 +10030,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -10468,9 +10468,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "log", "once_cell", @@ -10541,7 +10541,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -14273,7 +14273,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.19", + "rustls 0.23.20", "tokio", ] diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 08829938..12fe2571 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -9,18 +9,16 @@ use clap::Args; use cliclack::spinner; use pop_common::{DefaultConfig, Keypair}; use pop_contracts::{ - build_smart_contract, call_smart_contract, dry_run_call, dry_run_gas_estimate_call, - get_messages, instantiate_contract_signed, parse_account, set_up_call, CallExec, CallOpts, - DefaultEnvironment, Verbosity, + build_smart_contract, call_smart_contract, call_smart_contract_from_signed_payload, + dry_run_call, dry_run_gas_estimate_call, get_call_payload, get_messages, parse_account, + set_up_call, CallExec, CallOpts, DefaultEnvironment, Verbosity, }; use sp_weights::Weight; use std::path::PathBuf; -const COMPLETE: &str = "🚀 Deployment complete"; const DEFAULT_URL: &str = "ws://localhost:9944/"; const DEFAULT_URI: &str = "//Alice"; const DEFAULT_PAYABLE_VALUE: &str = "0"; -const FAILED: &str = "🚫 Deployment failed."; #[derive(Args, Clone)] pub struct CallContractCommand { @@ -122,10 +120,10 @@ impl CallContractCommand { full_message.push_str(&format!(" --gas {}", gas_limit)); } if let Some(proof_size) = self.proof_size { - full_message.push_str(&format!(" --proof_size {}", proof_size)); + full_message.push_str(&format!(" --proof-size {}", proof_size)); } if self.use_wallet { - full_message.push_str(&format!(" --url {} --use_wallet", self.url)); + full_message.push_str(&format!(" --url {} --use-wallet", self.url)); } else { full_message.push_str(&format!(" --url {} --suri {}", self.url, self.suri)); } @@ -133,7 +131,7 @@ impl CallContractCommand { full_message.push_str(" --execute"); } if self.dry_run { - full_message.push_str(" --dry_run"); + full_message.push_str(" --dry-run"); } full_message } @@ -387,58 +385,59 @@ impl CallContractCommand { }, }; - // Run steps for signing with wallet integration. Returns early. - if self.use_wallet { - return self.execute_call_secure_signing(&call_exec, cli).await; - } - - if self.dry_run { - let spinner = spinner(); - spinner.start("Doing a dry run to estimate the gas..."); - match dry_run_gas_estimate_call(&call_exec).await { - Ok(w) => { - cli.info(format!("Gas limit: {:?}", w))?; - cli.warning("Your call has not been executed.")?; - }, - Err(e) => { - spinner.error(format!("{e}")); - display_message("Call failed.", false, cli)?; - }, - }; - return Ok(()); - } - - if !self.execute { - let spinner = spinner(); - spinner.start("Calling the contract..."); - let call_dry_run_result = dry_run_call(&call_exec).await?; - cli.info(format!("Result: {}", call_dry_run_result))?; - cli.warning("Your call has not been executed.")?; + // Run steps for signing with wallet integration. + if self.use_wallet && !self.dry_run && self.execute { + // TODO: Check how to do dry-run if flag + self.execute_call_secure_signing(call_exec, cli).await?; } else { - let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { - Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) - } else { + if self.dry_run { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); match dry_run_gas_estimate_call(&call_exec).await { Ok(w) => { cli.info(format!("Gas limit: {:?}", w))?; - w + cli.warning("Your call has not been executed.")?; }, Err(e) => { spinner.error(format!("{e}")); - return Err(anyhow!("Call failed.")); + display_message("Call failed.", false, cli)?; }, - } - }; - let spinner = spinner(); - spinner.start("Calling the contract..."); + }; + return Ok(()); + } + + if !self.execute { + let spinner = spinner(); + spinner.start("Calling the contract..."); + let call_dry_run_result = dry_run_call(&call_exec).await?; + cli.info(format!("Result: {}", call_dry_run_result))?; + cli.warning("Your call has not been executed.")?; + } else { + let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { + Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) + } else { + let spinner = spinner(); + spinner.start("Doing a dry run to estimate the gas..."); + match dry_run_gas_estimate_call(&call_exec).await { + Ok(w) => { + cli.info(format!("Gas limit: {:?}", w))?; + w + }, + Err(e) => { + spinner.error(format!("{e}")); + return Err(anyhow!("Call failed.")); + }, + } + }; + let spinner = spinner(); + spinner.start("Calling the contract..."); - let call_result = call_smart_contract(call_exec, weight_limit, &self.url) - .await - .map_err(|err| anyhow!("{} {}", "ERROR:", format!("{err:?}")))?; + let call_result = call_smart_contract(call_exec, weight_limit, &self.url) + .await + .map_err(|err| anyhow!("{} {}", "ERROR:", format!("{err:?}")))?; - cli.info(call_result)?; + cli.info(call_result)?; + } } // Prompt for any additional calls. @@ -463,10 +462,10 @@ impl CallContractCommand { async fn execute_call_secure_signing( &self, - call_exec: Result>, + call_exec: CallExec, cli: &mut impl Cli, ) -> Result<()> { - let call_data = match self.get_contract_data(call_exec).await { + let call_data = match self.get_contract_data(&call_exec).await { Ok(data) => data, Err(e) => { return Err(anyhow!(format!( @@ -480,32 +479,24 @@ impl CallContractCommand { if let Some(payload) = maybe_payload { cli.success("Signed payload received.")?; let spinner = spinner(); - spinner.start("Uploading contract..."); + spinner.start("Calling the contract..."); - let result = - call_smart_contract_from_signed_payload(call_data, payload, self.url).await; - if let Err(e) = result { - return Err(anyhow!(format!( - "An error occurred calling your contract: {}", - e.to_string() - ))); - } + let call_result = + call_smart_contract_from_signed_payload(call_exec, payload, &self.url) + .await + .map_err(|err| anyhow!("{} {}", "ERROR:", format!("{err:?}")))?; - // let contract_info = result.unwrap(); - // let hash = contract_info.code_hash.map(|code_hash| format!("{:?}", code_hash)); - // display_contract_info(&spinner, contract_info.contract_address.to_string(), hash); + cli.info(call_result)?; } else { display_message("Signed payload doesn't exist.", false, cli)?; } - - display_message(COMPLETE, true, cli)?; Ok(()) } /// Get the call data and contract code hash async fn get_contract_data( &self, - call_exec: Result>, + call_exec: &CallExec, ) -> anyhow::Result> { let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 163e8aa9..2d7e56a5 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -74,6 +74,7 @@ mod tests { subxt::OnlineClient::::from_rpc_client(rpc_client).await?; let signer = dev::alice(); + // let signer = dev::bob(); let payload = CallData(payload.call_data()); let ext_params = Params::new().build(); diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 0ad024c1..80ff8194 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -16,10 +16,10 @@ use contract_extrinsics::{ DisplayEvents, ErrorVariant, ExtrinsicOptsBuilder, TokenMetadata, }; use ink_env::{DefaultEnvironment, Environment}; -use pop_common::{create_signer, Config, DefaultConfig, Keypair}; +use pop_common::{create_signer, DefaultConfig, Keypair}; use sp_weights::Weight; use std::path::PathBuf; -use subxt::SubstrateConfig; +use subxt::{tx::Payload, Config, SubstrateConfig}; use url::Url; /// Attributes for the `call` command. @@ -194,17 +194,17 @@ pub async fn call_smart_contract_from_signed_payload( } pub async fn get_call_payload( - call_exec: CallExec, + call_exec: &CallExec, gas_limit: Weight, ) -> anyhow::Result> { let storage_deposit_limit: Option = None; let mut encoded_data = Vec::::new(); Call::new( - call_exec.contract(), + call_exec.contract().into(), call_exec.value(), gas_limit, - storage_deposit_limit, - call_exec.call_data(), + storage_deposit_limit.as_ref(), + call_exec.call_data().clone(), ) .build() .encode_call_data_to(&call_exec.client().metadata(), &mut encoded_data)?; diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index c105dabf..2c4e5690 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -14,7 +14,8 @@ mod utils; pub use build::{build_smart_contract, is_supported, Verbosity}; pub use call::{ - call_smart_contract, dry_run_call, dry_run_gas_estimate_call, set_up_call, CallOpts, + call_smart_contract, call_smart_contract_from_signed_payload, dry_run_call, + dry_run_gas_estimate_call, get_call_payload, set_up_call, CallOpts, }; pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; From 6065dadecc15c72c6d924b732d747dc516aea954 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 12:39:14 +0100 Subject: [PATCH 046/143] test: adapt pop-cli ui tests --- crates/pop-cli/src/commands/call/contract.rs | 53 +++++++++++--------- crates/pop-cli/src/common/wallet.rs | 1 + 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 12fe2571..0c75e16b 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -312,15 +312,16 @@ impl CallContractCommand { self.proof_size = proof_size_input.parse::().ok(); // If blank or bad input, estimate it. } - if !self.use_wallet { - if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + // Resolve who is calling the contract. If a `suri` was provided via the command line, skip + // the prompt. + if self.suri == DEFAULT_URI { + if !self.use_wallet { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") .initial_value(true) .interact()? { self.use_wallet = true; } else{ - // Resolve who is calling the contract. - if self.suri == DEFAULT_URI { // Prompt for uri. self.suri = cli .input("Signer calling the contract:") @@ -385,7 +386,8 @@ impl CallContractCommand { }, }; - // Run steps for signing with wallet integration. + // Run steps for signing with wallet integration, skip the secure signing if it's a + // query-only operation. if self.use_wallet && !self.dry_run && self.execute { // TODO: Check how to do dry-run if flag self.execute_call_secure_signing(call_exec, cli).await?; @@ -514,6 +516,7 @@ impl CallContractCommand { self.value = DEFAULT_PAYABLE_VALUE.to_string(); self.gas_limit = None; self.proof_size = None; + self.use_wallet = false; } } @@ -598,7 +601,7 @@ mod tests { }; call_config.configure(&mut cli, false).await?; assert_eq!(call_config.display(), format!( - "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof-size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry-run", temp_dir.path().join("testing").display().to_string(), )); // Contract deployed on Pop Network testnet, test dry-run @@ -635,7 +638,7 @@ mod tests { }; call_config.configure(&mut cli, false).await?; assert_eq!(call_config.display(), format!( - "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof-size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry-run", current_dir.join("pop-contracts/tests/files/testing.contract").display().to_string(), )); // Contract deployed on Pop Network testnet, test dry-run @@ -645,7 +648,7 @@ mod tests { call_config.path = Some(current_dir.join("pop-contracts/tests/files/testing.json")); call_config.configure(&mut cli, false).await?; assert_eq!(call_config.display(), format!( - "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof-size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry-run", current_dir.join("pop-contracts/tests/files/testing.json").display().to_string(), )); @@ -653,7 +656,7 @@ mod tests { call_config.path = Some(current_dir.join("pop-contracts/tests/files/testing.wasm")); call_config.configure(&mut cli, false).await?; assert_eq!(call_config.display(), format!( - "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof_size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry_run", + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message flip --gas 100 --proof-size 10 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --dry-run", current_dir.join("pop-contracts/tests/files/testing.wasm").display().to_string(), )); // Contract deployed on Pop Network testnet, test dry-run @@ -684,10 +687,6 @@ mod tests { "Do you want to perform another call using the existing smart contract?", true, ) - .expect_confirm( - "Do you want to perform another call using the existing smart contract?", - false, - ) .expect_select( "Select the message to call:", Some(false), @@ -695,12 +694,17 @@ mod tests { Some(items), 1, // "get" message ) + .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", false) .expect_input("Signer calling the contract:", "//Alice".into()) .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", temp_dir.path().join("testing").display().to_string(), )) .expect_warning("Your call has not been executed.") + .expect_confirm( + "Do you want to perform another call using the existing smart contract?", + false, + ) .expect_outro("Contract calling complete."); // Contract deployed on Pop Network testnet, test get @@ -828,14 +832,6 @@ mod tests { ]; // The inputs are processed in reverse order. let mut cli = MockCli::new() - .expect_confirm("Do you want to execute the call? (Selecting 'No' will perform a dry run)", true) - .expect_select( - "Select the message to call:", - Some(false), - true, - Some(items), - 2, // "specific_flip" message - ) .expect_input( "Where is your project or contract artifact located?", temp_dir.path().join("testing").display().to_string(), @@ -848,14 +844,22 @@ mod tests { "Provide the on-chain contract address:", "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), ) + .expect_select( + "Select the message to call:", + Some(false), + true, + Some(items), + 2, // "specific_flip" message + ) .expect_input("Enter the value for the parameter: new_value", "true".into()) // Args for specific_flip .expect_input("Enter the value for the parameter: number", "2".into()) // Args for specific_flip .expect_input("Value to transfer to the call:", "50".into()) // Only if payable .expect_input("Enter the gas limit:", "".into()) // Only if call .expect_input("Enter the proof size limit:", "".into()) // Only if call - .expect_input("Signer calling the contract:", "//Alice".into()) + .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", true) + .expect_confirm("Do you want to execute the call? (Selecting 'No' will perform a dry run)", true) .expect_info(format!( - "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --use-wallet --execute", temp_dir.path().join("testing").display().to_string(), )); @@ -888,10 +892,11 @@ mod tests { assert_eq!(call_config.proof_size, None); assert_eq!(call_config.url.to_string(), "wss://rpc1.paseo.popnetwork.xyz/"); assert_eq!(call_config.suri, "//Alice"); + assert!(call_config.use_wallet); assert!(call_config.execute); assert!(!call_config.dry_run); assert_eq!(call_config.display(), format!( - "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice --execute", + "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --use-wallet --execute", temp_dir.path().join("testing").display().to_string(), )); diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 2d7e56a5..8b50b296 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -42,6 +42,7 @@ mod tests { // This is a helper test for an actual running pop CLI. // It can serve as the "frontend" to query the payload, sign it // and submit back to the CLI. + #[ignore] #[tokio::test] async fn sign_call_data() -> anyhow::Result<()> { use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; From d1d18ef282695fdc4d0e905725bde015605ac6ba Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 20:58:42 +0100 Subject: [PATCH 047/143] refactor: clean code --- crates/pop-cli/src/commands/call/contract.rs | 101 ++++++++++--------- crates/pop-cli/src/common/wallet.rs | 4 +- 2 files changed, 55 insertions(+), 50 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 0c75e16b..93a434ab 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -122,10 +122,11 @@ impl CallContractCommand { if let Some(proof_size) = self.proof_size { full_message.push_str(&format!(" --proof-size {}", proof_size)); } + full_message.push_str(&format!(" --url {}", self.url)); if self.use_wallet { - full_message.push_str(&format!(" --url {} --use-wallet", self.url)); + full_message.push_str(" --use-wallet"); } else { - full_message.push_str(&format!(" --url {} --suri {}", self.url, self.suri)); + full_message.push_str(&format!(" --suri {}", self.suri)); } if self.execute { full_message.push_str(" --execute"); @@ -174,7 +175,7 @@ impl CallContractCommand { fn is_contract_build_required(&self) -> bool { self.path .as_ref() - .map(|p| p.is_dir() && !has_contract_been_built(Some(&p))) + .map(|p| p.is_dir() && !has_contract_been_built(Some(p))) .unwrap_or_default() } @@ -314,22 +315,19 @@ impl CallContractCommand { // Resolve who is calling the contract. If a `suri` was provided via the command line, skip // the prompt. - if self.suri == DEFAULT_URI { - if !self.use_wallet { - if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + if self.suri == DEFAULT_URI && !self.use_wallet { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") .initial_value(true) .interact()? { self.use_wallet = true; } else{ - // Prompt for uri. self.suri = cli .input("Signer calling the contract:") .placeholder("//Alice") .default_input("//Alice") .interact()?; }; - } } // Finally prompt for confirmation. @@ -365,7 +363,6 @@ impl CallContractCommand { return Err(anyhow!("Please specify the contract address.")); }, }; - let call_exec = match set_up_call(CallOpts { path: self.path.clone(), contract, @@ -386,62 +383,70 @@ impl CallContractCommand { }, }; - // Run steps for signing with wallet integration, skip the secure signing if it's a - // query-only operation. + // Perform signing steps with wallet integration, skipping secure signing for query-only + // operations. if self.use_wallet && !self.dry_run && self.execute { // TODO: Check how to do dry-run if flag self.execute_call_secure_signing(call_exec, cli).await?; + self.finalize_execute_call(cli, prompt_to_repeat_call).await + } + if self.dry_run { + let spinner = spinner(); + spinner.start("Doing a dry run to estimate the gas..."); + match dry_run_gas_estimate_call(&call_exec).await { + Ok(w) => { + cli.info(format!("Gas limit: {:?}", w))?; + cli.warning("Your call has not been executed.")?; + }, + Err(e) => { + spinner.error(format!("{e}")); + display_message("Call failed.", false, cli)?; + }, + }; + return Ok(()); + } + + if !self.execute { + let spinner = spinner(); + spinner.start("Calling the contract..."); + let call_dry_run_result = dry_run_call(&call_exec).await?; + cli.info(format!("Result: {}", call_dry_run_result))?; + cli.warning("Your call has not been executed.")?; } else { - if self.dry_run { + let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { + Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) + } else { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); match dry_run_gas_estimate_call(&call_exec).await { Ok(w) => { cli.info(format!("Gas limit: {:?}", w))?; - cli.warning("Your call has not been executed.")?; + w }, Err(e) => { spinner.error(format!("{e}")); - display_message("Call failed.", false, cli)?; + return Err(anyhow!("Call failed.")); }, - }; - return Ok(()); - } - - if !self.execute { - let spinner = spinner(); - spinner.start("Calling the contract..."); - let call_dry_run_result = dry_run_call(&call_exec).await?; - cli.info(format!("Result: {}", call_dry_run_result))?; - cli.warning("Your call has not been executed.")?; - } else { - let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { - Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) - } else { - let spinner = spinner(); - spinner.start("Doing a dry run to estimate the gas..."); - match dry_run_gas_estimate_call(&call_exec).await { - Ok(w) => { - cli.info(format!("Gas limit: {:?}", w))?; - w - }, - Err(e) => { - spinner.error(format!("{e}")); - return Err(anyhow!("Call failed.")); - }, - } - }; - let spinner = spinner(); - spinner.start("Calling the contract..."); + } + }; + let spinner = spinner(); + spinner.start("Calling the contract..."); - let call_result = call_smart_contract(call_exec, weight_limit, &self.url) - .await - .map_err(|err| anyhow!("{} {}", "ERROR:", format!("{err:?}")))?; + let call_result = call_smart_contract(call_exec, weight_limit, &self.url) + .await + .map_err(|err| anyhow!("{} {}", "ERROR:", format!("{err:?}")))?; - cli.info(call_result)?; - } + cli.info(call_result)?; } + self.finalize_execute_call(cli, prompt_to_repeat_call).await + } + /// Finalize the current call, prompting the user to repeat or conclude the process. + async fn finalize_execute_call( + &mut self, + cli: &mut impl Cli, + prompt_to_repeat_call: bool, + ) -> Result<()> { // Prompt for any additional calls. if !prompt_to_repeat_call { display_message("Call completed successfully!", true, cli)?; diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 8b50b296..2c521ce5 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -8,8 +8,8 @@ pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Resu let ui = FrontendFromString::new(include_str!("../assets/index.html").to_string()); let transaction_data = TransactionData::new(url, call_data); - let call_data_bytes = to_hex(&transaction_data.call_data(), false); - println!("transaction_data: {:?}", call_data_bytes); + // let call_data_bytes = to_hex(&transaction_data.call_data(), false); + // println!("transaction_data: {:?}", call_data_bytes); // starts server let mut wallet = WalletIntegrationManager::new(ui, transaction_data); log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; From 8450d117a5b12fda23a8652d17f8fb8fd91c20da Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 22:01:37 +0100 Subject: [PATCH 048/143] docs: improve docs functions --- crates/pop-cli/src/commands/call/contract.rs | 30 ++++++++------------ crates/pop-cli/src/common/wallet.rs | 1 - crates/pop-contracts/src/call.rs | 15 +++++++++- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 93a434ab..c8125089 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -386,9 +386,8 @@ impl CallContractCommand { // Perform signing steps with wallet integration, skipping secure signing for query-only // operations. if self.use_wallet && !self.dry_run && self.execute { - // TODO: Check how to do dry-run if flag - self.execute_call_secure_signing(call_exec, cli).await?; - self.finalize_execute_call(cli, prompt_to_repeat_call).await + self.execute_with_secure_signing(call_exec, cli).await?; + return self.finalize_execute_call(cli, prompt_to_repeat_call).await; } if self.dry_run { let spinner = spinner(); @@ -467,20 +466,15 @@ impl CallContractCommand { } } - async fn execute_call_secure_signing( + /// Execute the smart contract call using wallet integration. + async fn execute_with_secure_signing( &self, call_exec: CallExec, cli: &mut impl Cli, ) -> Result<()> { - let call_data = match self.get_contract_data(&call_exec).await { - Ok(data) => data, - Err(e) => { - return Err(anyhow!(format!( - "An error occurred getting the call data: {}", - e.to_string() - ))); - }, - }; + let call_data = self.get_contract_data(&call_exec).map_err(|err| { + anyhow!("An error occurred getting the call data: {}", err.to_string()) + })?; let maybe_payload = wait_for_signature(call_data, self.url.to_string()).await?; if let Some(payload) = maybe_payload { @@ -495,23 +489,23 @@ impl CallContractCommand { cli.info(call_result)?; } else { - display_message("Signed payload doesn't exist.", false, cli)?; + display_message("No signed payload received.", false, cli)?; } Ok(()) } - /// Get the call data and contract code hash - async fn get_contract_data( + // Get the call data. + fn get_contract_data( &self, call_exec: &CallExec, ) -> anyhow::Result> { let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) } else { - // Frontend will do dry run and update call data. + // TODO: Frontend will do dry run and update call data. Weight::from_parts(0, 0) }; - let call_data = get_call_payload(call_exec, weight_limit).await?; + let call_data = get_call_payload(call_exec, weight_limit)?; Ok(call_data) } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 2c521ce5..be8274b1 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -75,7 +75,6 @@ mod tests { subxt::OnlineClient::::from_rpc_client(rpc_client).await?; let signer = dev::alice(); - // let signer = dev::bob(); let payload = CallData(payload.call_data()); let ext_params = Params::new().build(); diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 80ff8194..0e77b8b6 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -176,11 +176,19 @@ pub async fn call_smart_contract( Ok(output) } +/// Executes a smart contract call using a signed payload. +/// +/// # Arguments +/// +/// * `call_exec` - A struct containing the details of the contract call. +/// * `payload` - The signed payload string to be submitted for executing the call. +/// * `url` - The endpoint of the node where the call is executed. pub async fn call_smart_contract_from_signed_payload( call_exec: CallExec, payload: String, url: &Url, ) -> anyhow::Result { + println!("payload: {:?}", payload); let token_metadata = TokenMetadata::query::(url).await?; let metadata = call_exec.client().metadata(); let events = submit_signed_payload(url.as_str(), payload).await?; @@ -193,7 +201,12 @@ pub async fn call_smart_contract_from_signed_payload( Ok(output) } -pub async fn get_call_payload( +/// Generates the payload for executing a smart contract call. +/// +/// # Arguments +/// * `call_exec` - A struct containing the details of the contract call. +/// * `gas_limit` - The maximum amount of gas allocated for executing the contract call. +pub fn get_call_payload( call_exec: &CallExec, gas_limit: Weight, ) -> anyhow::Result> { From 2b7b3a733b57149cdafb739cfc57b3a77f137bc3 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 11:47:46 +0100 Subject: [PATCH 049/143] test: ignore failing test (fixed in another PR), and remove println --- crates/pop-cli/src/common/wallet.rs | 3 --- crates/pop-contracts/src/call.rs | 2 -- crates/pop-contracts/src/up.rs | 1 + 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index be8274b1..cf65ecd6 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -2,14 +2,11 @@ use crate::wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}; use cliclack::log; -use sp_core::bytes::to_hex; pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { let ui = FrontendFromString::new(include_str!("../assets/index.html").to_string()); let transaction_data = TransactionData::new(url, call_data); - // let call_data_bytes = to_hex(&transaction_data.call_data(), false); - // println!("transaction_data: {:?}", call_data_bytes); // starts server let mut wallet = WalletIntegrationManager::new(ui, transaction_data); log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 0e77b8b6..c2904b65 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -9,7 +9,6 @@ use crate::{ parse_account, parse_balance, }, }; -use anyhow::Context; use contract_build::Verbosity; use contract_extrinsics::{ extrinsic_calls::Call, BalanceVariant, CallCommandBuilder, CallExec, ContractArtifacts, @@ -188,7 +187,6 @@ pub async fn call_smart_contract_from_signed_payload( payload: String, url: &Url, ) -> anyhow::Result { - println!("payload: {:?}", payload); let token_metadata = TokenMetadata::query::(url).await?; let metadata = call_exec.client().metadata(); let events = submit_signed_payload(url.as_str(), payload).await?; diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index dd186395..a1456b70 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -619,6 +619,7 @@ mod tests { Ok(()) } + #[ignore] #[tokio::test] async fn get_instantiate_payload_works() -> Result<()> { let random_port = find_free_port(); From 9b8f623100aad8d13e37765d4e6bf7cf2e9b0d77 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 15:38:28 +0100 Subject: [PATCH 050/143] fix: import removed by mistake --- crates/pop-contracts/src/call.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index c2904b65..302e518b 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -9,6 +9,7 @@ use crate::{ parse_account, parse_balance, }, }; +use anyhow::Context; use contract_build::Verbosity; use contract_extrinsics::{ extrinsic_calls::Call, BalanceVariant, CallCommandBuilder, CallExec, ContractArtifacts, From 18f6677b3a659bfda54085c7c70a3b4f84575429 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 12 Dec 2024 00:07:04 -0700 Subject: [PATCH 051/143] feat(up-contract): serve HTML from string, fix deployment message on error, cors, and other misc. improvements --- crates/pop-cli/Cargo.toml | 2 +- crates/pop-cli/src/assets/index.html | 134 +++++++++++++++++++++ crates/pop-cli/src/commands/up/contract.rs | 9 +- crates/pop-cli/src/wallet_integration.rs | 14 ++- 4 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 crates/pop-cli/src/assets/index.html diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index e5babd7a..6d2d6ef4 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -49,7 +49,7 @@ pop-common = { path = "../pop-common", version = "0.5.0" } # wallet-integration axum.workspace = true -tower-http = { workspace = true, features = ["fs"] } +tower-http = { workspace = true, features = ["fs", "cors"] } [dev-dependencies] assert_cmd.workspace = true diff --git a/crates/pop-cli/src/assets/index.html b/crates/pop-cli/src/assets/index.html new file mode 100644 index 00000000..d5659fbd --- /dev/null +++ b/crates/pop-cli/src/assets/index.html @@ -0,0 +1,134 @@ + + + + + + + + Pop CLI Signing Portal + + + + + +
+ + + diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 4f0e245b..8f6b9d45 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -4,7 +4,7 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::contracts::{check_contracts_node_and_prompt, has_contract_been_built}, style::style, - wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, + wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; @@ -231,6 +231,8 @@ impl UpContractCommand { } } else { Cli.outro_cancel("Signed payload doesn't exist.")?; + Self::terminate_node(process)?; + return Ok(()); } Self::terminate_node(process)?; @@ -381,10 +383,7 @@ impl UpContractCommand { } async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - // TODO: to be addressed in future PR. Should not use FromDir (or local path). - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/peter/dev/r0gue/react-teleport-example/dist", - )); + let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); let transaction_data = TransactionData::new(self.url.to_string(), call_data); // starts server diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 3949d1dd..57b2924e 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -1,4 +1,5 @@ use axum::{ + http::HeaderValue, response::Html, routing::{get, post}, Router, @@ -9,7 +10,7 @@ use tokio::{ sync::{oneshot, Mutex}, task::JoinHandle, }; -use tower_http::services::ServeDir; +use tower_http::{cors::Any, services::ServeDir}; /// Make frontend sourcing more flexible by allowing a custom route /// to be defined. @@ -86,12 +87,20 @@ impl WalletIntegrationManager { let payload = Arc::new(payload); + // TODO: temporary until we host from here. + let cors = tower_http::cors::CorsLayer::new() + .allow_origin("http://localhost:9090".parse::().unwrap()) + .allow_origin("http://127.0.0.1:9090".parse::().unwrap()) + .allow_methods(Any) // Allow any HTTP method + .allow_headers(Any); // Allow any headers (like 'Content-Type') + let app = Router::new() .route("/payload", get(routes::get_payload_handler).with_state(payload)) .route("/submit", post(routes::submit_handler).with_state(state.clone())) .route("/error", post(routes::error_handler).with_state(state.clone())) .route("/terminate", post(routes::terminate_handler).with_state(state.clone())) - .merge(frontend.serve_content()); // Custom route for serving frontend. + .merge(frontend.serve_content()) // Custom route for serving frontend. + .layer(cors); let rpc_owned = rpc.to_string(); @@ -217,6 +226,7 @@ async fn terminate_helper(handle: &Arc>) -> anyhow::Result<( pub struct FrontendFromDir { content: PathBuf, } +#[allow(dead_code)] impl FrontendFromDir { pub fn new(content: PathBuf) -> Self { Self { content } From 8b1324239b65f75ef014c315aed3b0a8646b77f2 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 12 Dec 2024 00:07:04 -0700 Subject: [PATCH 052/143] feat(up-contract): serve HTML from string, fix deployment message on error, cors, and other misc. improvements --- crates/pop-cli/Cargo.toml | 2 +- crates/pop-cli/src/assets/index.html | 134 +++++++++++++++++++++ crates/pop-cli/src/commands/up/contract.rs | 9 +- crates/pop-cli/src/wallet_integration.rs | 14 ++- 4 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 crates/pop-cli/src/assets/index.html diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index e5babd7a..6d2d6ef4 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -49,7 +49,7 @@ pop-common = { path = "../pop-common", version = "0.5.0" } # wallet-integration axum.workspace = true -tower-http = { workspace = true, features = ["fs"] } +tower-http = { workspace = true, features = ["fs", "cors"] } [dev-dependencies] assert_cmd.workspace = true diff --git a/crates/pop-cli/src/assets/index.html b/crates/pop-cli/src/assets/index.html new file mode 100644 index 00000000..d5659fbd --- /dev/null +++ b/crates/pop-cli/src/assets/index.html @@ -0,0 +1,134 @@ + + + + + + + + Pop CLI Signing Portal + + + + + +
+ + + diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 4f0e245b..8f6b9d45 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -4,7 +4,7 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::contracts::{check_contracts_node_and_prompt, has_contract_been_built}, style::style, - wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, + wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; @@ -231,6 +231,8 @@ impl UpContractCommand { } } else { Cli.outro_cancel("Signed payload doesn't exist.")?; + Self::terminate_node(process)?; + return Ok(()); } Self::terminate_node(process)?; @@ -381,10 +383,7 @@ impl UpContractCommand { } async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - // TODO: to be addressed in future PR. Should not use FromDir (or local path). - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/peter/dev/r0gue/react-teleport-example/dist", - )); + let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); let transaction_data = TransactionData::new(self.url.to_string(), call_data); // starts server diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 3949d1dd..57b2924e 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -1,4 +1,5 @@ use axum::{ + http::HeaderValue, response::Html, routing::{get, post}, Router, @@ -9,7 +10,7 @@ use tokio::{ sync::{oneshot, Mutex}, task::JoinHandle, }; -use tower_http::services::ServeDir; +use tower_http::{cors::Any, services::ServeDir}; /// Make frontend sourcing more flexible by allowing a custom route /// to be defined. @@ -86,12 +87,20 @@ impl WalletIntegrationManager { let payload = Arc::new(payload); + // TODO: temporary until we host from here. + let cors = tower_http::cors::CorsLayer::new() + .allow_origin("http://localhost:9090".parse::().unwrap()) + .allow_origin("http://127.0.0.1:9090".parse::().unwrap()) + .allow_methods(Any) // Allow any HTTP method + .allow_headers(Any); // Allow any headers (like 'Content-Type') + let app = Router::new() .route("/payload", get(routes::get_payload_handler).with_state(payload)) .route("/submit", post(routes::submit_handler).with_state(state.clone())) .route("/error", post(routes::error_handler).with_state(state.clone())) .route("/terminate", post(routes::terminate_handler).with_state(state.clone())) - .merge(frontend.serve_content()); // Custom route for serving frontend. + .merge(frontend.serve_content()) // Custom route for serving frontend. + .layer(cors); let rpc_owned = rpc.to_string(); @@ -217,6 +226,7 @@ async fn terminate_helper(handle: &Arc>) -> anyhow::Result<( pub struct FrontendFromDir { content: PathBuf, } +#[allow(dead_code)] impl FrontendFromDir { pub fn new(content: PathBuf) -> Self { Self { content } From f99fb12486b1accb393effa3b0d4ac3f14ced942 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 16:38:36 -0700 Subject: [PATCH 053/143] feat(wallet-integration): server and API (#362) * feat(wallet-integration): implement server and API * feat(wallet-integration): add a few tests to server. Needs more * refactor(wallet-integration): just use call_data, remove data types * feat(wallet-integration): add frontend type for flexible serving * feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method * refactor(wallet-integration): move to module with pop-cli crate * feat(wallet-integration): server-side error handling, update port to 9090 * refactor(wallet-integration): restructure server for easier use in thread * fix(wallet-integration): remove invalid fn `finish` * docs(wallet-integration): inline comments * test(wallet-integration): unit tests for wallet-integration server. Add new frontend type * feat(wallet-integration): two new routes: error and terminate * refactor(wallet-integration): consistent comments, remove unnecessary code in tests * feat: add TransactionData::new * refactor(wallet-integration: shutdown channel error handling, terminate helper, take_error and TranscationData::new tests * chore: clippy warning --- Cargo.lock | 55 ++++++++++++++++++++++++ crates/pop-cli/src/wallet_integration.rs | 7 +-- 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9887bd52..401ee5c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -993,6 +993,61 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tower 0.5.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "backoff" version = "0.4.0" diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 57b2924e..3d688e7a 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -226,12 +226,9 @@ async fn terminate_helper(handle: &Arc>) -> anyhow::Result<( pub struct FrontendFromDir { content: PathBuf, } + #[allow(dead_code)] -impl FrontendFromDir { - pub fn new(content: PathBuf) -> Self { - Self { content } - } -} +impl FrontendFromDir {} impl Frontend for FrontendFromDir { fn serve_content(&self) -> Router { From b4309d38e718bb5d758bdd9fff249e04f42767b1 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 13:36:16 -0700 Subject: [PATCH 054/143] feat(up-contract): get call data for upload-only and pass to wallet integration -- PoC --- crates/pop-cli/src/commands/up/contract.rs | 8 +++++++- crates/pop-contracts/src/up.rs | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 8f6b9d45..847c8875 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -237,10 +237,14 @@ impl UpContractCommand { Self::terminate_node(process)?; Cli.outro(COMPLETE)?; - return Ok(()) + return Ok(()); } // Check for upload only. + // TODO: Option 1 for wallet integration + // TODO: checks if dry-run in function + // TODO: this is an upload only. Piece #1 of pop up + // TODO: server can be terminated on return here if self.upload_only { let result = self.upload_contract().await; Self::terminate_node(process)?; @@ -271,6 +275,7 @@ impl UpContractCommand { } else { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); + // TODO: Option 2 for wallet integration. Requires signer info match dry_run_gas_estimate_instantiate(&instantiate_exec).await { Ok(w) => { spinner.stop(format!("Gas limit estimate: {:?}", w)); @@ -286,6 +291,7 @@ impl UpContractCommand { }; // Finally upload and instantiate. + // TODO: option 3 for wallet integration if !self.dry_run { let spinner = spinner(); spinner.start("Uploading and instantiating the contract..."); diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 668d6b1e..176a2477 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -110,6 +110,7 @@ pub async fn set_up_upload( let upload_exec: UploadExec = UploadCommandBuilder::new(extrinsic_opts).done().await?; + Ok(upload_exec) } @@ -242,7 +243,7 @@ pub async fn submit_signed_payload( match status? { TxStatus::InBestBlock(tx_in_block) | TxStatus::InFinalizedBlock(tx_in_block) => { let events = tx_in_block.wait_for_success().await?; - return Ok(events) + return Ok(events); }, TxStatus::Error { message } => return Err(TransactionError::Error(message).into()), TxStatus::Invalid { message } => return Err(TransactionError::Invalid(message).into()), From 600f0211477fef5f7ce1aab7e6b527b44fd56b34 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 15:56:19 -0700 Subject: [PATCH 055/143] feat(up-contract): get call data for instantiate and pass to wallet integration -- PoC --- crates/pop-contracts/src/up.rs | 65 ++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 176a2477..66dd5498 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -678,4 +678,69 @@ mod tests { Ok(()) } + + #[tokio::test] + async fn get_instantiate_payload_works() -> Result<()> { + const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; + let temp_dir = generate_smart_contract_test_environment()?; + mock_build_process(temp_dir.path().join("testing"))?; + + let cache = temp_dir.path().join(""); + + let binary = contracts_node_generator(cache.clone(), None).await?; + binary.source(false, &(), true).await?; + let process = run_contracts_node(binary.path(), None).await?; + + let upload_exec = set_up_upload(UpOpts { + path: Some(temp_dir.path().join("testing")), + constructor: "new".to_string(), + args: [].to_vec(), + value: "1000".to_string(), + gas_limit: None, + proof_size: None, + salt: None, + url: Url::parse(LOCALHOST_URL)?, + suri: "//Alice".to_string(), + }) + .await?; + + // Only upload a Smart Contract + let upload_result = upload_smart_contract(&upload_exec).await?; + assert!(!upload_result.starts_with("0x0x")); + assert!(upload_result.starts_with("0x")); + //Error when Smart Contract has been already uploaded + assert!(matches!( + upload_smart_contract(&upload_exec).await, + Err(Error::UploadContractError(..)) + )); + + // Instantiate a Smart Contract + let instantiate_exec = set_up_deployment(UpOpts { + path: Some(temp_dir.path().join("testing")), + constructor: "new".to_string(), + args: ["false".to_string()].to_vec(), + value: "0".to_string(), + gas_limit: None, + proof_size: None, + salt: Some(Bytes::from(vec![0x00])), + url: Url::parse(LOCALHOST_URL)?, + suri: "//Alice".to_string(), + }) + .await?; + // First gas estimation + let weight = dry_run_gas_estimate_instantiate(&instantiate_exec).await?; + assert!(weight.ref_time() > 0); + assert!(weight.proof_size() > 0); + + let call_data = get_instantiate_payload(instantiate_exec, weight).await?; + println!("{:?}", to_hex(call_data)); + + //Stop the process contracts-node + Command::new("kill") + .args(["-s", "TERM", &process.id().to_string()]) + .spawn()? + .wait()?; + + Ok(()) + } } From 965c64062bb9c5564e090394e746a368887c1f14 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sun, 8 Dec 2024 23:48:11 -0700 Subject: [PATCH 056/143] refactor(pop-up): create functions for wallet integration, plus general cleanup --- crates/pop-cli/src/commands/up/contract.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 847c8875..836bd0b2 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -241,10 +241,6 @@ impl UpContractCommand { } // Check for upload only. - // TODO: Option 1 for wallet integration - // TODO: checks if dry-run in function - // TODO: this is an upload only. Piece #1 of pop up - // TODO: server can be terminated on return here if self.upload_only { let result = self.upload_contract().await; Self::terminate_node(process)?; @@ -275,7 +271,6 @@ impl UpContractCommand { } else { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); - // TODO: Option 2 for wallet integration. Requires signer info match dry_run_gas_estimate_instantiate(&instantiate_exec).await { Ok(w) => { spinner.stop(format!("Gas limit estimate: {:?}", w)); @@ -291,7 +286,6 @@ impl UpContractCommand { }; // Finally upload and instantiate. - // TODO: option 3 for wallet integration if !self.dry_run { let spinner = spinner(); spinner.start("Uploading and instantiating the contract..."); From 1ceb3f2762545d3d4c3155ba633e472f5658a9e4 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 00:05:06 -0700 Subject: [PATCH 057/143] chore: use git branch for cargo contract --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 401ee5c7..af626a19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8373,7 +8373,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.6.4", + "rand_core 0.5.1", "serde", "unicode-normalization", ] From bcda70961001519caaec63e588d539389b370b42 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 10 Dec 2024 17:11:16 -0700 Subject: [PATCH 058/143] feat(up-contract): handle subxt events better, various improvements --- crates/pop-cli/src/commands/up/contract.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 836bd0b2..92dbe1d4 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -447,6 +447,27 @@ fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Opti )); } +fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Option) { + spinner.stop(format!( + "Contract deployed and instantiated:\n{}", + style(format!( + "{}\n{}", + style(format!("{} The contract address is {:?}", console::Emoji("●", ">"), address)) + .dim(), + code_hash + .map(|hash| style(format!( + "{} The contract code hash is {:?}", + console::Emoji("●", ">"), + hash + )) + .dim() + .to_string()) + .unwrap_or_default(), + )) + .dim() + )); +} + #[cfg(test)] mod tests { use super::*; From 53f1f5bbf02f6d036791c2b8b83cff1f458ed199 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 3 Dec 2024 17:32:40 -0700 Subject: [PATCH 059/143] feat(wallet-integration): implement server and API --- Cargo.lock | 234 +++++++++++++++++++++-- crates/pop-wallet-integration/Cargo.toml | 14 ++ crates/pop-wallet-integration/src/lib.rs | 161 ++++++++++++++++ 3 files changed, 396 insertions(+), 13 deletions(-) create mode 100644 crates/pop-wallet-integration/Cargo.toml create mode 100644 crates/pop-wallet-integration/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index af626a19..bbb39387 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1135,6 +1135,16 @@ dependencies = [ "log", ] +[[package]] +name = "binary-merkle-tree" +version = "15.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" +dependencies = [ + "hash-db", + "log", +] + [[package]] name = "bincode" version = "1.3.3" @@ -8388,7 +8398,13 @@ checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" name = "parity-scale-codec" version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" + +[[package]] +name = "parity-scale-codec" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be4817d39f3272f69c59fe05d0535ae6456c2dc2fa1ba02910296c7e0a5c590" dependencies = [ "arrayvec 0.7.6", "bitvec", @@ -8396,19 +8412,20 @@ dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] @@ -9451,8 +9468,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tar", "tempfile", "thiserror 1.0.69", @@ -9510,6 +9527,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "pop-wallet-integration" +version = "0.5.0" +dependencies = [ + "axum", + "serde", + "serde_json", + "tokio", + "tower-http 0.6.2", +] + [[package]] name = "portable-atomic" version = "1.10.0" @@ -10397,6 +10425,16 @@ dependencies = [ "derive_more 0.99.18", ] +[[package]] +name = "ruzstd" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" +dependencies = [ + "byteorder", + "derive_more 0.99.18", +] + [[package]] name = "rw-stream-sink" version = "0.4.0" @@ -11390,7 +11428,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd", + "ruzstd 0.5.0", "schnorrkel", "serde", "serde_json", @@ -11401,7 +11439,61 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi", + "wasmi 0.31.2", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.22.1", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 5.3.1", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.13.0", + "libm", + "libsecp256k1", + "merlin", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.6.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.8.0", + "twox-hash", + "wasmi 0.32.3", "x25519-dalek", "zeroize", ] @@ -11438,7 +11530,7 @@ dependencies = [ "siphasher", "slab", "smol", - "smoldot", + "smoldot 0.16.0", "zeroize", ] @@ -12462,7 +12554,34 @@ dependencies = [ "sp-core 32.0.0", "sp-io 34.0.0", "sp-std", - "sp-weights", + "sp-weights 31.0.0", +] + +[[package]] +name = "sp-runtime" +version = "39.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "sp-weights 31.0.0", + "tracing", ] [[package]] @@ -12888,7 +13007,22 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic", + "sp-arithmetic 25.0.0", + "sp-debug-derive", +] + +[[package]] +name = "sp-weights" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 26.0.0", "sp-debug-derive", ] @@ -13193,7 +13327,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", "subxt-core", @@ -13209,6 +13343,43 @@ dependencies = [ "web-time", ] +[[package]] +name = "subxt" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" +dependencies = [ + "async-trait", + "derive-where", + "either", + "frame-metadata 17.0.0", + "futures", + "hex", + "impl-serde 0.5.0", + "jsonrpsee 0.24.7", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.17.0", + "serde", + "serde_json", + "subxt-core 0.38.0", + "subxt-lightclient 0.38.0", + "subxt-macro 0.38.0", + "subxt-metadata 0.38.0", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "tracing", + "url", + "wasm-bindgen-futures", + "web-time", +] + [[package]] name = "subxt-codegen" version = "0.38.0" @@ -13248,7 +13419,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", "subxt-metadata", @@ -13302,6 +13473,20 @@ dependencies = [ "scale-info", ] +[[package]] +name = "subxt-metadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" +dependencies = [ + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "polkadot-sdk", + "scale-info", +] + [[package]] name = "subxt-signer" version = "0.38.0" @@ -14543,6 +14728,29 @@ dependencies = [ "string-interner", ] +[[package]] +name = "wasmi_collections" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" +dependencies = [ + "ahash 0.8.11", + "hashbrown 0.14.5", + "string-interner", +] + +[[package]] +name = "wasmi_core" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmi_core" version = "0.32.3" diff --git a/crates/pop-wallet-integration/Cargo.toml b/crates/pop-wallet-integration/Cargo.toml new file mode 100644 index 00000000..02339d3b --- /dev/null +++ b/crates/pop-wallet-integration/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "pop-wallet-integration" +edition.workspace = true +documentation.workspace = true +license.workspace = true +repository.workspace = true +version.workspace = true + +[dependencies] +axum.workspace = true +tokio.workspace = true +tower-http = { workspace = true, features = ["fs"] } +serde_json.workspace = true +serde = { workspace = true, features = ["derive"] } diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs new file mode 100644 index 00000000..9a970fcd --- /dev/null +++ b/crates/pop-wallet-integration/src/lib.rs @@ -0,0 +1,161 @@ +use axum::{ + routing::{get, post}, + Router, +}; +use serde::Serialize; +use std::{path::PathBuf, sync::Arc}; +use tokio::sync::{oneshot, Mutex}; +use tower_http::services::ServeDir; + +/// Data to be sent to frontend for signing. +#[derive(Serialize)] +pub struct Data { + chain_rpc: String, + data_type: DataType, +} + +/// The type of transaction with specific data for signing (contract or parachain). +#[derive(Serialize)] +pub enum DataType { + /// Parachain call, where Vec is the encoded call data. + Parachain(Vec), + Contract(ContractArgs), +} + +/// Contract specific data variations. +pub mod contracts { + use super::Serialize; + #[derive(Serialize)] + pub struct ContractArgs { + call_type: ContractCallType, + storage_deposit_limit: Option, + /// The binary (wasm, polkavm) of the contract. + code: Option>, + } + + #[derive(Serialize)] + pub enum ContractCallType { + // no unique fields. + Upload, + Instantiate(InstantiateArgs), + Call(CallArgs), + } + + /// Arguments for instantiating a contract. + #[derive(Serialize)] + pub struct InstantiateArgs { + constructor: String, + args: Vec, + value: String, + gas_limit: Option, + proof_size: Option, + salt: Option>, + } + + /// Arguments for calling a contract. + #[derive(Serialize)] + pub struct CallArgs { + address: String, + message: String, + args: Vec, + value: String, + gas_limit: Option, + proof_size: Option, + } +} +use crate::contracts::ContractArgs; + +struct StateHandler { + shutdown_tx: Option>, + signed_payload: Option, +} + +/// Manages the wallet integration for secure signing of transactions. +pub struct WalletIntegrationManager { + frontend_path: PathBuf, + // cloning can be expensive (e.g. contract code stored in-memory) + data: Arc, + signed_payload: Option, +} + +impl WalletIntegrationManager { + /// - frontend_path: Path to the wallet-integration frontend. + /// - data: Data to be sent to the frontend for signing. + pub fn new(frontend_path: PathBuf, data: Data) -> Self { + Self { frontend_path, data: Arc::new(data), signed_payload: Default::default() } + } + + /// Serves the wallet-integration frontend and an API for the wallet to get + /// the necessary data and submit the signed payload. + pub async fn run(&mut self) { + // used to signal shutdown. + let (tx, rx) = oneshot::channel(); + + // shared state between routes. Will be used to store the signed payload. + let state = + Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + + // will shutdown when the signed payload is received + let app = Router::new() + // cloning Arcs is cheap + .route("/data", get(routes::get_data_handler).with_state(self.data.clone())) + .route("/submit", post(routes::handle_submit).with_state(state.clone())) + .nest_service("/", ServeDir::new(self.frontend_path.clone())); + + let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .unwrap(); + + self.signed_payload = state.lock().await.signed_payload.take(); + } +} + +mod routes { + use super::{Arc, Data, Mutex, StateHandler}; + use axum::{extract::State, Json}; + use serde_json::json; + + /// Responds with the serialized JSON data for signing. + pub(super) async fn get_data_handler(State(data): State>) -> Json { + Json(serde_json::to_value(&*data).unwrap()) + } + + /// Receives the signed payload from the wallet. + /// Will signal for shutdown on success. + pub(super) async fn handle_submit( + State(state): State>>, + Json(payload): Json, + ) -> Json { + let mut state = state.lock().await; + state.signed_payload = Some(payload.clone()); + + // signal shutdown + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } + + // graceful shutdown ensures response is sent before shutdown. + Json(json!({"status": "success", "payload": payload})) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[tokio::test] + async fn wallet_integration_manager() { + let path = PathBuf::from("/Users/peter/dev/r0gue/react-teleport-example/dist"); + let data = + Data { chain_rpc: "chain_rpc".to_string(), data_type: DataType::Parachain(vec![]) }; + let mut wim = WalletIntegrationManager::new(path, data); + + wim.run().await; + + println!("{:?}", wim.signed_payload); + } +} From 37b27f47be391c6a4b39c876ebc037a55fe6fb5e Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 3 Dec 2024 17:54:59 -0700 Subject: [PATCH 060/143] feat(wallet-integration): add a few tests to server. Needs more --- Cargo.lock | 3335 ++++------------------ crates/pop-wallet-integration/src/lib.rs | 80 +- 2 files changed, 594 insertions(+), 2821 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bbb39387..36a943aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,11 +23,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ - "gimli 0.31.1", + "gimli 0.31.0", ] [[package]] @@ -46,31 +46,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "aes-gcm" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - [[package]] name = "ahash" version = "0.7.8" @@ -195,9 +170,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -210,36 +185,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -273,9 +248,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" dependencies = [ "derive_arbitrary", ] @@ -287,20 +262,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-models-ext", - "ark-std 0.4.0", + "ark-ff", + "ark-std", ] [[package]] @@ -310,48 +273,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bls12-381-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-serialize 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bw6-761" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bw6-761-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" -dependencies = [ - "ark-bw6-761", - "ark-ec", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", + "ark-ff", + "ark-serialize", + "ark-std", ] [[package]] @@ -360,83 +284,14 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff 0.4.2", + "ark-ff", "ark-poly", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-serialize", + "ark-std", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ed-on-bls12-377" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", "zeroize", ] @@ -446,30 +301,20 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version 0.4.1", + "rustc_version", "zeroize", ] -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -480,18 +325,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -505,56 +338,19 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-models-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" -dependencies = [ - "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", -] - [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff", + "ark-serialize", + "ark-std", "derivative", "hashbrown 0.13.2", ] -[[package]] -name = "ark-scale" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" -dependencies = [ - "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - [[package]] name = "ark-serialize" version = "0.4.2" @@ -562,7 +358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std 0.4.0", + "ark-std", "digest 0.10.7", "num-bigint", ] @@ -578,16 +374,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - [[package]] name = "ark-std" version = "0.4.0" @@ -596,7 +382,6 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", - "rayon", ] [[package]] @@ -607,9 +392,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.9" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -696,66 +481,6 @@ dependencies = [ "wait-timeout", ] -[[package]] -name = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" - -[[package]] -name = "asset-test-utils" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0324df9ce91a9840632e865dd3272bd20162023856f1b189b7ae58afa5c6b61" -dependencies = [ - "cumulus-pallet-parachain-system", - "cumulus-pallet-xcmp-queue", - "cumulus-primitives-core", - "frame-support", - "frame-system", - "pallet-assets", - "pallet-balances", - "pallet-collator-selection", - "pallet-session", - "pallet-timestamp", - "pallet-xcm", - "pallet-xcm-bridge-hub-router", - "parachains-common", - "parachains-runtimes-test-utils", - "parity-scale-codec", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-parachain-info", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "substrate-wasm-builder", -] - -[[package]] -name = "assets-common" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93438e31a4449fbeab87210931edc8cd156292354f1fc15f17d819ecded6bf25" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "impl-trait-for-tuples", - "log", - "pallet-asset-conversion", - "pallet-assets", - "pallet-xcm", - "parachains-common", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "substrate-wasm-builder", -] - [[package]] name = "async-channel" version = "2.3.1" @@ -794,9 +519,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -835,9 +560,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" dependencies = [ "async-channel", "async-io", @@ -850,6 +575,7 @@ dependencies = [ "futures-lite", "rustix 0.38.42", "tracing", + "windows-sys 0.59.0", ] [[package]] @@ -872,9 +598,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", @@ -883,9 +609,9 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", @@ -900,9 +626,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", @@ -934,9 +660,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -951,7 +677,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "itoa", "matchit", @@ -964,7 +690,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "tokio", "tower 0.5.2", "tower-layer", @@ -987,7 +713,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -1065,11 +791,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.2", + "addr2line 0.24.1", "cfg-if", "libc", "miniz_oxide", - "object 0.36.5", + "object 0.36.4", "rustc-demangle", "windows-targets 0.52.6", ] @@ -1135,16 +861,6 @@ dependencies = [ "log", ] -[[package]] -name = "binary-merkle-tree" -version = "15.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" -dependencies = [ - "hash-db", - "log", -] - [[package]] name = "bincode" version = "1.3.3" @@ -1156,30 +872,15 @@ dependencies = [ [[package]] name = "bip39" -version = "2.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ - "bitcoin_hashes 0.13.0", + "bitcoin_hashes 0.11.0", "serde", "unicode-normalization", ] -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -1187,10 +888,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" [[package]] -name = "bitcoin-io" -version = "0.1.3" +name = "bitcoin_hashes" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" [[package]] name = "bitcoin_hashes" @@ -1199,17 +900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative 0.1.2", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" -dependencies = [ - "bitcoin-io", - "hex-conservative 0.2.1", + "hex-conservative", ] [[package]] @@ -1232,7 +923,6 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", - "serde", "tap", "wyz", ] @@ -1300,9 +990,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.18.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" +checksum = "0aed08d3adb6ebe0eff737115056652670ae290f177759aac19c30456135f94c" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -1312,10 +1002,10 @@ dependencies = [ "hex", "http 1.2.0", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-named-pipe", "hyper-util", - "hyperlocal", + "hyperlocal-next", "log", "pin-project-lite", "serde", @@ -1333,9 +1023,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.47.1-rc.27.3.1" +version = "1.44.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" +checksum = "709d9aa1c37abb89d40f19f5d0ad6f0d88cb1581264e571c9350fc5bb89cf1c5" dependencies = [ "serde", "serde_repr", @@ -1344,9 +1034,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ "borsh-derive", "cfg_aliases", @@ -1354,9 +1044,9 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", @@ -1367,289 +1057,14 @@ dependencies = [ [[package]] name = "bounded-collections" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" -dependencies = [ - "log", - "parity-scale-codec", - "scale-info", - "serde", -] - -[[package]] -name = "bp-header-chain" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "890df97cea17ee61ff982466bb9e90cb6b1462adb45380999019388d05e4b92d" -dependencies = [ - "bp-runtime", - "finality-grandpa", - "frame-support", - "parity-scale-codec", - "scale-info", - "serde", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-messages" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efabf94339950b914ba87249497f1a0e35a73849934d164fecae4b275928cf6" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "frame-support", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", -] - -[[package]] -name = "bp-parachains" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9011e5c12c15caf3c4129a98f4f4916ea9165db8daf6ed85867c3106075f40df" -dependencies = [ - "bp-header-chain", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-polkadot" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa6277dd4333917ecfbcc35e9332a9f11682e0a506e76b617c336224660fce33" -dependencies = [ - "bp-header-chain", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "sp-api", - "sp-std", -] - -[[package]] -name = "bp-polkadot-core" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345cf472bac11ef79d403e4846a666b7d22a13cd16d9c85b62cd6b5e16c4a042" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "parity-scale-codec", - "parity-util-mem", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-relayers" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9465ad727e466d67d64244a1aa7bb19933a297913fdde34b8e9bda0a341bdeb" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-runtime", - "frame-support", - "frame-system", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-runtime" -version = "0.18.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "746d9464f912b278f8a5e2400f10541f95da7fc6c7d688a2788b9a46296146ee" +checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" dependencies = [ - "frame-support", - "frame-system", - "hash-db", - "impl-trait-for-tuples", "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-state-machine 0.43.0", - "sp-std", - "sp-trie 37.0.0", - "trie-db 0.29.1", -] - -[[package]] -name = "bp-test-utils" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e659078b54c0b6bd79896738212a305842ad37168976363233516754337826" -dependencies = [ - "bp-header-chain", - "bp-parachains", - "bp-polkadot-core", - "bp-runtime", - "ed25519-dalek", - "finality-grandpa", - "parity-scale-codec", - "sp-application-crypto 38.0.0", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "sp-trie 37.0.0", -] - -[[package]] -name = "bp-xcm-bridge-hub" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6909117ca87cb93703742939d5f0c4c93e9646d9cda22262e9709d68c929999b" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", "parity-scale-codec", "scale-info", "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bp-xcm-bridge-hub-router" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9284820ca704f5c065563cad77d2e3d069a23cc9cb3a29db9c0de8dd3b173a87" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bridge-hub-common" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b53c53d627e2da38f8910807944bf3121e154b5c0ac9e122995af9dfb13ed" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "pallet-message-queue", - "parity-scale-codec", - "scale-info", - "snowbridge-core", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bridge-hub-test-utils" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0b3aa5fd8481a06ca16e47fd3d2d9c6abe76b27d922ec8980a853f242173b3" -dependencies = [ - "asset-test-utils", - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-test-utils", - "bp-xcm-bridge-hub", - "bridge-runtime-common", - "cumulus-pallet-parachain-system", - "cumulus-pallet-xcmp-queue", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-balances", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-timestamp", - "pallet-utility", - "pallet-xcm", - "pallet-xcm-bridge-hub", - "parachains-common", - "parachains-runtimes-test-utils", - "parity-scale-codec", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-keyring", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", -] - -[[package]] -name = "bridge-runtime-common" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c639aa22de6e904156a3e8b0e6b9e6af790cb27a1299688cc07997e1ffe5b648" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-xcm-bridge-hub", - "frame-support", - "frame-system", - "log", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-transaction-payment", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "sp-trie 37.0.0", - "staging-xcm 14.2.0", - "tuplex", ] [[package]] @@ -1672,24 +1087,15 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.7", "serde", ] -[[package]] -name = "build-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" -dependencies = [ - "semver 0.6.0", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -1724,12 +1130,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "bytemuck" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" - [[package]] name = "byteorder" version = "1.5.0" @@ -1762,13 +1162,13 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.15.4" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver", "serde", "serde_json", "thiserror 1.0.69", @@ -1790,9 +1190,9 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.20.5" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" +checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965" dependencies = [ "serde", "toml 0.8.19", @@ -1815,15 +1215,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -1868,7 +1259,6 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", - "zeroize", ] [[package]] @@ -1895,9 +1285,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1913,9 +1303,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cliclack" -version = "0.3.5" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" +checksum = "0c827ccada848b64fba073b64518a7416d605ad70c594b5450b5ed1d97e3b5d4" dependencies = [ "console", "indicatif", @@ -1932,14 +1322,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -1985,7 +1375,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width 0.1.14", + "unicode-width", "windows-sys 0.52.0", ] @@ -2008,26 +1398,6 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "const-random" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" -dependencies = [ - "const-random-macro", -] - -[[package]] -name = "const-random-macro" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" -dependencies = [ - "getrandom", - "once_cell", - "tiny-keccak", -] - [[package]] name = "const_env" version = "0.1.2" @@ -2074,7 +1444,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata 0.19.1", + "cargo_metadata", "clap", "colored", "contract-metadata", @@ -2082,11 +1452,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde 0.5.0", + "impl-serde", "parity-scale-codec", "regex", - "rustc_version 0.4.1", - "semver 1.0.23", + "rustc_version", + "semver", "serde", "serde_json", "strum 0.26.3", @@ -2101,7 +1471,7 @@ dependencies = [ "walkdir", "wasm-encoder", "wasm-opt", - "wasmparser 0.220.0", + "wasmparser 0.207.0", "which", "zip", ] @@ -2122,7 +1492,7 @@ dependencies = [ "hex", "ink_env", "ink_metadata", - "itertools 0.13.0", + "itertools 0.12.1", "pallet-contracts-uapi-next", "parity-scale-codec", "rust_decimal", @@ -2144,8 +1514,8 @@ version = "5.0.1" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", - "impl-serde 0.5.0", - "semver 1.0.23", + "impl-serde", + "semver", "serde", "serde_json", "url", @@ -2165,11 +1535,11 @@ dependencies = [ "indexmap 2.7.0", "ink_env", "ink_metadata", - "itertools 0.13.0", + "itertools 0.12.1", "nom", "nom-supreme", "parity-scale-codec", - "primitive-types 0.13.1", + "primitive-types", "scale-info", "serde", "serde_json", @@ -2213,144 +1583,36 @@ dependencies = [ name = "cpp_demangle" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "cpufeatures" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" -dependencies = [ - "libc", -] - -[[package]] -name = "cranelift-bforest" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" -dependencies = [ - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" -dependencies = [ - "bumpalo", - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "cranelift-isle", - "gimli 0.27.3", - "hashbrown 0.13.2", - "log", - "regalloc2 0.6.1", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-codegen-meta" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" -dependencies = [ - "cranelift-codegen-shared", -] - -[[package]] -name = "cranelift-codegen-shared" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" - -[[package]] -name = "cranelift-entity" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" -dependencies = [ - "serde", -] - -[[package]] -name = "cranelift-frontend" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-isle" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" - -[[package]] -name = "cranelift-native" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" -dependencies = [ - "cranelift-codegen", - "libc", - "target-lexicon", -] - -[[package]] -name = "cranelift-wasm" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "itertools 0.10.5", - "log", - "smallvec", - "wasmparser 0.102.0", - "wasmtime-types", +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +dependencies = [ + "cfg-if", ] [[package]] -name = "crc32fast" -version = "1.4.2" +name = "cpufeatures" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ - "cfg-if", + "libc", ] [[package]] -name = "crossbeam-deque" -version = "0.8.5" +name = "cranelift-entity" +version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "serde", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "crc32fast" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "crossbeam-utils", + "cfg-if", ] [[package]] @@ -2370,13 +1632,14 @@ checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" -version = "0.28.1" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "mio", + "libc", + "mio 0.8.11", "parking_lot", "rustix 0.38.42", "signal-hook", @@ -2770,7 +2033,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version 0.4.1", + "rustc_version", "subtle", "zeroize", ] @@ -2796,7 +2059,6 @@ dependencies = [ "cxxbridge-cmd", "cxxbridge-flags", "cxxbridge-macro", - "foldhash", "link-cplusplus", ] @@ -2808,6 +2070,7 @@ checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" dependencies = [ "cc", "codespan-reporting", + "once_cell", "proc-macro2", "quote", "scratch", @@ -2996,9 +2259,9 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", @@ -3078,16 +2341,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs" version = "5.0.1" @@ -3109,17 +2362,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[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", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -3139,18 +2381,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.9" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" +checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.9" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" +checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" dependencies = [ "common-path", "derive-syn-parse", @@ -3182,12 +2424,6 @@ dependencies = [ "shared_child", ] -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - [[package]] name = "dyn-clonable" version = "0.9.0" @@ -3318,9 +2554,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.35" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -3366,19 +2602,6 @@ dependencies = [ "regex", ] -[[package]] -name = "env_logger" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - [[package]] name = "env_logger" version = "0.11.5" @@ -3420,47 +2643,6 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" -[[package]] -name = "ethabi-decode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" -dependencies = [ - "ethereum-types", - "tiny-keccak", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "primitive-types 0.12.2", - "scale-info", - "uint 0.9.5", -] - [[package]] name = "event-listener" version = "5.3.1" @@ -3503,12 +2685,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - [[package]] name = "fastrand" version = "2.3.0" @@ -3552,16 +2728,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "file-per-thread-logger" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" -dependencies = [ - "env_logger 0.10.2", - "log", -] - [[package]] name = "filetime" version = "0.2.25" @@ -3604,9 +2770,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "miniz_oxide", @@ -3627,12 +2793,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - [[package]] name = "foreign-types" version = "0.3.2" @@ -3961,9 +3121,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -3976,9 +3136,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -3986,15 +3146,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -4004,15 +3164,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" -version = "2.5.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ "fastrand", "futures-core", @@ -4023,9 +3183,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", @@ -4034,15 +3194,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -4052,9 +3212,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -4068,15 +3228,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -4109,42 +3260,22 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "ghash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" -dependencies = [ - "opaque-debug", - "polyval", -] - [[package]] name = "gimli" version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator 0.2.0", + "fallible-iterator", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" -dependencies = [ - "fallible-iterator 0.3.0", - "stable_deref_trait", -] - -[[package]] -name = "gimli" -version = "0.31.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "git2" @@ -4219,9 +3350,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -4280,17 +3411,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - [[package]] name = "heck" version = "0.4.1" @@ -4327,21 +3447,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" -[[package]] -name = "hex-conservative" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" -dependencies = [ - "arrayvec 0.7.6", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hkdf" version = "0.12.4" @@ -4462,7 +3567,7 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" name = "httparse" version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -4487,9 +3592,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -4511,9 +3616,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -4537,7 +3642,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -4553,7 +3658,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.30", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -4571,7 +3676,7 @@ dependencies = [ "http 1.2.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.13", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -4584,7 +3689,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.31", + "hyper 0.14.30", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -4597,7 +3702,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.31", + "hyper 0.14.30", "native-tls", "tokio", "tokio-native-tls", @@ -4611,7 +3716,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "native-tls", "tokio", @@ -4621,16 +3726,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.4.1", "pin-project-lite", "socket2", "tokio", @@ -4639,14 +3744,14 @@ dependencies = [ ] [[package]] -name = "hyperlocal" -version = "0.9.1" +name = "hyperlocal-next" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" +checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" dependencies = [ "hex", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -4655,9 +3760,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4802,23 +3907,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "icu_normalizer", - "icu_properties", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -4830,24 +3924,6 @@ dependencies = [ "parity-scale-codec", ] -[[package]] -name = "impl-codec" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67aa010c1e3da95bf151bd8b4c059b2ed7e75387cdb969b4f8f2723a43f9941" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - [[package]] name = "impl-serde" version = "0.4.0" @@ -4857,18 +3933,9 @@ dependencies = [ "serde", ] -[[package]] -name = "impl-serde" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" -dependencies = [ - "serde", -] - [[package]] name = "impl-trait-for-tuples" -version = "0.2.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ @@ -4894,6 +3961,7 @@ checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", + "syn 1.0.109", ] [[package]] @@ -4920,7 +3988,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.14.5", "serde", ] @@ -4932,15 +4000,15 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", + "instant", "number_prefix", "portable-atomic", - "unicode-width 0.2.0", - "web-time", + "unicode-width", ] [[package]] @@ -4959,11 +4027,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273f2aa983d04a6476d3c5ac76ddbef07555664b88f923996e7465e261dda48" dependencies = [ "blake2", - "derive_more 1.0.0", + "derive_more", "ink_primitives", - "pallet-contracts-uapi 9.0.0", + "pallet-contracts-uapi-next", "parity-scale-codec", - "secp256k1 0.28.2", + "secp256k1", "sha2 0.10.8", "sha3", ] @@ -4977,25 +4045,24 @@ dependencies = [ "blake2", "cfg-if", "const_env", - "derive_more 1.0.0", + "derive_more", "ink_allocator", "ink_engine", "ink_prelude", "ink_primitives", "ink_storage_traits", "num-traits", - "pallet-contracts-uapi 9.0.0", + "pallet-contracts-uapi-next", "parity-scale-codec", "paste", "rlibc", - "scale-decode 0.11.1", - "scale-encode 0.6.0", + "scale-decode 0.10.0", + "scale-encode 0.5.0", "scale-info", "schnorrkel", - "secp256k1 0.28.2", + "secp256k1", "sha2 0.10.8", "sha3", - "staging-xcm 11.0.0", "static_assertions", ] @@ -5005,8 +4072,8 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27135c651274087ba0578d2c07866c31d8dd481ae8de5bb7295fe3931491aa80" dependencies = [ - "derive_more 1.0.0", - "impl-serde 0.4.0", + "derive_more", + "impl-serde", "ink_prelude", "ink_primitives", "linkme", @@ -5031,11 +4098,11 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a530c1b352a53176ea718f3a65f15003e54e0474ec12353ea0e0e5bb60b25741" dependencies = [ - "derive_more 1.0.0", + "derive_more", "ink_prelude", "parity-scale-codec", - "scale-decode 0.11.1", - "scale-encode 0.6.0", + "scale-decode 0.10.0", + "scale-encode 0.5.0", "scale-info", "xxhash-rust", ] @@ -5093,20 +4160,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" - -[[package]] -name = "is-terminal" -version = "0.4.13" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi 0.4.0", - "libc", - "windows-sys 0.52.0", -] +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is_terminal_polyfill" @@ -5143,9 +4199,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni" @@ -5157,7 +4213,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror 1.0.69", + "thiserror", "walkdir", ] @@ -5200,7 +4256,7 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5213,7 +4269,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5298,9 +4354,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.4" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", @@ -5333,16 +4389,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "keccak-hash" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" -dependencies = [ - "primitive-types 0.13.1", - "tiny-keccak", -] - [[package]] name = "kube" version = "0.87.2" @@ -5369,7 +4415,7 @@ dependencies = [ "home", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.30", "hyper-rustls 0.24.2", "hyper-timeout", "jsonpath-rust", @@ -5380,11 +4426,11 @@ dependencies = [ "rand", "rustls 0.21.12", "rustls-pemfile 1.0.4", - "secrecy 0.8.0", + "secrecy", "serde", "serde_json", "serde_yaml", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-tungstenite", "tokio-util", @@ -5407,7 +4453,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5430,7 +4476,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-util", "tracing", @@ -5470,9 +4516,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.11" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libp2p" @@ -5494,7 +4540,7 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5544,16 +4590,16 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror 1.0.69", - "unsigned-varint 0.7.2", + "thiserror", + "unsigned-varint", "void", ] [[package]] name = "libp2p-identity" -version = "0.2.10" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" +checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" dependencies = [ "bs58", "ed25519-dalek", @@ -5562,7 +4608,7 @@ dependencies = [ "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror 1.0.69", + "thiserror", "tracing", "zeroize", ] @@ -5684,18 +4730,18 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.31" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566336154b9e58a4f055f6dd4cbab62c7dc0826ce3c0a04e63b2d2ecd784cdae" +checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.31" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9" +checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" dependencies = [ "proc-macro2", "quote", @@ -5723,12 +4769,6 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - [[package]] name = "lock_api" version = "0.4.12" @@ -5747,20 +4787,11 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lru" -version = "0.12.5" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.14.5", ] [[package]] @@ -5937,16 +4968,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "log", "wasi", "windows-sys 0.52.0", ] [[package]] name = "mockito" -version = "1.6.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" +checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" dependencies = [ "assert-json-diff", "bytes", @@ -5955,7 +4985,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "log", "rand", @@ -5966,17 +4996,11 @@ dependencies = [ "tokio", ] -[[package]] -name = "multi-stash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" - [[package]] name = "multiaddr" -version = "0.18.2" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" dependencies = [ "arrayref", "byteorder", @@ -5987,7 +5011,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint 0.8.0", + "unsigned-varint", "url", ] @@ -6009,7 +5033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint 0.8.0", + "unsigned-varint", ] [[package]] @@ -6023,22 +5047,7 @@ dependencies = [ "log", "pin-project", "smallvec", - "unsigned-varint 0.7.2", -] - -[[package]] -name = "nalgebra" -version = "0.33.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" -dependencies = [ - "approx", - "matrixmultiply", - "num-complex", - "num-rational", - "num-traits", - "simba", - "typenum", + "unsigned-varint", ] [[package]] @@ -6110,16 +5119,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -6130,15 +5129,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -6193,7 +5183,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -6226,27 +5215,18 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -6256,9 +5236,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -6288,18 +5268,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.4.1+3.4.0" +version = "300.3.2+3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -8388,12 +7368,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "parity-bytes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" - [[package]] name = "parity-scale-codec" version = "3.6.12" @@ -8404,7 +7378,7 @@ checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" name = "parity-scale-codec" version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be4817d39f3272f69c59fe05d0535ae6456c2dc2fa1ba02910296c7e0a5c590" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec 0.7.6", "bitvec", @@ -8412,57 +7386,21 @@ dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", - "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.7.0" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.89", -] - -[[package]] -name = "parity-util-mem" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" -dependencies = [ - "cfg-if", - "ethereum-types", - "hashbrown 0.12.3", - "impl-trait-for-tuples", - "lru 0.8.1", - "parity-util-mem-derive", - "parking_lot", - "primitive-types 0.12.2", - "smallvec", - "winapi", -] - -[[package]] -name = "parity-util-mem-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" -dependencies = [ - "proc-macro2", "syn 1.0.109", - "synstructure 0.12.6", ] -[[package]] -name = "parity-wasm" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" - [[package]] name = "parking" version = "2.2.1" @@ -8516,7 +7454,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", - "hmac 0.12.1", "password-hash", ] @@ -8583,18 +7520,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", @@ -8603,9 +7540,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -8636,7 +7573,7 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" @@ -9171,19 +8108,6 @@ name = "polkavm-common" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" -dependencies = [ - "log", -] - -[[package]] -name = "polkavm-common" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" -dependencies = [ - "log", - "polkavm-assembler 0.10.0", -] [[package]] name = "polkavm-derive" @@ -9213,15 +8137,6 @@ dependencies = [ "polkavm-derive-impl-macro 0.9.0", ] -[[package]] -name = "polkavm-derive" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" -dependencies = [ - "polkavm-derive-impl-macro 0.10.0", -] - [[package]] name = "polkavm-derive-impl" version = "0.5.0" @@ -9344,9 +8259,9 @@ checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" [[package]] name = "polling" -version = "3.7.4" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", @@ -9368,18 +8283,6 @@ dependencies = [ "universal-hash", ] -[[package]] -name = "polyval" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", -] - [[package]] name = "pop-cli" version = "0.5.0" @@ -9392,7 +8295,7 @@ dependencies = [ "console", "dirs", "duct", - "env_logger 0.11.5", + "env_logger", "git2", "os_info", "pop-common", @@ -9440,7 +8343,7 @@ dependencies = [ "subxt-signer", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", "toml 0.5.11", "toml_edit 0.22.22", @@ -9468,11 +8371,11 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-test", "url", @@ -9502,10 +8405,10 @@ dependencies = [ "symlink", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-test", - "toml_edit 0.22.22", + "toml_edit 0.22.20", "url", "walkdir", "zombienet-sdk", @@ -9516,14 +8419,14 @@ name = "pop-telemetry" version = "0.5.0" dependencies = [ "dirs", - "env_logger 0.11.5", + "env_logger", "log", "mockito", - "reqwest 0.12.9", + "reqwest 0.12.7", "serde", "serde_json", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -9540,9 +8443,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -9591,9 +8494,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", "syn 2.0.90", @@ -9606,24 +8509,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "scale-info", - "uint 0.9.5", -] - -[[package]] -name = "primitive-types" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" -dependencies = [ - "fixed-hash", - "impl-codec 0.7.0", - "impl-serde 0.5.0", + "impl-codec", + "impl-serde", "scale-info", - "uint 0.10.0", + "uint", ] [[package]] @@ -9642,7 +8531,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.22", + "toml_edit 0.22.20", ] [[package]] @@ -9704,38 +8593,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax 0.8.5", - "rusty-fork", - "tempfile", - "unarray", -] - [[package]] name = "psm" -version = "0.1.24" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] @@ -9760,12 +8629,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quick-protobuf" version = "0.8.1" @@ -9863,9 +8726,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] @@ -9878,7 +8741,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -9928,14 +8791,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -9949,13 +8812,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax 0.8.4", ] [[package]] @@ -9966,9 +8829,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rend" @@ -9993,7 +8856,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.30", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -10021,9 +8884,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", @@ -10034,7 +8897,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-rustls 0.27.3", "hyper-tls 0.6.0", "hyper-util", @@ -10046,11 +8909,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.2.0", + "rustls-pemfile 2.1.3", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "system-configuration 0.6.1", "tokio", "tokio-native-tls", @@ -10219,31 +9082,13 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver", ] [[package]] @@ -10289,7 +9134,7 @@ dependencies = [ name = "rustls" version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "log", "once_cell", @@ -10319,7 +9164,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.2.0", + "rustls-pemfile 2.1.3", "rustls-pki-types", "schannel", "security-framework", @@ -10336,18 +9181,19 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.2.0" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-platform-verifier" @@ -10360,7 +9206,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.19", + "rustls 0.23.13", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -10378,205 +9224,75 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", -] - -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", -] - -[[package]] -name = "rw-stream-sink" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" -dependencies = [ - "futures", - "pin-project", - "static_assertions", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "safe-mix" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" -dependencies = [ - "rustc_version 0.2.3", -] - -[[package]] -name = "safe_arch" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "salsa20" -version = "0.10.2" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "cipher", + "ring", + "untrusted", ] [[package]] -name = "same-file" -version = "1.0.6" +name = "rustls-webpki" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "winapi-util", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] -name = "sc-allocator" -version = "29.0.0" +name = "rustversion" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b975ee3a95eaacb611e7b415737a7fa2db4d8ad7b880cc1b97371b04e95c7903" -dependencies = [ - "log", - "sp-core 34.0.0", - "sp-wasm-interface 21.0.1", - "thiserror 1.0.69", -] +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] -name = "sc-executor" -version = "0.40.1" +name = "ruzstd" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0cc0a3728fd033589183460c5a49b2e7545d09dc89a098216ef9e9aadcd9dc" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" dependencies = [ - "parity-scale-codec", - "parking_lot", - "sc-executor-common", - "sc-executor-polkavm", - "sc-executor-wasmtime", - "schnellru", - "sp-api", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "sp-io 38.0.0", - "sp-panic-handler", - "sp-runtime-interface 28.0.0", - "sp-trie 37.0.0", - "sp-version", - "sp-wasm-interface 21.0.1", - "tracing", + "byteorder", + "derive_more 0.99.18", ] [[package]] -name = "sc-executor-common" -version = "0.35.0" +name = "rw-stream-sink" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3b703a33dcb7cddf19176fdf12294b9a6408125836b0f4afee3e6969e7f190" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" dependencies = [ - "polkavm 0.9.3", - "sc-allocator", - "sp-maybe-compressed-blob", - "sp-wasm-interface 21.0.1", - "thiserror 1.0.69", - "wasm-instrument", + "futures", + "pin-project", + "static_assertions", ] [[package]] -name = "sc-executor-polkavm" -version = "0.32.0" +name = "ryu" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fe58d9cacfab73e5595fa84b80f7bd03efebe54a0574daaeb221a1d1f7ab80" -dependencies = [ - "log", - "polkavm 0.9.3", - "sc-executor-common", - "sp-wasm-interface 21.0.1", -] +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] -name = "sc-executor-wasmtime" -version = "0.35.0" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd498f2f77ec1f861c30804f5bfd796d4afcc8ce44ea1f11bfbe2847551d161" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "anyhow", - "cfg-if", - "libc", - "log", - "parking_lot", - "rustix 0.36.17", - "sc-allocator", - "sc-executor-common", - "sp-runtime-interface 28.0.0", - "sp-wasm-interface 21.0.1", - "wasmtime", + "winapi-util", ] [[package]] name = "scale-bits" -version = "0.5.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" +checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" dependencies = [ "parity-scale-codec", - "scale-type-resolver 0.1.1", + "scale-info", ] [[package]] @@ -10587,21 +9303,21 @@ checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" dependencies = [ "parity-scale-codec", "scale-info", - "scale-type-resolver 0.2.0", + "scale-type-resolver", "serde", ] [[package]] name = "scale-decode" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" +checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" dependencies = [ - "derive_more 0.99.18", + "derive_more", "parity-scale-codec", - "scale-bits 0.5.0", - "scale-decode-derive 0.11.1", - "scale-type-resolver 0.1.1", + "scale-bits 0.4.0", + "scale-decode-derive 0.10.0", + "scale-info", "smallvec", ] @@ -10622,11 +9338,12 @@ dependencies = [ [[package]] name = "scale-decode-derive" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" +checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" dependencies = [ "darling 0.14.4", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -10646,14 +9363,14 @@ dependencies = [ [[package]] name = "scale-encode" -version = "0.6.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" +checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" dependencies = [ - "derive_more 0.99.18", + "derive_more", "parity-scale-codec", - "scale-encode-derive 0.6.0", - "scale-type-resolver 0.1.1", + "scale-encode-derive 0.5.0", + "scale-info", "smallvec", ] @@ -10674,9 +9391,9 @@ dependencies = [ [[package]] name = "scale-encode-derive" -version = "0.6.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" +checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" dependencies = [ "darling 0.14.4", "proc-macro-crate 1.3.1", @@ -10700,13 +9417,13 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.6" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" dependencies = [ "bitvec", "cfg-if", - "derive_more 1.0.0", + "derive_more", "parity-scale-codec", "scale-info-derive", "schemars", @@ -10715,9 +9432,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.6" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -10779,9 +9496,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ "windows-sys 0.59.0", ] @@ -10852,18 +9569,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" -[[package]] -name = "scrypt" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" -dependencies = [ - "password-hash", - "pbkdf2", - "salsa20", - "sha2 0.10.8", -] - [[package]] name = "sct" version = "0.7.1" @@ -10901,18 +9606,7 @@ version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "secp256k1-sys 0.9.2", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes 0.14.0", - "rand", - "secp256k1-sys 0.10.1", + "secp256k1-sys", ] [[package]] @@ -10924,15 +9618,6 @@ dependencies = [ "cc", ] -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - [[package]] name = "secrecy" version = "0.8.0" @@ -10943,15 +9628,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secrecy" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" -dependencies = [ - "zeroize", -] - [[package]] name = "security-framework" version = "2.11.1" @@ -10968,41 +9644,14 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", ] -[[package]] -name = "semver" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.3", -] - [[package]] name = "semver" version = "1.0.23" @@ -11012,21 +9661,6 @@ dependencies = [ "serde", ] -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - [[package]] name = "serde" version = "1.0.216" @@ -11036,15 +9670,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-big-array" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" -dependencies = [ - "serde", -] - [[package]] name = "serde-value" version = "0.7.0" @@ -11088,9 +9713,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "indexmap 2.7.0", "itoa", @@ -11122,9 +9747,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -11143,9 +9768,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64 0.22.1", "chrono", @@ -11274,7 +9899,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.11", "signal-hook", ] @@ -11297,24 +9922,11 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "simba" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" -dependencies = [ - "approx", - "num-complex", - "num-traits", - "paste", - "wide", -] - [[package]] name = "simdutf8" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "similar" @@ -11343,24 +9955,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slice-group-by" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" - -[[package]] -name = "slot-range-helper" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e34f1146a457a5c554dedeae6c7273aa54c3b031f3e9eb0abd037b5511e2ce9" -dependencies = [ - "enumn", - "parity-scale-codec", - "paste", - "sp-runtime 39.0.2", -] - [[package]] name = "smallvec" version = "1.13.2" @@ -11405,7 +9999,7 @@ dependencies = [ "bs58", "chacha20", "crossbeam-queue", - "derive_more 0.99.18", + "derive_more", "ed25519-zebra 4.0.3", "either", "event-listener", @@ -11428,7 +10022,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd 0.5.0", + "ruzstd", "schnorrkel", "serde", "serde_json", @@ -11439,61 +10033,7 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi 0.31.2", - "x25519-dalek", - "zeroize", -] - -[[package]] -name = "smoldot" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" -dependencies = [ - "arrayvec 0.7.6", - "async-lock", - "atomic-take", - "base64 0.22.1", - "bip39", - "blake2-rfc", - "bs58", - "chacha20", - "crossbeam-queue", - "derive_more 0.99.18", - "ed25519-zebra 4.0.3", - "either", - "event-listener 5.3.1", - "fnv", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "hmac 0.12.1", - "itertools 0.13.0", - "libm", - "libsecp256k1", - "merlin", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", - "pin-project", - "poly1305", - "rand", - "rand_chacha", - "ruzstd 0.6.0", - "schnorrkel", - "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "siphasher", - "slab", - "smallvec", - "soketto 0.8.0", - "twox-hash", - "wasmi 0.32.3", + "wasmi", "x25519-dalek", "zeroize", ] @@ -11923,29 +10463,16 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505fad69251900048ddddc6387265e1545d1a366e3b4dcd57b76a03f0a65ae7" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 32.0.0", - "sp-io 34.0.0", - "sp-std", -] - -[[package]] -name = "sp-application-crypto" -version = "38.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" +checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", + "sp-core", + "sp-io", + "sp-std", ] [[package]] @@ -12104,54 +10631,7 @@ dependencies = [ "futures", "hash-db", "hash256-std-hasher", - "impl-serde 0.4.0", - "itertools 0.10.5", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types 0.12.2", - "rand", - "scale-info", - "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.27.0", - "sp-runtime-interface 26.0.0", - "sp-std", - "sp-storage 20.0.0", - "ss58-registry", - "substrate-bip39 0.5.0", - "thiserror 1.0.69", - "tracing", - "w3f-bls", - "zeroize", -] - -[[package]] -name = "sp-core" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2dac7e47c7ddbb61efe196d5cce99f6ea88926c961fa39909bfeae46fc5a7b" -dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra 3.1.0", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde 0.4.0", + "impl-serde", "itertools 0.10.5", "k256", "libsecp256k1", @@ -12161,104 +10641,27 @@ dependencies = [ "parity-scale-codec", "parking_lot", "paste", - "primitive-types 0.12.2", - "rand", - "scale-info", - "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.28.0", - "sp-runtime-interface 27.0.0", - "sp-std", - "sp-storage 21.0.0", - "ss58-registry", - "substrate-bip39 0.6.0", - "thiserror 1.0.69", - "tracing", - "w3f-bls", - "zeroize", -] - -[[package]] -name = "sp-core" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" -dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra 4.0.3", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde 0.4.0", - "itertools 0.11.0", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types 0.12.2", + "primitive-types", "rand", "scale-info", "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", + "secp256k1", + "secrecy", "serde", "sp-crypto-hashing", "sp-debug-derive", - "sp-externalities 0.29.0", - "sp-runtime-interface 28.0.0", + "sp-externalities", + "sp-runtime-interface", "sp-std", - "sp-storage 21.0.0", + "sp-storage", "ss58-registry", - "substrate-bip39 0.6.0", - "thiserror 1.0.69", + "substrate-bip39", + "thiserror", "tracing", "w3f-bls", "zeroize", ] -[[package]] -name = "sp-core-hashing" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f812cb2dff962eb378c507612a50f1c59f52d92eb97b710f35be3c2346a3cd7" -dependencies = [ - "sp-crypto-hashing", -] - -[[package]] -name = "sp-crypto-ec-utils" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acb24f8a607a48a87f0ee4c090fc5d577eee49ff39ced6a3c491e06eca03c37" -dependencies = [ - "ark-bls12-377", - "ark-bls12-377-ext", - "ark-bls12-381", - "ark-bls12-381-ext", - "ark-bw6-761", - "ark-bw6-761-ext", - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ed-on-bls12-377-ext", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ed-on-bls12-381-bandersnatch-ext", - "ark-scale", - "sp-runtime-interface 28.0.0", -] - [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -12304,63 +10707,14 @@ dependencies = [ "environmental", "parity-scale-codec", "sp-std", - "sp-storage 20.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-storage 21.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a904407d61cb94228c71b55a9d3708e9d6558991f9e83bd42bd91df37a159d30" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-storage 21.0.0", -] - -[[package]] -name = "sp-genesis-builder" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a646ed222fd86d5680faa4a8967980eb32f644cae6c8523e1c689a6deda3e8" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde_json", - "sp-api", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-inherents" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afffbddc380d99a90c459ba1554bbbc01d62e892de9f1485af6940b89c4c0d57" -dependencies = [ - "async-trait", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "thiserror 1.0.69", + "sp-storage", ] [[package]] name = "sp-io" -version = "34.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44ed47247b6eee76ff703f9fa9f04f99c4104ac1faf629e6d1128e09066b57b" +checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" dependencies = [ "bytes", "ed25519-dalek", @@ -12369,63 +10723,25 @@ dependencies = [ "parity-scale-codec", "polkavm-derive 0.9.1", "rustversion", - "secp256k1 0.28.2", - "sp-core 32.0.0", + "secp256k1", + "sp-core", "sp-crypto-hashing", - "sp-externalities 0.28.0", - "sp-keystore 0.38.0", - "sp-runtime-interface 27.0.0", - "sp-state-machine 0.39.0", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", "sp-std", - "sp-tracing 17.0.1", - "sp-trie 33.0.0", - "tracing", - "tracing-core", -] - -[[package]] -name = "sp-io" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" -dependencies = [ - "bytes", - "docify", - "ed25519-dalek", - "libsecp256k1", - "log", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "rustversion", - "secp256k1 0.28.2", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-externalities 0.29.0", - "sp-keystore 0.40.0", - "sp-runtime-interface 28.0.0", - "sp-state-machine 0.43.0", - "sp-tracing 17.0.1", - "sp-trie 37.0.0", + "sp-tracing", + "sp-trie", "tracing", "tracing-core", ] -[[package]] -name = "sp-keyring" -version = "39.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" -dependencies = [ - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "strum 0.26.3", -] - [[package]] name = "sp-keystore" -version = "0.38.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" +checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" dependencies = [ "parity-scale-codec", "parking_lot", @@ -12534,9 +10850,9 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "35.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ce931b7fbfdeeca1340801dbd4a1cae54ad4c97a1e3dcfcc79709bc800dd46" +checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" dependencies = [ "docify", "either", @@ -12554,34 +10870,7 @@ dependencies = [ "sp-core 32.0.0", "sp-io 34.0.0", "sp-std", - "sp-weights 31.0.0", -] - -[[package]] -name = "sp-runtime" -version = "39.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "num-traits", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "sp-weights 31.0.0", - "tracing", + "sp-weights", ] [[package]] @@ -12600,74 +10889,34 @@ dependencies = [ "paste", "rand", "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "sp-weights", - "tracing", -] - -[[package]] -name = "sp-runtime-interface" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.8.0", - "primitive-types 0.12.2", - "sp-externalities 0.27.0", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage 20.0.0", - "sp-tracing 16.0.0", - "sp-wasm-interface 20.0.0", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "647db5e1dc481686628b41554e832df6ab400c4b43a6a54e54d3b0a71ca404aa" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types 0.12.2", - "sp-externalities 0.28.0", - "sp-runtime-interface-proc-macro", + "serde", + "simple-mermaid", + "sp-application-crypto 38.0.0", + "sp-arithmetic", + "sp-core 34.0.0", + "sp-io 38.0.0", "sp-std", - "sp-storage 21.0.0", - "sp-tracing 17.0.1", - "sp-wasm-interface 21.0.1", - "static_assertions", + "sp-weights", + "tracing", ] [[package]] name = "sp-runtime-interface" -version = "28.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types 0.12.2", - "sp-externalities 0.29.0", + "polkavm-derive 0.8.0", + "primitive-types", + "sp-externalities", "sp-runtime-interface-proc-macro", "sp-std", - "sp-storage 21.0.0", - "sp-tracing 17.0.1", - "sp-wasm-interface 21.0.1", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", "static_assertions", ] @@ -12730,30 +10979,9 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21d9078306c3066f1824e41153e1ceec34231d39d9a7e7956b101eadf7b9fd3a" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot", - "rand", - "smallvec", - "sp-core 32.0.0", - "sp-externalities 0.28.0", - "sp-panic-handler", - "sp-trie 33.0.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.28.0", -] - -[[package]] -name = "sp-state-machine" -version = "0.43.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930104d6ae882626e8880d9b1578da9300655d337a3ffb45e130c608b6c89660" +checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" dependencies = [ "hash-db", "log", @@ -12761,38 +10989,14 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 34.0.0", - "sp-externalities 0.29.0", + "sp-core", + "sp-externalities", "sp-panic-handler", - "sp-trie 37.0.0", - "thiserror 1.0.69", + "sp-std", + "sp-trie", + "thiserror", "tracing", - "trie-db 0.29.1", -] - -[[package]] -name = "sp-statement-store" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c219bc34ef4d1f9835f3ed881f965643c32034fcc030eb33b759dadbc802c1c2" -dependencies = [ - "aes-gcm", - "curve25519-dalek 4.1.3", - "ed25519-dalek", - "hkdf", - "parity-scale-codec", - "rand", - "scale-info", - "sha2 0.10.8", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-externalities 0.29.0", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "thiserror 1.0.69", - "x25519-dalek", + "trie-db", ] [[package]] @@ -12807,7 +11011,7 @@ version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" dependencies = [ - "impl-serde 0.4.0", + "impl-serde", "parity-scale-codec", "ref-cast", "serde", @@ -12815,32 +11019,6 @@ dependencies = [ "sp-std", ] -[[package]] -name = "sp-storage" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c82989b3a4979a7e1ad848aad9f5d0b4388f1f454cc131766526601ab9e8f8" -dependencies = [ - "impl-serde 0.4.0", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive", -] - -[[package]] -name = "sp-timestamp" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a1cb4df653d62ccc0dbce1db45d1c9443ec60247ee9576962d24da4c9c6f07" -dependencies = [ - "async-trait", - "parity-scale-codec", - "sp-inherents", - "sp-runtime 39.0.2", - "thiserror 1.0.69", -] - [[package]] name = "sp-tracing" version = "16.0.0" @@ -12893,33 +11071,9 @@ dependencies = [ [[package]] name = "sp-trie" -version = "33.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f5b3620a1c87c265a83d85d7519c6b60c47acf7f77593966afe313d086f00e" -dependencies = [ - "ahash 0.8.11", - "hash-db", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot", - "rand", - "scale-info", - "schnellru", - "sp-core 32.0.0", - "sp-externalities 0.28.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.28.0", - "trie-root", -] - -[[package]] -name = "sp-trie" -version = "37.0.0" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6282aef9f4b6ecd95a67a45bcdb67a71f4a4155c09a53c10add4ffe823db18cd" +checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" dependencies = [ "ahash 0.8.11", "hash-db", @@ -12931,27 +11085,8 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.29.1", - "trie-root", -] - -[[package]] -name = "sp-version" -version = "37.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d521a405707b5be561367cd3d442ff67588993de24062ce3adefcf8437ee9fe1" -dependencies = [ - "impl-serde 0.4.0", - "parity-scale-codec", - "parity-wasm", - "scale-info", - "serde", - "sp-crypto-hashing-proc-macro", - "sp-runtime 39.0.2", + "sp-core", + "sp-externalities", "sp-std", "sp-version-proc-macro", "thiserror 1.0.69", @@ -12983,34 +11118,6 @@ dependencies = [ "wasmtime", ] -[[package]] -name = "sp-wasm-interface" -version = "21.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "wasmtime", -] - -[[package]] -name = "sp-weights" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" -dependencies = [ - "bounded-collections", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 25.0.0", - "sp-debug-derive", -] - [[package]] name = "sp-weights" version = "31.0.0" @@ -13022,7 +11129,7 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-debug-derive", ] @@ -13044,9 +11151,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.51.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" +checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" dependencies = [ "Inflector", "num-format", @@ -13057,29 +11164,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "ssz_rs" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" -dependencies = [ - "bitvec", - "num-bigint", - "sha2 0.9.9", - "ssz_rs_derive", -] - -[[package]] -name = "ssz_rs_derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -13189,17 +11273,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "string-interner" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" -dependencies = [ - "cfg-if", - "hashbrown 0.14.5", - "serde", -] - [[package]] name = "strsim" version = "0.10.0" @@ -13261,88 +11334,17 @@ checksum = "a2b564c293e6194e8b222e52436bcb99f60de72043c7f845cf6c4406db4df121" dependencies = [ "hmac 0.12.1", "pbkdf2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - -[[package]] -name = "substrate-bip39" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" -dependencies = [ - "hmac 0.12.1", - "pbkdf2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - -[[package]] -name = "substrate-wasm-builder" -version = "24.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf035ffe7335fb24053edfe4d0a5780250eda772082a1b80ae25835dd4c09265" -dependencies = [ - "build-helper", - "cargo_metadata 0.15.4", - "console", - "filetime", - "jobserver", - "parity-wasm", - "polkavm-linker 0.9.2", - "sp-maybe-compressed-blob", - "strum 0.26.3", - "tempfile", - "toml 0.8.19", - "walkdir", - "wasm-opt", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "subxt" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" -dependencies = [ - "async-trait", - "derive-where", - "either", - "frame-metadata 17.0.0", - "futures", - "hex", - "impl-serde 0.5.0", - "jsonrpsee", - "parity-scale-codec", - "polkadot-sdk", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", - "scale-value 0.16.3", - "serde", - "serde_json", - "subxt-core", - "subxt-lightclient", - "subxt-macro", - "subxt-metadata", - "thiserror 1.0.69", - "tokio", - "tokio-util", - "tracing", - "url", - "wasm-bindgen-futures", - "web-time", + "schnorrkel", + "sha2 0.10.8", + "zeroize", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "subxt" version = "0.38.0" @@ -13356,7 +11358,7 @@ dependencies = [ "futures", "hex", "impl-serde 0.5.0", - "jsonrpsee 0.24.7", + "jsonrpsee", "parity-scale-codec", "polkadot-sdk", "primitive-types 0.13.1", @@ -13364,13 +11366,13 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.17.0", + "scale-value", "serde", "serde_json", - "subxt-core 0.38.0", - "subxt-lightclient 0.38.0", - "subxt-macro 0.38.0", - "subxt-metadata 0.38.0", + "subxt-core", + "subxt-lightclient", + "subxt-macro", + "subxt-metadata", "thiserror 1.0.69", "tokio", "tokio-util", @@ -13554,12 +11556,12 @@ dependencies = [ ] [[package]] -name = "syn-solidity" -version = "0.4.2" +name = "syn_derive" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" dependencies = [ - "paste", + "proc-macro-error", "proc-macro2", "quote", "syn 2.0.90", @@ -13573,9 +11575,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" dependencies = [ "futures-core", ] @@ -13653,9 +11655,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.43" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -13670,9 +11672,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", @@ -13706,22 +11708,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" -[[package]] -name = "testnet-parachains-constants" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bceae6f7c89d47daff6c7e05f712551a01379f61b07d494661941144878589" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "polkadot-core-primitives", - "rococo-runtime-constants", - "smallvec", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "westend-runtime-constants", -] - [[package]] name = "textwrap" version = "0.16.1" @@ -13730,14 +11716,14 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] name = "thiserror" -version = "1.0.69" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl 1.0.69", ] @@ -13753,9 +11739,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.69" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -13814,25 +11800,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" version = "1.8.0" @@ -13857,7 +11824,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio", + "mio 1.0.2", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -13968,15 +11935,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -13998,7 +11956,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.22", + "toml_edit 0.22.20", ] [[package]] @@ -14025,15 +11983,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.20", + "winnow 0.6.18", ] [[package]] @@ -14129,9 +12087,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", @@ -14141,9 +12099,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", @@ -14152,9 +12110,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -14171,17 +12129,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-serde" version = "0.1.3" @@ -14201,7 +12148,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers 0.0.1", + "matchers", "regex", "serde", "serde_json", @@ -14210,7 +12157,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.1.4", + "tracing-log", "tracing-serde", ] @@ -14246,18 +12193,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "trie-db" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" -dependencies = [ - "hash-db", - "log", - "rustc-hex", - "smallvec", -] - [[package]] name = "trie-root" version = "0.18.0" @@ -14273,12 +12208,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tt-call" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" - [[package]] name = "tungstenite" version = "0.20.1" @@ -14293,17 +12222,11 @@ dependencies = [ "log", "rand", "sha1", - "thiserror 1.0.69", + "thiserror", "url", "utf-8", ] -[[package]] -name = "tuplex" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" - [[package]] name = "twox-hash" version = "1.6.3" @@ -14324,9 +12247,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -14341,34 +12264,25 @@ dependencies = [ ] [[package]] -name = "uint" -version = "0.10.0" +name = "unicase" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", + "version_check", ] [[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicase" -version = "2.8.0" +name = "unicode-bidi" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-linebreak" @@ -14387,21 +12301,15 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-width" -version = "0.2.0" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.6" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "universal-hash" @@ -14425,12 +12333,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" -[[package]] -name = "unsigned-varint" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" - [[package]] name = "untrusted" version = "0.9.0" @@ -14439,9 +12341,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -14455,18 +12357,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -14475,9 +12365,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom", ] @@ -14518,15 +12408,15 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.8" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" +checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", + "ark-ff", + "ark-serialize", "ark-serialize-derive", "arrayref", "constcat", @@ -14536,7 +12426,7 @@ dependencies = [ "rand_core 0.6.4", "sha2 0.10.8", "sha3", - "thiserror 1.0.69", + "thiserror", "zeroize", ] @@ -14643,21 +12533,12 @@ checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-encoder" -version = "0.220.0" +version = "0.207.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" +checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17" dependencies = [ "leb128", - "wasmparser 0.220.0", -] - -[[package]] -name = "wasm-instrument" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" -dependencies = [ - "parity-wasm", + "wasmparser 0.207.0", ] [[package]] @@ -14671,7 +12552,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror 1.0.69", + "thiserror", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -14728,29 +12609,6 @@ dependencies = [ "string-interner", ] -[[package]] -name = "wasmi_collections" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" -dependencies = [ - "ahash 0.8.11", - "hashbrown 0.14.5", - "string-interner", -] - -[[package]] -name = "wasmi_core" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" -dependencies = [ - "downcast-rs", - "libm", - "num-traits", - "paste", -] - [[package]] name = "wasmi_core" version = "0.32.3" @@ -14775,9 +12633,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.220.0" +version = "0.207.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" +checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", @@ -14812,12 +12670,9 @@ dependencies = [ "once_cell", "paste", "psm", - "rayon", "serde", "target-lexicon", "wasmparser 0.102.0", - "wasmtime-cache", - "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -14833,63 +12688,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "wasmtime-cache" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" -dependencies = [ - "anyhow", - "base64 0.21.7", - "bincode", - "directories-next", - "file-per-thread-logger", - "log", - "rustix 0.36.17", - "serde", - "sha2 0.10.8", - "toml 0.5.11", - "windows-sys 0.45.0", - "zstd 0.11.2+zstd.1.5.2", -] - -[[package]] -name = "wasmtime-cranelift" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "gimli 0.27.3", - "log", - "object 0.30.4", - "target-lexicon", - "thiserror 1.0.69", - "wasmparser 0.102.0", - "wasmtime-cranelift-shared", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-cranelift-shared" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-native", - "gimli 0.27.3", - "object 0.30.4", - "target-lexicon", - "wasmtime-environ", -] - [[package]] name = "wasmtime-environ" version = "8.0.1" @@ -14904,7 +12702,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror 1.0.69", + "thiserror", "wasmparser 0.102.0", "wasmtime-types", ] @@ -14927,7 +12725,6 @@ dependencies = [ "serde", "target-lexicon", "wasmtime-environ", - "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-runtime", "windows-sys 0.45.0", @@ -14939,9 +12736,7 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" dependencies = [ - "object 0.30.4", "once_cell", - "rustix 0.36.17", ] [[package]] @@ -14987,7 +12782,7 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror 1.0.69", + "thiserror", "wasmparser 0.102.0", ] @@ -15013,9 +12808,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" dependencies = [ "rustls-pki-types", ] @@ -15039,9 +12834,9 @@ dependencies = [ [[package]] name = "which" -version = "7.0.0" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", @@ -15049,16 +12844,6 @@ dependencies = [ "winsafe", ] -[[package]] -name = "wide" -version = "0.7.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" -dependencies = [ - "bytemuck", - "safe_arch", -] - [[package]] name = "winapi" version = "0.3.9" @@ -15354,9 +13139,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -15377,18 +13162,6 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "wyz" version = "0.5.1" @@ -15605,9 +13378,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" +checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" dependencies = [ "arbitrary", "crc32fast", @@ -15631,7 +13404,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", "tokio", "toml 0.7.8", "url", @@ -15679,7 +13452,7 @@ checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" dependencies = [ "pest", "pest_derive", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -15703,7 +13476,7 @@ dependencies = [ "serde_yaml", "sha2 0.10.8", "tar", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-util", "tracing", @@ -15744,56 +13517,8 @@ dependencies = [ "rand", "regex", "reqwest 0.11.27", - "thiserror 1.0.69", + "thiserror", "tokio", "tracing", "uuid", ] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", -] - -[[package]] -name = "zstd" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" -dependencies = [ - "zstd-safe 6.0.6", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-safe" -version = "6.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 9a970fcd..8a450937 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -8,14 +8,14 @@ use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; /// Data to be sent to frontend for signing. -#[derive(Serialize)] +#[derive(Serialize, Debug)] pub struct Data { chain_rpc: String, data_type: DataType, } /// The type of transaction with specific data for signing (contract or parachain). -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq)] pub enum DataType { /// Parachain call, where Vec is the encoded call data. Parachain(Vec), @@ -25,7 +25,7 @@ pub enum DataType { /// Contract specific data variations. pub mod contracts { use super::Serialize; - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct ContractArgs { call_type: ContractCallType, storage_deposit_limit: Option, @@ -33,7 +33,7 @@ pub mod contracts { code: Option>, } - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub enum ContractCallType { // no unique fields. Upload, @@ -42,7 +42,7 @@ pub mod contracts { } /// Arguments for instantiating a contract. - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct InstantiateArgs { constructor: String, args: Vec, @@ -53,7 +53,7 @@ pub mod contracts { } /// Arguments for calling a contract. - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct CallArgs { address: String, message: String, @@ -62,6 +62,50 @@ pub mod contracts { gas_limit: Option, proof_size: Option, } + + #[cfg(test)] + mod tests { + use super::*; + use crate::*; + use serde_json::json; + + #[test] + fn json_serialize_parachain_data_works() { + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Parachain(vec![0, 1, 2, 3]), + }; + let json_data = serde_json::to_value(&data).unwrap(); + + assert_eq!( + json_data, + json!({"chain_rpc": "localhost:9944", "data_type": {"Parachain": [0,1,2,3]}}) + ); + } + #[test] + fn json_serialize_contract_upload_data_works() { + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Contract(ContractArgs { + call_type: ContractCallType::Upload, + storage_deposit_limit: Some("1234".to_string()), + code: Some(vec![0, 1, 2]), + }), + }; + let json_data = serde_json::to_value(&data).unwrap(); + + assert_eq!( + json_data, + json!({"chain_rpc": "localhost:9944", "data_type": {"Contract": { + "call_type": "Upload", + "storage_deposit_limit": "1234", + "code": [0,1,2] + }}}) + ); + } + + // TODO: after high level review, complete serialization tests. + } } use crate::contracts::ContractArgs; @@ -146,16 +190,20 @@ mod routes { #[cfg(test)] mod tests { use super::*; + use serde_json::json; - #[tokio::test] - async fn wallet_integration_manager() { - let path = PathBuf::from("/Users/peter/dev/r0gue/react-teleport-example/dist"); - let data = - Data { chain_rpc: "chain_rpc".to_string(), data_type: DataType::Parachain(vec![]) }; - let mut wim = WalletIntegrationManager::new(path, data); - - wim.run().await; - - println!("{:?}", wim.signed_payload); + #[test] + fn new_works() { + let path = PathBuf::from("/path/to/frontend"); + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Parachain(vec![]), + }; + let wim = WalletIntegrationManager::new(path.clone(), data); + + assert_eq!(wim.frontend_path, path); + assert_eq!(wim.data.chain_rpc, "localhost:9944"); + assert_eq!(wim.data.data_type, DataType::Parachain(vec![])); + assert_eq!(wim.signed_payload, None); } } From 0ad2f2f3049e49d3a6811bb73c19ea57176f9017 Mon Sep 17 00:00:00 2001 From: Peter White Date: Wed, 4 Dec 2024 21:52:31 -0700 Subject: [PATCH 061/143] refactor(wallet-integration): just use call_data, remove data types --- crates/pop-wallet-integration/src/lib.rs | 128 +++-------------------- 1 file changed, 15 insertions(+), 113 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 8a450937..7d18a605 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -7,108 +7,13 @@ use std::{path::PathBuf, sync::Arc}; use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; -/// Data to be sent to frontend for signing. +/// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -pub struct Data { +pub struct TransactionData { chain_rpc: String, - data_type: DataType, + call_data: Vec, } -/// The type of transaction with specific data for signing (contract or parachain). -#[derive(Serialize, Debug, PartialEq)] -pub enum DataType { - /// Parachain call, where Vec is the encoded call data. - Parachain(Vec), - Contract(ContractArgs), -} - -/// Contract specific data variations. -pub mod contracts { - use super::Serialize; - #[derive(Serialize, Debug, PartialEq)] - pub struct ContractArgs { - call_type: ContractCallType, - storage_deposit_limit: Option, - /// The binary (wasm, polkavm) of the contract. - code: Option>, - } - - #[derive(Serialize, Debug, PartialEq)] - pub enum ContractCallType { - // no unique fields. - Upload, - Instantiate(InstantiateArgs), - Call(CallArgs), - } - - /// Arguments for instantiating a contract. - #[derive(Serialize, Debug, PartialEq)] - pub struct InstantiateArgs { - constructor: String, - args: Vec, - value: String, - gas_limit: Option, - proof_size: Option, - salt: Option>, - } - - /// Arguments for calling a contract. - #[derive(Serialize, Debug, PartialEq)] - pub struct CallArgs { - address: String, - message: String, - args: Vec, - value: String, - gas_limit: Option, - proof_size: Option, - } - - #[cfg(test)] - mod tests { - use super::*; - use crate::*; - use serde_json::json; - - #[test] - fn json_serialize_parachain_data_works() { - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Parachain(vec![0, 1, 2, 3]), - }; - let json_data = serde_json::to_value(&data).unwrap(); - - assert_eq!( - json_data, - json!({"chain_rpc": "localhost:9944", "data_type": {"Parachain": [0,1,2,3]}}) - ); - } - #[test] - fn json_serialize_contract_upload_data_works() { - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Contract(ContractArgs { - call_type: ContractCallType::Upload, - storage_deposit_limit: Some("1234".to_string()), - code: Some(vec![0, 1, 2]), - }), - }; - let json_data = serde_json::to_value(&data).unwrap(); - - assert_eq!( - json_data, - json!({"chain_rpc": "localhost:9944", "data_type": {"Contract": { - "call_type": "Upload", - "storage_deposit_limit": "1234", - "code": [0,1,2] - }}}) - ); - } - - // TODO: after high level review, complete serialization tests. - } -} -use crate::contracts::ContractArgs; - struct StateHandler { shutdown_tx: Option>, signed_payload: Option, @@ -117,16 +22,16 @@ struct StateHandler { /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { frontend_path: PathBuf, - // cloning can be expensive (e.g. contract code stored in-memory) - data: Arc, + // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. + payload: Arc, signed_payload: Option, } impl WalletIntegrationManager { /// - frontend_path: Path to the wallet-integration frontend. /// - data: Data to be sent to the frontend for signing. - pub fn new(frontend_path: PathBuf, data: Data) -> Self { - Self { frontend_path, data: Arc::new(data), signed_payload: Default::default() } + pub fn new(frontend_path: PathBuf, payload: TransactionData) -> Self { + Self { frontend_path, payload: Arc::new(payload), signed_payload: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -142,7 +47,7 @@ impl WalletIntegrationManager { // will shutdown when the signed payload is received let app = Router::new() // cloning Arcs is cheap - .route("/data", get(routes::get_data_handler).with_state(self.data.clone())) + .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) .route("/submit", post(routes::handle_submit).with_state(state.clone())) .nest_service("/", ServeDir::new(self.frontend_path.clone())); @@ -159,13 +64,15 @@ impl WalletIntegrationManager { } mod routes { - use super::{Arc, Data, Mutex, StateHandler}; + use super::{Arc, Mutex, StateHandler, TransactionData}; use axum::{extract::State, Json}; use serde_json::json; /// Responds with the serialized JSON data for signing. - pub(super) async fn get_data_handler(State(data): State>) -> Json { - Json(serde_json::to_value(&*data).unwrap()) + pub(super) async fn get_payload_handler( + State(payload): State>, + ) -> Json { + Json(serde_json::to_value(&*payload).unwrap()) } /// Receives the signed payload from the wallet. @@ -190,20 +97,15 @@ mod routes { #[cfg(test)] mod tests { use super::*; - use serde_json::json; #[test] fn new_works() { let path = PathBuf::from("/path/to/frontend"); - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Parachain(vec![]), - }; + let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; let wim = WalletIntegrationManager::new(path.clone(), data); assert_eq!(wim.frontend_path, path); - assert_eq!(wim.data.chain_rpc, "localhost:9944"); - assert_eq!(wim.data.data_type, DataType::Parachain(vec![])); + assert_eq!(wim.payload.chain_rpc, "localhost:9944"); assert_eq!(wim.signed_payload, None); } } From a6c056199411440264ddcdec74a593dad77ca9cb Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 13:27:05 -0700 Subject: [PATCH 062/143] feat(wallet-integration): add frontend type for flexible serving --- crates/pop-wallet-integration/src/lib.rs | 51 +++++++++++++++++++----- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 7d18a605..61b5348f 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -1,4 +1,5 @@ use axum::{ + response::Html, routing::{get, post}, Router, }; @@ -7,6 +8,13 @@ use std::{path::PathBuf, sync::Arc}; use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; +/// Make frontend sourcing more flexible by allowing a custom route +/// to be defined. For example, sourcing frontend from a cached directory, +/// or simply an HTML string built-in to the binary. +pub trait Frontend { + fn serve_content(&self) -> Router; +} + /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] pub struct TransactionData { @@ -14,24 +22,28 @@ pub struct TransactionData { call_data: Vec, } +// Shared state between routes. Serves two purposes: +// - Maintains a channel to signal shutdown to the main app. +// - Stores the signed payload received from the wallet. struct StateHandler { shutdown_tx: Option>, signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend_path: PathBuf, +pub struct WalletIntegrationManager { + frontend: F, // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. payload: Arc, + // The final payload signed by the wallet. Updated after server closure. signed_payload: Option, } -impl WalletIntegrationManager { - /// - frontend_path: Path to the wallet-integration frontend. - /// - data: Data to be sent to the frontend for signing. - pub fn new(frontend_path: PathBuf, payload: TransactionData) -> Self { - Self { frontend_path, payload: Arc::new(payload), signed_payload: Default::default() } +impl WalletIntegrationManager { + /// - frontend: A frontend with custom route to serve content. + /// - payload: Payload to be sent to the frontend for signing. + pub fn new(frontend: F, payload: TransactionData) -> Self { + Self { frontend, payload: Arc::new(payload), signed_payload: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -49,7 +61,7 @@ impl WalletIntegrationManager { // cloning Arcs is cheap .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) .route("/submit", post(routes::handle_submit).with_state(state.clone())) - .nest_service("/", ServeDir::new(self.frontend_path.clone())); + .merge(self.frontend.serve_content()); // custom route for serving frontend let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); axum::serve(listener, app) @@ -90,7 +102,23 @@ mod routes { } // graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success", "payload": payload})) + Json(json!({"status": "success"})) + } +} + +/// Default frontend. Current implementation serves static files from a directory. +pub struct DefaultFrontend { + content: PathBuf, +} +impl DefaultFrontend { + pub fn new(content: PathBuf) -> Self { + Self { content } + } +} + +impl Frontend for DefaultFrontend { + fn serve_content(&self) -> Router { + Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } @@ -101,10 +129,11 @@ mod tests { #[test] fn new_works() { let path = PathBuf::from("/path/to/frontend"); + let default_frontend = DefaultFrontend::new(path.clone()); let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(path.clone(), data); + let wim = WalletIntegrationManager::new(default_frontend, data); - assert_eq!(wim.frontend_path, path); + assert_eq!(wim.frontend.content, path); assert_eq!(wim.payload.chain_rpc, "localhost:9944"); assert_eq!(wim.signed_payload, None); } From 534b06b62f283daf5c78fe0bb61a6382e2d4d5cf Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:09:14 -0700 Subject: [PATCH 063/143] feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method --- crates/pop-wallet-integration/src/lib.rs | 29 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 61b5348f..c76e4a53 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -1,5 +1,4 @@ use axum::{ - response::Html, routing::{get, post}, Router, }; @@ -25,6 +24,7 @@ pub struct TransactionData { // Shared state between routes. Serves two purposes: // - Maintains a channel to signal shutdown to the main app. // - Stores the signed payload received from the wallet. +#[derive(Default)] struct StateHandler { shutdown_tx: Option>, signed_payload: Option, @@ -35,15 +35,14 @@ pub struct WalletIntegrationManager { frontend: F, // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. payload: Arc, - // The final payload signed by the wallet. Updated after server closure. - signed_payload: Option, + state: Arc>, } impl WalletIntegrationManager { /// - frontend: A frontend with custom route to serve content. /// - payload: Payload to be sent to the frontend for signing. pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), signed_payload: Default::default() } + Self { frontend, payload: Arc::new(payload), state: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -55,8 +54,9 @@ impl WalletIntegrationManager { // shared state between routes. Will be used to store the signed payload. let state = Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + self.state = state.clone(); - // will shutdown when the signed payload is received + // will shut down when the signed payload is received let app = Router::new() // cloning Arcs is cheap .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) @@ -70,8 +70,13 @@ impl WalletIntegrationManager { }) .await .unwrap(); + } - self.signed_payload = state.lock().await.signed_payload.take(); + pub async fn terminate(&mut self) { + // signal shutdown + if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } } } @@ -96,7 +101,9 @@ mod routes { let mut state = state.lock().await; state.signed_payload = Some(payload.clone()); - // signal shutdown + // signal shutdown. + // TODO: decide if we want to shutdown on submit, or at some other time. + // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. if let Some(shutdown_tx) = state.shutdown_tx.take() { let _ = shutdown_tx.send(()); } @@ -126,8 +133,8 @@ impl Frontend for DefaultFrontend { mod tests { use super::*; - #[test] - fn new_works() { + #[tokio::test] + async fn new_works() { let path = PathBuf::from("/path/to/frontend"); let default_frontend = DefaultFrontend::new(path.clone()); let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; @@ -135,6 +142,8 @@ mod tests { assert_eq!(wim.frontend.content, path); assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.signed_payload, None); + assert_eq!(wim.payload.call_data, vec![] as Vec); + assert!(wim.state.lock().await.shutdown_tx.is_none()); + assert!(wim.state.lock().await.signed_payload.is_none()); } } From 56356772cb5cd0dea4dd21d8b9643aca95268ac5 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:27:06 -0700 Subject: [PATCH 064/143] refactor(wallet-integration): move to module with pop-cli crate --- Cargo.lock | 11 - crates/pop-cli/src/wallet_integration.rs | 502 +++-------------------- crates/pop-wallet-integration/Cargo.toml | 14 - crates/pop-wallet-integration/src/lib.rs | 149 ------- 4 files changed, 61 insertions(+), 615 deletions(-) delete mode 100644 crates/pop-wallet-integration/Cargo.toml delete mode 100644 crates/pop-wallet-integration/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 36a943aa..fee5cc17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8430,17 +8430,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "pop-wallet-integration" -version = "0.5.0" -dependencies = [ - "axum", - "serde", - "serde_json", - "tokio", - "tower-http 0.6.2", -] - [[package]] name = "portable-atomic" version = "1.7.0" diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 3d688e7a..291954db 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -13,14 +13,14 @@ use tokio::{ use tower_http::{cors::Any, services::ServeDir}; /// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. +/// to be defined. For example, sourcing frontend from a cached directory, +/// or simply an HTML string built-in to the binary. pub trait Frontend { fn serve_content(&self) -> Router; } /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(serde::Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -40,52 +40,36 @@ impl TransactionData { /// - Maintains a channel to signal shutdown to the main app. /// - Stores the signed payload received from the wallet. #[derive(Default)] -pub struct StateHandler { - /// Channel to signal shutdown to the main app. +struct StateHandler { shutdown_tx: Option>, - /// Received from UI. - pub signed_payload: Option, - /// Holds a single error message. - /// Only method for consuming error removes (takes) it from state. - error: Option, + signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - /// Shared state between routes. - pub state: Arc>, - /// Node rpc address. - pub rpc_url: String, - /// Web server task handle. - pub task_handle: JoinHandle>, +pub struct WalletIntegrationManager { + frontend: F, + // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. + payload: Arc, + state: Arc>, } -impl WalletIntegrationManager { - /// Launches a server for hosting the wallet integration. Server launched in separate task. - /// Uses default address of 127.0.0.1:9090. - /// # Arguments - /// * `frontend`: A frontend with custom route to serve content. - /// * `payload`: Payload to be sent to the frontend for signing. - /// - /// # Returns - /// A `WalletIntegrationManager` instance, with access to the state and task handle for the - /// server. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self::new_with_address(frontend, payload, "127.0.0.1:9090") +impl WalletIntegrationManager { + /// - frontend: A frontend with custom route to serve content. + /// - payload: Payload to be sent to the frontend for signing. + pub fn new(frontend: F, payload: TransactionData) -> Self { + Self { frontend, payload: Arc::new(payload), state: Default::default() } } - /// Same as `new`, but allows specifying the address to bind to. - pub fn new_with_address(frontend: F, payload: TransactionData, rpc: &str) -> Self { - // Channel to signal shutdown. + /// Serves the wallet-integration frontend and an API for the wallet to get + /// the necessary data and submit the signed payload. + pub async fn run(&mut self) { + // used to signal shutdown. let (tx, rx) = oneshot::channel(); - let state = Arc::new(Mutex::new(StateHandler { - shutdown_tx: Some(tx), - signed_payload: None, - error: None, - })); - - let payload = Arc::new(payload); + // shared state between routes. Will be used to store the signed payload. + let state = + Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + self.state = state.clone(); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -102,449 +86,85 @@ impl WalletIntegrationManager { .merge(frontend.serve_content()) // Custom route for serving frontend. .layer(cors); - let rpc_owned = rpc.to_string(); - - // Will shut down when the signed payload is received. - let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(&rpc_owned) - .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", rpc_owned, e))?; - - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; - Ok(()) - }); - - Self { state, rpc_url: rpc.to_string(), task_handle } - } - - /// Signals the wallet integration server to shut down. - #[allow(dead_code)] - pub async fn terminate(&mut self) -> anyhow::Result<()> { - terminate_helper(&self.state).await - } - - /// Checks if the server task is still running. - pub fn is_running(&self) -> bool { - !self.task_handle.is_finished() + let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .unwrap(); } - /// Takes the error from the state if it exists. - pub async fn take_error(&mut self) -> Option { - self.state.lock().await.error.take() + pub async fn terminate(&mut self) { + // signal shutdown + if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } } } mod routes { - use super::{terminate_helper, Arc, Mutex, StateHandler, TransactionData}; - use anyhow::Error; - use axum::{ - extract::State, - http::StatusCode, - response::{IntoResponse, Response}, - Json, - }; + use super::{Arc, Mutex, StateHandler, TransactionData}; + use axum::{extract::State, Json}; use serde_json::json; - pub(super) struct ApiError(Error); - - impl From for ApiError { - fn from(err: Error) -> Self { - ApiError(err) - } - } - - // Implementing IntoResponse for ApiError allows us to return it directly from a route handler. - impl IntoResponse for ApiError { - fn into_response(self) -> Response { - let body = json!({ - "error": self.0.to_string(), - }); - (StatusCode::INTERNAL_SERVER_ERROR, Json(body)).into_response() - } - } - /// Responds with the serialized JSON data for signing. pub(super) async fn get_payload_handler( State(payload): State>, - ) -> Result, ApiError> { - // Error should never occur. - let json_payload = serde_json::to_value(&*payload) - .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; - Ok(Json(json_payload)) + ) -> Json { + Json(serde_json::to_value(&*payload).unwrap()) } /// Receives the signed payload from the wallet. /// Will signal for shutdown on success. - pub(super) async fn submit_handler( + pub(super) async fn handle_submit( State(state): State>>, Json(payload): Json, - ) -> Result, ApiError> { - // Signal shutdown. - let res = terminate_helper(&state).await; - - let mut state_locked = state.lock().await; - state_locked.signed_payload = Some(payload); - - res?; - - // Graceful shutdown ensures response is sent before shutdown. - Ok(Json(json!({"status": "success"}))) - } - - /// Receives an error message from the wallet. - pub(super) async fn error_handler( - State(state): State>>, - Json(error): Json, - ) { + ) -> Json { let mut state = state.lock().await; - state.error = Some(error); - } + state.signed_payload = Some(payload.clone()); - /// Allows the server to be terminated from the frontend. - pub(super) async fn terminate_handler( - State(state): State>>, - ) -> Result<(), ApiError> { - Ok(terminate_helper(&state).await?) - } -} + // signal shutdown. + // TODO: decide if we want to shutdown on submit, or at some other time. + // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } -async fn terminate_helper(handle: &Arc>) -> anyhow::Result<()> { - if let Some(shutdown_tx) = handle.lock().await.shutdown_tx.take() { - shutdown_tx - .send(()) - .map_err(|_| anyhow::anyhow!("Failed to send shutdown signal"))?; + // graceful shutdown ensures response is sent before shutdown. + Json(json!({"status": "success"})) } - Ok(()) } -/// Serves static files from a directory. -pub struct FrontendFromDir { +/// Default frontend. Current implementation serves static files from a directory. +pub struct DefaultFrontend { content: PathBuf, } #[allow(dead_code)] impl FrontendFromDir {} -impl Frontend for FrontendFromDir { +impl Frontend for DefaultFrontend { fn serve_content(&self) -> Router { Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } -/// Serves a hard-coded HTML string as the frontend. -pub struct FrontendFromString { - content: String, -} - -#[allow(dead_code)] -impl FrontendFromString { - pub fn new(content: String) -> Self { - Self { content } - } -} - -impl Frontend for FrontendFromString { - fn serve_content(&self) -> Router { - let content = self.content.clone(); - Router::new().route("/", get(move || async { Html(content) })) - } -} - #[cfg(test)] mod tests { use super::*; - use serde_json::json; - - const TEST_HTML: &str = "Hello, world!"; - - // Wait for server to launch. - async fn wait() { - tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; - } - - fn default_payload() -> TransactionData { - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] } - } #[tokio::test] async fn new_works() { - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - - assert_eq!(wim.rpc_url, "127.0.0.1:9090"); - assert_eq!(wim.is_running(), true); - assert!(wim.state.lock().await.shutdown_tx.is_some()); + let path = PathBuf::from("/path/to/frontend"); + let default_frontend = DefaultFrontend::new(path.clone()); + let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; + let wim = WalletIntegrationManager::new(default_frontend, data); + + assert_eq!(wim.frontend.content, path); + assert_eq!(wim.payload.chain_rpc, "localhost:9944"); + assert_eq!(wim.payload.call_data, vec![] as Vec); + assert!(wim.state.lock().await.shutdown_tx.is_none()); assert!(wim.state.lock().await.signed_payload.is_none()); - - // Terminate the server and make sure result is ok. - wim.terminate().await.expect("Termination should not fail."); - assert!(wim.task_handle.await.is_ok()); - } - - #[test] - fn new_transaction_data_works() { - let chain_rpc = "localhost:9944".to_string(); - let call_data = vec![1, 2, 3]; - let transaction_data = TransactionData::new(chain_rpc.clone(), call_data.clone()); - - assert_eq!(transaction_data.chain_rpc, chain_rpc); - assert_eq!(transaction_data.call_data, call_data); - } - - #[tokio::test] - async fn take_error_works() { - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - - assert_eq!(wim.take_error().await, None); - - let error = "An error occurred".to_string(); - wim.state.lock().await.error = Some(error.clone()); - - let taken_error = wim.take_error().await; - assert_eq!(taken_error, Some(error)); - } - - #[tokio::test] - async fn payload_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9091"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = - WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let actual_payload = reqwest::get(&format!("{}/payload", addr)) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); - assert_eq!(actual_payload.call_data, expected_payload.call_data); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn submit_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9092"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/submit", addr)) - .json(&"0xDEADBEEF") - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse response"); - - assert_eq!(response, json!({"status": "success"})); - assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn error_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9093"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/error", addr)) - .json(&"an error occurred") - .send() - .await - .expect("Failed to submit error") - .text() - .await - .expect("Failed to parse response"); - - // no response expected - assert_eq!(response.len(), 0); - assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); - assert_eq!(wim.is_running(), true); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn terminate_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9094"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/terminate", addr)) - .send() - .await - .expect("Failed to terminate") - .text() - .await - .expect("Failed to parse response"); - - // No response expected. - assert_eq!(response.len(), 0); - assert_eq!(wim.is_running(), false); - - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn wallet_terminate_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9095"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - - assert_eq!(wim.is_running(), true); - wim.terminate().await.expect("Termination should not fail"); - wait().await; - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn frontend_from_string_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9096"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let actual_content = reqwest::get(&format!("http://{}", addr)) - .await - .expect("Failed to get web page") - .text() - .await - .expect("Failed to parse page"); - - assert_eq!(actual_content, TEST_HTML); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn frontend_from_dir_works() { - use std::fs; - use tempfile::tempdir; - - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9097"; - - let temp_dir = tempdir().expect("Failed to create temp directory"); - let index_file_path = temp_dir.path().join("index.html"); - - let test_html = "Hello, world from Directory!"; - fs::write(&index_file_path, test_html).expect("Failed to write index.html"); - - let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let actual_content = reqwest::get(&format!("http://{}", addr)) - .await - .expect("Failed to get web page") - .text() - .await - .expect("Failed to parse page"); - - assert_eq!(actual_content, test_html); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn large_payload_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9098"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; - - let expected_payload = TransactionData { - chain_rpc: "localhost:9944".to_string(), - call_data: call_data_5mb.clone(), - }; - let mut wim = - WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let actual_payload = reqwest::get(&format!("{}/payload", addr)) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); - assert_eq!(actual_payload.call_data, call_data_5mb); - - wim.terminate().await.expect("Termination should not fail."); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn new_with_conflicting_address_fails() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9099"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - assert_eq!(wim.is_running(), true); - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let wim_conflict = - WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - assert_eq!(wim_conflict.is_running(), false); - let task_result = wim_conflict.task_handle.await.unwrap(); - match task_result { - Err(e) => assert!(e - .to_string() - .starts_with(&format!("Failed to bind to {}: Address already in use", addr))), - Ok(_) => panic!("Expected error, but task succeeded"), - } } } diff --git a/crates/pop-wallet-integration/Cargo.toml b/crates/pop-wallet-integration/Cargo.toml deleted file mode 100644 index 02339d3b..00000000 --- a/crates/pop-wallet-integration/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "pop-wallet-integration" -edition.workspace = true -documentation.workspace = true -license.workspace = true -repository.workspace = true -version.workspace = true - -[dependencies] -axum.workspace = true -tokio.workspace = true -tower-http = { workspace = true, features = ["fs"] } -serde_json.workspace = true -serde = { workspace = true, features = ["derive"] } diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs deleted file mode 100644 index c76e4a53..00000000 --- a/crates/pop-wallet-integration/src/lib.rs +++ /dev/null @@ -1,149 +0,0 @@ -use axum::{ - routing::{get, post}, - Router, -}; -use serde::Serialize; -use std::{path::PathBuf, sync::Arc}; -use tokio::sync::{oneshot, Mutex}; -use tower_http::services::ServeDir; - -/// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. For example, sourcing frontend from a cached directory, -/// or simply an HTML string built-in to the binary. -pub trait Frontend { - fn serve_content(&self) -> Router; -} - -/// Transaction payload to be sent to frontend for signing. -#[derive(Serialize, Debug)] -pub struct TransactionData { - chain_rpc: String, - call_data: Vec, -} - -// Shared state between routes. Serves two purposes: -// - Maintains a channel to signal shutdown to the main app. -// - Stores the signed payload received from the wallet. -#[derive(Default)] -struct StateHandler { - shutdown_tx: Option>, - signed_payload: Option, -} - -/// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend: F, - // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. - payload: Arc, - state: Arc>, -} - -impl WalletIntegrationManager { - /// - frontend: A frontend with custom route to serve content. - /// - payload: Payload to be sent to the frontend for signing. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), state: Default::default() } - } - - /// Serves the wallet-integration frontend and an API for the wallet to get - /// the necessary data and submit the signed payload. - pub async fn run(&mut self) { - // used to signal shutdown. - let (tx, rx) = oneshot::channel(); - - // shared state between routes. Will be used to store the signed payload. - let state = - Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); - self.state = state.clone(); - - // will shut down when the signed payload is received - let app = Router::new() - // cloning Arcs is cheap - .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) - .route("/submit", post(routes::handle_submit).with_state(state.clone())) - .merge(self.frontend.serve_content()); // custom route for serving frontend - - let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .unwrap(); - } - - pub async fn terminate(&mut self) { - // signal shutdown - if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } - } -} - -mod routes { - use super::{Arc, Mutex, StateHandler, TransactionData}; - use axum::{extract::State, Json}; - use serde_json::json; - - /// Responds with the serialized JSON data for signing. - pub(super) async fn get_payload_handler( - State(payload): State>, - ) -> Json { - Json(serde_json::to_value(&*payload).unwrap()) - } - - /// Receives the signed payload from the wallet. - /// Will signal for shutdown on success. - pub(super) async fn handle_submit( - State(state): State>>, - Json(payload): Json, - ) -> Json { - let mut state = state.lock().await; - state.signed_payload = Some(payload.clone()); - - // signal shutdown. - // TODO: decide if we want to shutdown on submit, or at some other time. - // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } - - // graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success"})) - } -} - -/// Default frontend. Current implementation serves static files from a directory. -pub struct DefaultFrontend { - content: PathBuf, -} -impl DefaultFrontend { - pub fn new(content: PathBuf) -> Self { - Self { content } - } -} - -impl Frontend for DefaultFrontend { - fn serve_content(&self) -> Router { - Router::new().nest_service("/", ServeDir::new(self.content.clone())) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[tokio::test] - async fn new_works() { - let path = PathBuf::from("/path/to/frontend"); - let default_frontend = DefaultFrontend::new(path.clone()); - let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(default_frontend, data); - - assert_eq!(wim.frontend.content, path); - assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.payload.call_data, vec![] as Vec); - assert!(wim.state.lock().await.shutdown_tx.is_none()); - assert!(wim.state.lock().await.signed_payload.is_none()); - } -} From a2cd3cc45cd4d8ed4d42da3aa54c6bbcf847b1ee Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:50:28 -0700 Subject: [PATCH 065/143] feat(wallet-integration): server-side error handling, update port to 9090 --- crates/pop-cli/src/wallet_integration.rs | 43 ++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 291954db..941006a0 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -62,7 +62,7 @@ impl WalletIntegrationManager { /// Serves the wallet-integration frontend and an API for the wallet to get /// the necessary data and submit the signed payload. - pub async fn run(&mut self) { + pub async fn run(&mut self) -> anyhow::Result<()> { // used to signal shutdown. let (tx, rx) = oneshot::channel(); @@ -86,13 +86,18 @@ impl WalletIntegrationManager { .merge(frontend.serve_content()) // Custom route for serving frontend. .layer(cors); - let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + let addr = "127.0.0.1:9090"; + let listener = tokio::net::TcpListener::bind(addr) + .await + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + axum::serve(listener, app) .with_graceful_shutdown(async move { let _ = rx.await.ok(); }) .await - .unwrap(); + .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; + Ok(()) } pub async fn terminate(&mut self) { @@ -105,14 +110,40 @@ impl WalletIntegrationManager { mod routes { use super::{Arc, Mutex, StateHandler, TransactionData}; - use axum::{extract::State, Json}; + use anyhow::Error; + use axum::{ + extract::State, + http::StatusCode, + response::{IntoResponse, Response}, + Json, + }; use serde_json::json; + pub struct ApiError(Error); + + impl From for ApiError { + fn from(err: Error) -> Self { + ApiError(err) + } + } + + // Implementing IntoResponse for ApiError allows us to return it directly from a route handler. + impl IntoResponse for ApiError { + fn into_response(self) -> Response { + let body = json!({ + "error": self.0.to_string(), + }); + (StatusCode::INTERNAL_SERVER_ERROR, Json(body)).into_response() + } + } + /// Responds with the serialized JSON data for signing. pub(super) async fn get_payload_handler( State(payload): State>, - ) -> Json { - Json(serde_json::to_value(&*payload).unwrap()) + ) -> Result, ApiError> { + let json_payload = serde_json::to_value(&*payload) + .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; + Ok(Json(json_payload)) } /// Receives the signed payload from the wallet. From dce935df771d0b4488d7e927228c9b4c1d2dd85c Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 19:16:12 -0700 Subject: [PATCH 066/143] refactor(wallet-integration): restructure server for easier use in thread --- crates/pop-cli/src/wallet_integration.rs | 63 +++++++++++++----------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 941006a0..c2b72e7c 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -40,36 +40,27 @@ impl TransactionData { /// - Maintains a channel to signal shutdown to the main app. /// - Stores the signed payload received from the wallet. #[derive(Default)] -struct StateHandler { +pub struct StateHandler { shutdown_tx: Option>, - signed_payload: Option, + pub signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend: F, - // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. - payload: Arc, - state: Arc>, +pub struct WalletIntegrationManager { + pub state: Arc>, + pub addr: String, + pub task_handle: tokio::task::JoinHandle>, } -impl WalletIntegrationManager { +impl WalletIntegrationManager { /// - frontend: A frontend with custom route to serve content. /// - payload: Payload to be sent to the frontend for signing. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), state: Default::default() } - } - - /// Serves the wallet-integration frontend and an API for the wallet to get - /// the necessary data and submit the signed payload. - pub async fn run(&mut self) -> anyhow::Result<()> { - // used to signal shutdown. + pub fn new(frontend: F, payload: TransactionData) -> Self { + // Self { frontend, payload: Arc::new(payload), state: Default::default() } let (tx, rx) = oneshot::channel(); - // shared state between routes. Will be used to store the signed payload. let state = Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); - self.state = state.clone(); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -87,17 +78,23 @@ impl WalletIntegrationManager { .layer(cors); let addr = "127.0.0.1:9090"; - let listener = tokio::net::TcpListener::bind(addr) - .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; - - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; - Ok(()) + + // will shut down when the signed payload is received + let task_handle = tokio::spawn(async move { + let listener = tokio::net::TcpListener::bind(addr) + .await + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; + Ok(()) + }); + + Self { state, addr: addr.to_string(), task_handle } } pub async fn terminate(&mut self) { @@ -106,6 +103,14 @@ impl WalletIntegrationManager { let _ = shutdown_tx.send(()); } } + + pub fn is_running(&self) -> bool { + !self.task_handle.is_finished() + } + + pub async fn finish(self) -> anyhow::Result<()> { + self.task_handle.await? + } } mod routes { From 2b04dfe8f598e18fc072dc28baa83d04b6f5b5f0 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 21:33:20 -0700 Subject: [PATCH 067/143] fix(wallet-integration): remove invalid fn `finish` --- crates/pop-cli/src/wallet_integration.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index c2b72e7c..4f1deb37 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -107,10 +107,6 @@ impl WalletIntegrationManager { pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } - - pub async fn finish(self) -> anyhow::Result<()> { - self.task_handle.await? - } } mod routes { From 7f340a43c972513a39c8608b4c6d9fd191d2fa3a Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 15:00:33 -0700 Subject: [PATCH 068/143] docs(wallet-integration): inline comments --- crates/pop-cli/src/wallet_integration.rs | 28 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 4f1deb37..e0e678c1 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -13,8 +13,7 @@ use tokio::{ use tower_http::{cors::Any, services::ServeDir}; /// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. For example, sourcing frontend from a cached directory, -/// or simply an HTML string built-in to the binary. +/// to be defined. pub trait Frontend { fn serve_content(&self) -> Router; } @@ -42,21 +41,31 @@ impl TransactionData { #[derive(Default)] pub struct StateHandler { shutdown_tx: Option>, + // signed payload received from UI. pub signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { + // shared state between routes. pub state: Arc>, + // node rpc address pub addr: String, + // axum server task handle pub task_handle: tokio::task::JoinHandle>, } impl WalletIntegrationManager { - /// - frontend: A frontend with custom route to serve content. - /// - payload: Payload to be sent to the frontend for signing. + /// Launches a server for hosting the wallet integration. Server launched in separate task. + /// # Arguments + /// * `frontend`: A frontend with custom route to serve content. + /// * `payload`: Payload to be sent to the frontend for signing. + /// + /// # Returns + /// A `WalletIntegrationManager` instance, with access to the state and task handle for the + /// server. pub fn new(frontend: F, payload: TransactionData) -> Self { - // Self { frontend, payload: Arc::new(payload), state: Default::default() } + // channel to signal shutdown let (tx, rx) = oneshot::channel(); let state = @@ -97,6 +106,7 @@ impl WalletIntegrationManager { Self { state, addr: addr.to_string(), task_handle } } + /// Signals the wallet integration server to shut down. pub async fn terminate(&mut self) { // signal shutdown if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { @@ -104,6 +114,7 @@ impl WalletIntegrationManager { } } + /// Checks if the server task is still running. pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } @@ -120,7 +131,7 @@ mod routes { }; use serde_json::json; - pub struct ApiError(Error); + struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -156,9 +167,8 @@ mod routes { let mut state = state.lock().await; state.signed_payload = Some(payload.clone()); - // signal shutdown. - // TODO: decide if we want to shutdown on submit, or at some other time. - // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. + // Signal shutdown. + // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. if let Some(shutdown_tx) = state.shutdown_tx.take() { let _ = shutdown_tx.send(()); } From 4198a656126c34ac612d6836f31d2006f7890814 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 17:04:54 -0700 Subject: [PATCH 069/143] test(wallet-integration): unit tests for wallet-integration server. Add new frontend type --- crates/pop-cli/src/wallet_integration.rs | 267 +++++++++++++++++++++-- 1 file changed, 251 insertions(+), 16 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index e0e678c1..bdf910aa 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -4,7 +4,7 @@ use axum::{ routing::{get, post}, Router, }; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use std::{path::PathBuf, sync::Arc}; use tokio::{ sync::{oneshot, Mutex}, @@ -20,6 +20,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] +#[cfg_attr(test, derive(Deserialize))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -57,6 +58,7 @@ pub struct WalletIntegrationManager { impl WalletIntegrationManager { /// Launches a server for hosting the wallet integration. Server launched in separate task. + /// Uses default address of 127.0.0.1:9090. /// # Arguments /// * `frontend`: A frontend with custom route to serve content. /// * `payload`: Payload to be sent to the frontend for signing. @@ -65,6 +67,15 @@ impl WalletIntegrationManager { /// A `WalletIntegrationManager` instance, with access to the state and task handle for the /// server. pub fn new(frontend: F, payload: TransactionData) -> Self { + Self::new_with_address(frontend, payload, "127.0.0.1:9090") + } + + /// Same as `new`, but allows specifying the address to bind to. + pub fn new_with_address( + frontend: F, + payload: TransactionData, + addr: &str, + ) -> Self { // channel to signal shutdown let (tx, rx) = oneshot::channel(); @@ -90,9 +101,9 @@ impl WalletIntegrationManager { // will shut down when the signed payload is received let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(addr) + let listener = tokio::net::TcpListener::bind(&addr_owned) .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr_owned, e))?; axum::serve(listener, app) .with_graceful_shutdown(async move { @@ -131,7 +142,8 @@ mod routes { }; use serde_json::json; - struct ApiError(Error); + // must be public for axum + pub struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -153,6 +165,7 @@ mod routes { pub(super) async fn get_payload_handler( State(payload): State>, ) -> Result, ApiError> { + // error should never occur. let json_payload = serde_json::to_value(&*payload) .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; Ok(Json(json_payload)) @@ -178,35 +191,257 @@ mod routes { } } -/// Default frontend. Current implementation serves static files from a directory. -pub struct DefaultFrontend { +/// Serves static files from a directory. +pub struct FrontendFromDir { content: PathBuf, } #[allow(dead_code)] impl FrontendFromDir {} -impl Frontend for DefaultFrontend { +impl Frontend for FrontendFromDir { fn serve_content(&self) -> Router { Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } +/// Serves a hard-coded HTML string as the frontend. +pub struct FrontendFromString { + content: String, +} + +impl FrontendFromString { + pub fn new(content: String) -> Self { + Self { content } + } +} + +impl Frontend for FrontendFromString { + fn serve_content(&self) -> Router { + let content = self.content.clone(); + Router::new().route("/", get(move || async { Html(content) })) + } +} + #[cfg(test)] mod tests { use super::*; + use serde_json::json; + + const TEST_HTML: &str = "Hello, world!"; + + // wait for server to launch + async fn wait() { + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + } #[tokio::test] async fn new_works() { - let path = PathBuf::from("/path/to/frontend"); - let default_frontend = DefaultFrontend::new(path.clone()); - let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(default_frontend, data); - - assert_eq!(wim.frontend.content, path); - assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.payload.call_data, vec![] as Vec); - assert!(wim.state.lock().await.shutdown_tx.is_none()); + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; + let mut wim = WalletIntegrationManager::new(frontend, payload); + + assert_eq!(wim.addr, "127.0.0.1:9090"); + assert_eq!(wim.is_running(), true); + assert!(wim.state.lock().await.shutdown_tx.is_some()); assert!(wim.state.lock().await.signed_payload.is_none()); + + // terminate the server and make sure result is ok + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn payload_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9091"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.call_data, vec![1, 2, 3]); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn submit_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9092"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/submit", addr)) + .json(&"0xDEADBEEF") + .send() + .await + .expect("Failed to submit payload") + .json::() + .await + .expect("Failed to parse JSON response"); + + assert_eq!(response, json!({"status": "success"})); + assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn terminate_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9093"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + + assert_eq!(wim.is_running(), true); + wim.terminate().await; + wait().await; + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_string_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9094"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let actual_payload = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_payload, TEST_HTML); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_dir_works() { + use std::fs; + use tempfile::tempdir; + + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9095"; + + let temp_dir = tempdir().expect("Failed to create temp directory"); + let index_file_path = temp_dir.path().join("index.html"); + + let test_html = "Hello, world from Directory!"; + fs::write(&index_file_path, test_html).expect("Failed to write index.html"); + + let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let actual_payload = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_payload, test_html); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn large_payload_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9096"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; + + let expected_payload = TransactionData { + chain_rpc: "localhost:9944".to_string(), + call_data: call_data_5mb.clone(), + }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.call_data, call_data_5mb); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn new_fails_on_conflicting_address() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9097"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + assert_eq!(wim.is_running(), true); + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let wim_conflict = + WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + assert_eq!(wim_conflict.is_running(), false); + let task_result = wim_conflict.task_handle.await.unwrap(); + match task_result { + Err(e) => assert!(e + .to_string() + .starts_with(&format!("Failed to bind to {}: Address already in use", addr))), + Ok(_) => panic!("Expected error, but task succeeded"), + } } } From 9bf681552ed9d2fff9d336966331ff44234ac4e4 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 18:09:28 -0700 Subject: [PATCH 070/143] feat(wallet-integration): two new routes: error and terminate --- crates/pop-cli/src/wallet_integration.rs | 103 ++++++++++++++++++++--- 1 file changed, 92 insertions(+), 11 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index bdf910aa..fa980ae7 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -44,6 +44,7 @@ pub struct StateHandler { shutdown_tx: Option>, // signed payload received from UI. pub signed_payload: Option, + pub error: Option, } /// Manages the wallet integration for secure signing of transactions. @@ -79,8 +80,11 @@ impl WalletIntegrationManager { // channel to signal shutdown let (tx, rx) = oneshot::channel(); - let state = - Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + let state = Arc::new(Mutex::new(StateHandler { + shutdown_tx: Some(tx), + signed_payload: None, + error: None, + })); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -173,7 +177,7 @@ mod routes { /// Receives the signed payload from the wallet. /// Will signal for shutdown on success. - pub(super) async fn handle_submit( + pub(super) async fn submit_handler( State(state): State>>, Json(payload): Json, ) -> Json { @@ -189,6 +193,23 @@ mod routes { // graceful shutdown ensures response is sent before shutdown. Json(json!({"status": "success"})) } + + /// Receives an error message from the wallet. + pub(super) async fn error_handler( + State(state): State>>, + Json(error): Json, + ) { + let mut state = state.lock().await; + state.error = Some(error); + } + + /// Allows the server to be terminated from the frontend. + pub(super) async fn terminate_handler(State(state): State>>) { + let mut state = state.lock().await; + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } + } } /// Serves static files from a directory. @@ -253,7 +274,7 @@ mod tests { } #[tokio::test] - async fn payload_works() { + async fn payload_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9091"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -279,7 +300,7 @@ mod tests { } #[tokio::test] - async fn submit_works() { + async fn submit_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9092"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -309,9 +330,69 @@ mod tests { } #[tokio::test] - async fn terminate_works() { + async fn error_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9093"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/error", addr)) + .json(&"an error occurred") + .send() + .await + .expect("Failed to submit error") + .text() + .await + .expect("Failed to parse response"); + + // no response expected + assert_eq!(response.len(), 0); + assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); + assert_eq!(wim.is_running(), true); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn terminate_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9094"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/terminate", addr)) + .send() + .await + .expect("Failed to terminate") + .text() + .await + .expect("Failed to parse response"); + + // no response expected + assert_eq!(response.len(), 0); + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn wallet_terminate_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9095"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -331,7 +412,7 @@ mod tests { #[tokio::test] async fn frontend_from_string_works() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9094"; + let addr = "127.0.0.1:9096"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let expected_payload = @@ -358,7 +439,7 @@ mod tests { use tempfile::tempdir; // offset port per test to avoid conflicts - let addr = "127.0.0.1:9095"; + let addr = "127.0.0.1:9097"; let temp_dir = tempdir().expect("Failed to create temp directory"); let index_file_path = temp_dir.path().join("index.html"); @@ -388,7 +469,7 @@ mod tests { #[tokio::test] async fn large_payload_works() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9096"; + let addr = "127.0.0.1:9098"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; @@ -416,9 +497,9 @@ mod tests { } #[tokio::test] - async fn new_fails_on_conflicting_address() { + async fn new_with_conflicting_address_fails() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9097"; + let addr = "127.0.0.1:9099"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let expected_payload = From fa7b430ef462492a6bca2efd8ac276fce9d652ae Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 14:51:56 -0700 Subject: [PATCH 071/143] refactor(wallet-integration): consistent comments, remove unnecessary code in tests --- crates/pop-cli/src/wallet_integration.rs | 128 +++++++++++------------ 1 file changed, 59 insertions(+), 69 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index fa980ae7..fc2d7597 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -20,7 +20,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(Deserialize))] +#[cfg_attr(test, derive(Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -41,20 +41,23 @@ impl TransactionData { /// - Stores the signed payload received from the wallet. #[derive(Default)] pub struct StateHandler { + /// Channel to signal shutdown to the main app. shutdown_tx: Option>, - // signed payload received from UI. + /// Received from UI. pub signed_payload: Option, - pub error: Option, + /// Holds a single error message. + /// Only method for consuming error removes (takes) it from state. + error: Option, } /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { - // shared state between routes. + /// Shared state between routes. pub state: Arc>, - // node rpc address - pub addr: String, - // axum server task handle - pub task_handle: tokio::task::JoinHandle>, + /// Node rpc address. + pub rpc_url: String, + /// Web server task handle. + pub task_handle: JoinHandle>, } impl WalletIntegrationManager { @@ -72,12 +75,8 @@ impl WalletIntegrationManager { } /// Same as `new`, but allows specifying the address to bind to. - pub fn new_with_address( - frontend: F, - payload: TransactionData, - addr: &str, - ) -> Self { - // channel to signal shutdown + pub fn new_with_address(frontend: F, payload: TransactionData, rpc: &str) -> Self { + // Channel to signal shutdown. let (tx, rx) = oneshot::channel(); let state = Arc::new(Mutex::new(StateHandler { @@ -103,11 +102,11 @@ impl WalletIntegrationManager { let addr = "127.0.0.1:9090"; - // will shut down when the signed payload is received + // Will shut down when the signed payload is received. let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(&addr_owned) + let listener = tokio::net::TcpListener::bind(&rpc_owned) .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr_owned, e))?; + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", rpc_owned, e))?; axum::serve(listener, app) .with_graceful_shutdown(async move { @@ -118,12 +117,11 @@ impl WalletIntegrationManager { Ok(()) }); - Self { state, addr: addr.to_string(), task_handle } + Self { state, rpc_url: rpc.to_string(), task_handle } } /// Signals the wallet integration server to shut down. pub async fn terminate(&mut self) { - // signal shutdown if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { let _ = shutdown_tx.send(()); } @@ -133,6 +131,11 @@ impl WalletIntegrationManager { pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } + + /// Takes the error from the state if it exists. + pub async fn take_error(&mut self) -> Option { + self.state.lock().await.error.take() + } } mod routes { @@ -146,8 +149,7 @@ mod routes { }; use serde_json::json; - // must be public for axum - pub struct ApiError(Error); + pub(super) struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -169,7 +171,7 @@ mod routes { pub(super) async fn get_payload_handler( State(payload): State>, ) -> Result, ApiError> { - // error should never occur. + // Error should never occur. let json_payload = serde_json::to_value(&*payload) .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; Ok(Json(json_payload)) @@ -182,7 +184,7 @@ mod routes { Json(payload): Json, ) -> Json { let mut state = state.lock().await; - state.signed_payload = Some(payload.clone()); + state.signed_payload = Some(payload); // Signal shutdown. // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. @@ -190,7 +192,7 @@ mod routes { let _ = shutdown_tx.send(()); } - // graceful shutdown ensures response is sent before shutdown. + // Graceful shutdown ensures response is sent before shutdown. Json(json!({"status": "success"})) } @@ -251,24 +253,26 @@ mod tests { const TEST_HTML: &str = "Hello, world!"; - // wait for server to launch + // Wait for server to launch. async fn wait() { tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; } + fn default_payload() -> TransactionData { + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] } + } + #[tokio::test] async fn new_works() { let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let mut wim = WalletIntegrationManager::new(frontend, payload); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - assert_eq!(wim.addr, "127.0.0.1:9090"); + assert_eq!(wim.rpc_url, "127.0.0.1:9090"); assert_eq!(wim.is_running(), true); assert!(wim.state.lock().await.shutdown_tx.is_some()); assert!(wim.state.lock().await.signed_payload.is_none()); - // terminate the server and make sure result is ok + // Terminate the server and make sure result is ok. wim.terminate().await; assert!(wim.task_handle.await.is_ok()); } @@ -281,10 +285,11 @@ mod tests { let expected_payload = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let actual_payload = reqwest::get(&format!("{}/payload", addr)) .await .expect("Failed to get payload") @@ -292,8 +297,8 @@ mod tests { .await .expect("Failed to parse payload"); - assert_eq!(actual_payload.chain_rpc, "localhost:9944"); - assert_eq!(actual_payload.call_data, vec![1, 2, 3]); + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); + assert_eq!(actual_payload.call_data, expected_payload.call_data); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -305,12 +310,10 @@ mod tests { let addr = "127.0.0.1:9092"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/submit", addr)) .json(&"0xDEADBEEF") @@ -335,12 +338,10 @@ mod tests { let addr = "127.0.0.1:9093"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/error", addr)) .json(&"an error occurred") @@ -366,12 +367,10 @@ mod tests { let addr = "127.0.0.1:9094"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/terminate", addr)) .send() @@ -381,7 +380,7 @@ mod tests { .await .expect("Failed to parse response"); - // no response expected + // No response expected. assert_eq!(response.len(), 0); assert_eq!(wim.is_running(), false); @@ -396,9 +395,7 @@ mod tests { let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); assert_eq!(wim.is_running(), true); wim.terminate().await; @@ -415,19 +412,17 @@ mod tests { let addr = "127.0.0.1:9096"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let actual_payload = reqwest::get(&format!("http://{}", addr)) + let actual_content = reqwest::get(&format!("http://{}", addr)) .await .expect("Failed to get web page") .text() .await .expect("Failed to parse page"); - assert_eq!(actual_payload, TEST_HTML); + assert_eq!(actual_content, TEST_HTML); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -448,19 +443,17 @@ mod tests { fs::write(&index_file_path, test_html).expect("Failed to write index.html"); let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let actual_payload = reqwest::get(&format!("http://{}", addr)) + let actual_content = reqwest::get(&format!("http://{}", addr)) .await .expect("Failed to get web page") .text() .await .expect("Failed to parse page"); - assert_eq!(actual_payload, test_html); + assert_eq!(actual_content, test_html); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -478,10 +471,11 @@ mod tests { chain_rpc: "localhost:9944".to_string(), call_data: call_data_5mb.clone(), }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let actual_payload = reqwest::get(&format!("{}/payload", addr)) .await .expect("Failed to get payload") @@ -489,7 +483,7 @@ mod tests { .await .expect("Failed to parse payload"); - assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, call_data_5mb); wim.terminate().await; @@ -502,18 +496,14 @@ mod tests { let addr = "127.0.0.1:9099"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; assert_eq!(wim.is_running(), true); let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; let wim_conflict = - WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; assert_eq!(wim_conflict.is_running(), false); From e0d5711a13e06321d131b6f84eac3d8d9095b453 Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Fri, 29 Nov 2024 15:16:00 +0100 Subject: [PATCH 072/143] feat: guide user to call a contract (#306) * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: parse user inputs for Option arguments (#332) * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> * test: fix unit test * feat: allow users to specify custom contract metadata files (#347) * chore: allow the user specify the metadata file to call a contract * test: unit test to parse metadata from a file * docs: fix docs * refactor: ensure_contract_built after user input path * fix: call contract when metadata file * fix: remove default_input in contract address * docs: rename metadata with artifact * fix: panic at has_contract_been_built * fix: clippy * refactor: keep ensure_contract_built as a CallContractCommand function * fix: ensure_contract_built * docs: improve comments * fix: feedback and include wasm file for testing * fix: clippy * chore: after build contract prompt the user if the contract is already deployed * refactor: ensure_contract_built * refactor: has_contract_been_built function * docs: fix comments and messages * refactor: get_messages and get_constructors * test: fix unit tests call ui --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> --- Cargo.toml | 1 + crates/pop-cli/src/cli.rs | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 3effb7c2..38a3870e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,6 +68,7 @@ walkdir = "2.5" indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" +scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.18" diff --git a/crates/pop-cli/src/cli.rs b/crates/pop-cli/src/cli.rs index 6c6bb3bc..3dae776f 100644 --- a/crates/pop-cli/src/cli.rs +++ b/crates/pop-cli/src/cli.rs @@ -146,6 +146,43 @@ impl traits::Confirm for Confirm { fn interact(&mut self) -> Result { self.0.interact() } + /// Sets the initially selected value. + fn initial_value(mut self, initial_value: bool) -> Self { + self.0 = self.0.initial_value(initial_value); + self + } +} + +/// A input prompt using cliclack. +struct Input(cliclack::Input); +impl traits::Input for Input { + /// Sets the default value for the input. + fn default_input(mut self, value: &str) -> Self { + self.0 = self.0.default_input(value); + self + } + /// Starts the prompt interaction. + fn interact(&mut self) -> Result { + self.0.interact() + } + /// Sets the placeholder (hint) text for the input. + fn placeholder(mut self, placeholder: &str) -> Self { + self.0 = self.0.placeholder(placeholder); + self + } + /// Sets whether the input is required. + fn required(mut self, required: bool) -> Self { + self.0 = self.0.required(required); + self + } + /// Sets a validation callback for the input that is called when the user submits. + fn validate( + mut self, + validator: impl Fn(&String) -> std::result::Result<(), &'static str> + 'static, + ) -> Self { + self.0 = self.0.validate(validator); + self + } } /// A input prompt using cliclack. From 63fcb22bb9da6c58917e047fe9ef60ee86c731db Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Tue, 3 Dec 2024 12:35:49 +0100 Subject: [PATCH 073/143] fix: support new substrate-contracts-node structure and stabilize integration tests (#360) * fix: parse new structure substrate-contracts-node * fix: paseo+coretime integration test * fix: sourcing latest version substrate-contracts-node * refactor: set_executable_permission function * fix: clippy * chore: CI configuration * test: specify port in run_contracts_node * fix: use random ports instead of hardcoded ones --- crates/pop-common/src/lib.rs | 10 ++++++---- crates/pop-contracts/src/call.rs | 2 +- crates/pop-contracts/src/lib.rs | 2 +- crates/pop-contracts/src/node/mod.rs | 2 ++ crates/pop-contracts/src/testing.rs | 10 ++++++++++ crates/pop-contracts/src/up.rs | 2 +- crates/pop-parachains/src/build.rs | 4 ++-- 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/crates/pop-common/src/lib.rs b/crates/pop-common/src/lib.rs index 70dbcc8f..8e3022f2 100644 --- a/crates/pop-common/src/lib.rs +++ b/crates/pop-common/src/lib.rs @@ -49,16 +49,18 @@ pub fn target() -> Result<&'static str, Error> { } match ARCH { - "aarch64" => + "aarch64" => { return match OS { "macos" => Ok("aarch64-apple-darwin"), _ => Ok("aarch64-unknown-linux-gnu"), - }, - "x86_64" | "x86" => + } + }, + "x86_64" | "x86" => { return match OS { "macos" => Ok("x86_64-apple-darwin"), _ => Ok("x86_64-unknown-linux-gnu"), - }, + } + }, &_ => {}, } Err(Error::UnsupportedPlatform { arch: ARCH, os: OS }) diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 03effcb0..546415ec 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -179,7 +179,7 @@ mod tests { use crate::{ contracts_node_generator, dry_run_gas_estimate_instantiate, errors::Error, instantiate_smart_contract, mock_build_process, new_environment, run_contracts_node, - set_up_deployment, UpOpts, + set_up_deployment, testing::find_free_port, UpOpts, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 69897be3..e775d7f0 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,7 @@ pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; -pub use testing::{mock_build_process, new_environment}; +pub use testing::{find_free_port, mock_build_process, new_environment}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_contract_signed, diff --git a/crates/pop-contracts/src/node/mod.rs b/crates/pop-contracts/src/node/mod.rs index be5680a0..7818d53d 100644 --- a/crates/pop-contracts/src/node/mod.rs +++ b/crates/pop-contracts/src/node/mod.rs @@ -166,6 +166,8 @@ fn release_directory_by_target(tag: Option<&str>) -> Result<&'static str, Error> #[cfg(test)] mod tests { + use crate::testing::find_free_port; + use super::*; use anyhow::{Error, Result}; use pop_common::find_free_port; diff --git a/crates/pop-contracts/src/testing.rs b/crates/pop-contracts/src/testing.rs index 6a8abfcd..c10bd4e5 100644 --- a/crates/pop-contracts/src/testing.rs +++ b/crates/pop-contracts/src/testing.rs @@ -4,6 +4,7 @@ use crate::{create_smart_contract, Contract}; use anyhow::Result; use std::{ fs::{copy, create_dir}, + net::TcpListener, path::Path, }; @@ -37,3 +38,12 @@ where copy(metadata_file, target_contract_dir.join("ink/testing.json"))?; Ok(()) } + +/// Finds an available port by binding to port 0 and retrieving the assigned port. +pub fn find_free_port() -> u16 { + TcpListener::bind("127.0.0.1:0") + .expect("Failed to bind to an available port") + .local_addr() + .expect("Failed to retrieve local address") + .port() +} diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 66dd5498..b731b1c3 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -381,7 +381,7 @@ mod tests { use super::*; use crate::{ contracts_node_generator, errors::Error, mock_build_process, new_environment, - run_contracts_node, + run_contracts_node, testing::find_free_port, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; diff --git a/crates/pop-parachains/src/build.rs b/crates/pop-parachains/src/build.rs index 1e369f37..1cc869e3 100644 --- a/crates/pop-parachains/src/build.rs +++ b/crates/pop-parachains/src/build.rs @@ -51,8 +51,8 @@ pub fn is_supported(path: Option<&Path>) -> Result { const DEPENDENCIES: [&str; 4] = ["cumulus-client-collator", "cumulus-primitives-core", "parachains-common", "polkadot-sdk"]; Ok(DEPENDENCIES.into_iter().any(|d| { - manifest.dependencies.contains_key(d) || - manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) + manifest.dependencies.contains_key(d) + || manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) })) } From 0f3211099145dc8fb7c245b27a0038ff907fda9a Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Tue, 10 Dec 2024 18:28:29 +0100 Subject: [PATCH 074/143] feat: guide user to call a parachain (#316) * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README * feat: pop call parachain prototype * feat: dispaly arguments of extrinsic * refactor: structure similar to pop call contract * feat: parse all values for extrinsic/storage * refactor: signer in common * refactor: improve messages * feat: call parachain ui * fix: calls working * refactor: remove unused code * refactor: remove unused code * refactor: various fixes * refactor: various fixes * feat: add option to include params from command line * refactor: clean docs and refactor code * fix: tests * refactor: parse all the metadata again * refactor: reorganize and clean metadata functions * feat: display specific use cases to the user * refactor: predefined actions * fix: various fixes * fix: error message not supported for complex types * refactor: parse all metadata, including parameters at once * refactor: clean docs and move code * fix: format_type * fix: parse user inputs for Option arguments (#332) * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> * test: fix unit test * refactor: clean the way to parse and prompt parameters * feat: add Purchase on-demand coretime use cases * test: add skip_confirm, move when prompt for the signer and create the integration test * test: call parachain ui unit test * refactor: separate structs * fmt * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * fix: solve conflicts and unit tests (#359) * test: call parachain ui unit test * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * fix: conflicts and unit tests * test: remove test and improve test * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * feat: pop call parachain prototype * feat: dispaly arguments of extrinsic * refactor: structure similar to pop call contract * feat: parse all values for extrinsic/storage * refactor: signer in common * refactor: improve messages * feat: call parachain ui * fix: calls working * refactor: remove unused code * refactor: remove unused code * refactor: various fixes * refactor: various fixes * feat: add option to include params from command line * refactor: clean docs and refactor code * fix: tests * refactor: parse all the metadata again * refactor: reorganize and clean metadata functions * feat: display specific use cases to the user * refactor: predefined actions * fix: various fixes * fix: error message not supported for complex types * refactor: parse all metadata, including parameters at once * refactor: clean docs and move code * fix: format_type * test: fix unit test * refactor: clean the way to parse and prompt parameters * feat: add Purchase on-demand coretime use cases * test: add skip_confirm, move when prompt for the signer and create the integration test * test: call parachain ui unit test * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * feat: repeat call only if using guide UI * fix: clippy * refactor: various improvements * chore: parser for pallet and extrinsic input names * refactor: only move to pop_common the needed functions * refactor: improve test, docs and errors * test: fix unit tests * fix: reset_for_new_call when extrinisc is not supported * fix: build with parachain features * test: wait before call parachain in integration test * docs: minor improvements * test: migrate find_free_port to pop_common * test: fix increase waiting time * test: remove unnecesary test case * refactor: rename api with client * refactor: naming and docs * docs: improve docs and missing comments * test: remove unnecesary verbose * test: find_free_port * docs: improve parameter documentation * test: add missing test to sign_and_submit_extrinsic * fix: apply feedback from auxiliar PRs, remove unnecesary clones * docs: public modules * refactor: clean unused params * fix: mark all extrinsics that uses calls as parameter as unsupported * test: fix expect_select * docs: improve documentation * feat: submit extrinsic from call_data (#348) * feat: submit extrinsic from call_data * test: unit test for initialize_api_client * test: unit test for send_extrinsic_from_call_data * fix: CallData struct * fix: skip_confirm for send_extrinsic_from_call_data * chore: clippy * chore: fmt * refactor: minor doc and naming changes * refactor: remove unnecesary clones and return early when submit_extrinsic_from_call_data * chore: fmt * refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data * feat: parse files when the argument values are very big (#363) * feat: parse files when the argument values are very big * test: unit test * chore: fmt * feat: file logic using the command line * fix: sequence arguments * test: fix unit test * refactor: remove prompting the user if input is file or value * refactor: parse_extrinsic_arguments * fix: CI deny * refactor: reorder Param derive macros * test: fix decode_call_data_works unit test * refactor: use Default derive macro and define constants for test values (#366) * feat: parse files when the argument values are very big * chore: fmt * feat: file logic using the command line * fix: sequence arguments * refactor: parse_extrinsic_arguments * refactor: use Default in pop_parachain structs * refactor: use Default in CallParachainCommand struct * refactor: use constant in tests * chore: fmt and small refactor * feat: flag sudo to wrap extrinsic (#349) * feat: submit extrinsic from call_data * test: unit test for initialize_api_client * feat: wrap call into a sudo call * test: add unit test to the new logic * fix: skip_confirm for send_extrinsic_from_call_data * chore: clippy * docs: renaming and improve docs * test: use force_transfer for testing * fix: check if sudo exist before prompt the user * chore: fmt * chore: fmt * test: fix wrong assert * docs: improve comments and output messages * refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data * fix: test construct_sudo_extrinsic_works and formatting * refactor: various fixes and improvements (#367) * refactor: sort pallets/dispatchables * refactor: remove unnecessary async * fix: resolve issue after rebase * fix: more async issues after rebase * refactor: use single constant * refactor: terminology (#368) * refactor: terminology * refactor: simply pallet/function relationship * fix: amend call_data conflicts after refactor * refactor: improvements (#370) * fix: add missing short arg option * refactor: note that extrinsic wait includes finalization * refactor: remove clones * style: formatting * refactor: make file prompt more generic * refactor: add missing license headers * style: formatting * docs: comments * docs: comments * docs: comments * refactor: reuse existing metadata * refactor: minimise clones * docs: comments * refactor: naming * docs: fix parameter doc comments * refactor: address clippy warnings * refactor: rename parachain with chain as the primary command and retain parachain as an alias (#373) * refactor: rename parachain with chain in visible messages * refactor: rename parachain with chain internal code * chore: solve fmt after rebase * refactor: small fix, use alias instead aliases * refactor: rename CallParachain struct into Call --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> Co-authored-by: Daanvdplas --- Cargo.lock | 114 +++++++++++++++++++--- Cargo.toml | 1 + crates/pop-cli/src/commands/call/chain.rs | 40 ++++---- crates/pop-contracts/src/call.rs | 2 +- crates/pop-contracts/src/lib.rs | 2 +- crates/pop-contracts/src/node/mod.rs | 2 - crates/pop-contracts/src/testing.rs | 10 -- crates/pop-contracts/src/up.rs | 2 +- 8 files changed, 128 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fee5cc17..02c4e186 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3907,12 +3907,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -4769,6 +4780,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -7363,7 +7380,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.5.1", + "rand_core 0.6.4", "serde", "unicode-normalization", ] @@ -11789,6 +11806,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -12261,12 +12288,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.13" @@ -12330,9 +12351,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -12346,6 +12367,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -13151,6 +13184,18 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -13323,6 +13368,27 @@ dependencies = [ "synstructure 0.13.1", ] +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -13365,6 +13431,28 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "zip" version = "2.2.0" diff --git a/Cargo.toml b/Cargo.toml index 38a3870e..ffec8bfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,6 +69,7 @@ indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } +scale-value = { version = "0.16.2", default-features = false, features = ["from-string", "parser-ss58"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.18" diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 9751b7dd..0179f1b8 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -100,8 +100,9 @@ impl CallChainCommand { break; } - if !prompt_to_repeat_call || - !cli.confirm("Do you want to perform another call?") + if !prompt_to_repeat_call + || !cli + .confirm("Do you want to perform another call?") .initial_value(false) .interact()? { @@ -200,8 +201,9 @@ impl CallChainCommand { // Resolve who is signing the extrinsic. let suri = match self.suri.as_ref() { Some(suri) => suri.clone(), - None => - cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, + None => { + cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + }, }; return Ok(Call { @@ -228,8 +230,9 @@ impl CallChainCommand { None => &cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, }; cli.info(format!("Encoded call data: {}", call_data))?; - if !self.skip_confirm && - !cli.confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm + && !cli + .confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { @@ -257,7 +260,7 @@ impl CallChainCommand { // execute the call via `sudo`. fn configure_sudo(&mut self, chain: &Chain, cli: &mut impl Cli) -> Result<()> { match find_dispatchable_by_name(&chain.pallets, "Sudo", "sudo") { - Ok(_) => + Ok(_) => { if !self.sudo { self.sudo = cli .confirm( @@ -265,14 +268,16 @@ impl CallChainCommand { ) .initial_value(false) .interact()?; - }, - Err(_) => + } + }, + Err(_) => { if self.sudo { cli.warning( "NOTE: sudo is not supported by the chain. Ignoring `--sudo` flag.", )?; self.sudo = false; - }, + } + }, } Ok(()) } @@ -287,11 +292,11 @@ impl CallChainCommand { // Function to check if all required fields are specified. fn requires_user_input(&self) -> bool { - self.pallet.is_none() || - self.function.is_none() || - self.args.is_empty() || - self.url.is_none() || - self.suri.is_none() + self.pallet.is_none() + || self.function.is_none() + || self.args.is_empty() + || self.url.is_none() + || self.suri.is_none() } /// Replaces file arguments with their contents, leaving other arguments unchanged. @@ -371,8 +376,9 @@ impl Call { tx: DynamicPayload, cli: &mut impl Cli, ) -> Result<()> { - if !self.skip_confirm && - !cli.confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm + && !cli + .confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 546415ec..03effcb0 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -179,7 +179,7 @@ mod tests { use crate::{ contracts_node_generator, dry_run_gas_estimate_instantiate, errors::Error, instantiate_smart_contract, mock_build_process, new_environment, run_contracts_node, - set_up_deployment, testing::find_free_port, UpOpts, + set_up_deployment, UpOpts, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index e775d7f0..69897be3 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,7 @@ pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; -pub use testing::{find_free_port, mock_build_process, new_environment}; +pub use testing::{mock_build_process, new_environment}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_contract_signed, diff --git a/crates/pop-contracts/src/node/mod.rs b/crates/pop-contracts/src/node/mod.rs index 7818d53d..be5680a0 100644 --- a/crates/pop-contracts/src/node/mod.rs +++ b/crates/pop-contracts/src/node/mod.rs @@ -166,8 +166,6 @@ fn release_directory_by_target(tag: Option<&str>) -> Result<&'static str, Error> #[cfg(test)] mod tests { - use crate::testing::find_free_port; - use super::*; use anyhow::{Error, Result}; use pop_common::find_free_port; diff --git a/crates/pop-contracts/src/testing.rs b/crates/pop-contracts/src/testing.rs index c10bd4e5..6a8abfcd 100644 --- a/crates/pop-contracts/src/testing.rs +++ b/crates/pop-contracts/src/testing.rs @@ -4,7 +4,6 @@ use crate::{create_smart_contract, Contract}; use anyhow::Result; use std::{ fs::{copy, create_dir}, - net::TcpListener, path::Path, }; @@ -38,12 +37,3 @@ where copy(metadata_file, target_contract_dir.join("ink/testing.json"))?; Ok(()) } - -/// Finds an available port by binding to port 0 and retrieving the assigned port. -pub fn find_free_port() -> u16 { - TcpListener::bind("127.0.0.1:0") - .expect("Failed to bind to an available port") - .local_addr() - .expect("Failed to retrieve local address") - .port() -} diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index b731b1c3..66dd5498 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -381,7 +381,7 @@ mod tests { use super::*; use crate::{ contracts_node_generator, errors::Error, mock_build_process, new_environment, - run_contracts_node, testing::find_free_port, + run_contracts_node, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; From 344be6bc940b31bc45b415e620d8c18c34dca560 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 16:38:36 -0700 Subject: [PATCH 075/143] feat(wallet-integration): server and API (#362) * feat(wallet-integration): implement server and API * feat(wallet-integration): add a few tests to server. Needs more * refactor(wallet-integration): just use call_data, remove data types * feat(wallet-integration): add frontend type for flexible serving * feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method * refactor(wallet-integration): move to module with pop-cli crate * feat(wallet-integration): server-side error handling, update port to 9090 * refactor(wallet-integration): restructure server for easier use in thread * fix(wallet-integration): remove invalid fn `finish` * docs(wallet-integration): inline comments * test(wallet-integration): unit tests for wallet-integration server. Add new frontend type * feat(wallet-integration): two new routes: error and terminate * refactor(wallet-integration): consistent comments, remove unnecessary code in tests * feat: add TransactionData::new * refactor(wallet-integration: shutdown channel error handling, terminate helper, take_error and TranscationData::new tests * chore: clippy warning --- crates/pop-cli/src/wallet_integration.rs | 90 ++++++++++++++++-------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index fc2d7597..2674ff6b 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -121,10 +121,8 @@ impl WalletIntegrationManager { } /// Signals the wallet integration server to shut down. - pub async fn terminate(&mut self) { - if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + pub async fn terminate(&mut self) -> anyhow::Result<()> { + terminate_helper(&self.state).await } /// Checks if the server task is still running. @@ -139,7 +137,7 @@ impl WalletIntegrationManager { } mod routes { - use super::{Arc, Mutex, StateHandler, TransactionData}; + use super::{terminate_helper, Arc, Mutex, StateHandler, TransactionData}; use anyhow::Error; use axum::{ extract::State, @@ -182,18 +180,17 @@ mod routes { pub(super) async fn submit_handler( State(state): State>>, Json(payload): Json, - ) -> Json { - let mut state = state.lock().await; - state.signed_payload = Some(payload); - + ) -> Result, ApiError> { // Signal shutdown. - // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + let res = terminate_helper(&state).await; + + let mut state_locked = state.lock().await; + state_locked.signed_payload = Some(payload); + + res?; // Graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success"})) + Ok(Json(json!({"status": "success"}))) } /// Receives an error message from the wallet. @@ -206,12 +203,20 @@ mod routes { } /// Allows the server to be terminated from the frontend. - pub(super) async fn terminate_handler(State(state): State>>) { - let mut state = state.lock().await; - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + pub(super) async fn terminate_handler( + State(state): State>>, + ) -> Result<(), ApiError> { + Ok(terminate_helper(&state).await?) + } +} + +async fn terminate_helper(handle: &Arc>) -> anyhow::Result<()> { + if let Some(shutdown_tx) = handle.lock().await.shutdown_tx.take() { + shutdown_tx + .send(()) + .map_err(|_| anyhow::anyhow!("Failed to send shutdown signal"))?; } + Ok(()) } /// Serves static files from a directory. @@ -255,7 +260,7 @@ mod tests { // Wait for server to launch. async fn wait() { - tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; } fn default_payload() -> TransactionData { @@ -273,10 +278,34 @@ mod tests { assert!(wim.state.lock().await.signed_payload.is_none()); // Terminate the server and make sure result is ok. - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail."); assert!(wim.task_handle.await.is_ok()); } + #[test] + fn new_transaction_data_works() { + let chain_rpc = "localhost:9944".to_string(); + let call_data = vec![1, 2, 3]; + let transaction_data = TransactionData::new(chain_rpc.clone(), call_data.clone()); + + assert_eq!(transaction_data.chain_rpc, chain_rpc); + assert_eq!(transaction_data.call_data, call_data); + } + + #[tokio::test] + async fn take_error_works() { + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); + + assert_eq!(wim.take_error().await, None); + + let error = "An error occurred".to_string(); + wim.state.lock().await.error = Some(error.clone()); + + let taken_error = wim.take_error().await; + assert_eq!(taken_error, Some(error)); + } + #[tokio::test] async fn payload_handler_works() { // offset port per test to avoid conflicts @@ -300,7 +329,7 @@ mod tests { assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, expected_payload.call_data); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -328,7 +357,7 @@ mod tests { assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); assert_eq!(wim.is_running(), false); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -357,7 +386,7 @@ mod tests { assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); assert_eq!(wim.is_running(), true); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -367,7 +396,7 @@ mod tests { let addr = "127.0.0.1:9094"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; let addr = format!("http://{}", wim.rpc_url); @@ -384,7 +413,6 @@ mod tests { assert_eq!(response.len(), 0); assert_eq!(wim.is_running(), false); - wim.terminate().await; assert!(wim.task_handle.await.is_ok()); } @@ -398,11 +426,11 @@ mod tests { let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); assert_eq!(wim.is_running(), true); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); wait().await; assert_eq!(wim.is_running(), false); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -424,7 +452,7 @@ mod tests { assert_eq!(actual_content, TEST_HTML); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -455,7 +483,7 @@ mod tests { assert_eq!(actual_content, test_html); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -486,7 +514,7 @@ mod tests { assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, call_data_5mb); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail."); assert!(wim.task_handle.await.is_ok()); } From 1a5893f0ef0bd967a13cc345580dba357ecf4eaa Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 13:36:16 -0700 Subject: [PATCH 076/143] feat(up-contract): get call data for upload-only and pass to wallet integration -- PoC --- crates/pop-contracts/src/up.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 66dd5498..c8b9e1ec 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -385,7 +385,8 @@ mod tests { }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; - use std::{env, process::Command, time::Duration}; + use reqwest::get; + use std::{env, fs, process::Command, time::Duration}; use tokio::time::sleep; use url::Url; From 4446fdb41b83365a73a5ce2176ec8c903320ee83 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 00:05:06 -0700 Subject: [PATCH 077/143] chore: use git branch for cargo contract --- Cargo.lock | 2 +- Cargo.toml | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 02c4e186..74cd0173 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7380,7 +7380,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.6.4", + "rand_core 0.5.1", "serde", "unicode-normalization", ] diff --git a/Cargo.toml b/Cargo.toml index ffec8bfe..3effb7c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,8 +68,6 @@ walkdir = "2.5" indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" -scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } -scale-value = { version = "0.16.2", default-features = false, features = ["from-string", "parser-ss58"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.18" From a92b6f07530305084fdb1b28e5d30d4ddb265111 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 10 Dec 2024 17:11:16 -0700 Subject: [PATCH 078/143] feat(up-contract): handle subxt events better, various improvements --- crates/pop-cli/src/commands/up/contract.rs | 70 ++++++++++++++++------ crates/pop-cli/src/wallet_integration.rs | 54 ++++++++--------- crates/pop-contracts/src/up.rs | 62 +++++++++++-------- 3 files changed, 115 insertions(+), 71 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 92dbe1d4..9538a877 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -515,24 +515,58 @@ mod tests { Ok(()) } - #[test] - fn has_contract_been_built_works() -> anyhow::Result<()> { - let temp_dir = tempfile::tempdir()?; - let path = temp_dir.path(); - - // Standard rust project - let name = "hello_world"; - cmd("cargo", ["new", name]).dir(&path).run()?; - let contract_path = path.join(name); - assert!(!has_contract_been_built(Some(&contract_path))); - - cmd("cargo", ["build"]).dir(&contract_path).run()?; - // Mock build directory - fs::create_dir(&contract_path.join("target/ink"))?; - assert!(!has_contract_been_built(Some(&path.join(name)))); - // Create a mocked .contract file inside the target directory - File::create(contract_path.join(format!("target/ink/{}.contract", name)))?; - assert!(has_contract_been_built(Some(&path.join(name)))); + // TODO: delete this test. + // This is a helper test for an actual running pop CLI. + // It can serve as the "frontend" to query the payload, sign it + // and submit back to the CLI. + #[ignore] + #[tokio::test] + async fn sign_call_data() -> anyhow::Result<()> { + use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; + // This struct implements the [`Payload`] trait and is used to submit + // pre-encoded SCALE call data directly, without the dynamic construction of transactions. + struct CallData(Vec); + + impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } + } + + use subxt_signer::sr25519::dev; + let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + let url = "ws://localhost:9944"; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = + subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let signer = dev::alice(); + + let payload = CallData(payload.call_data()); + let ext_params = Params::new().build(); + let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; + + let response = reqwest::Client::new() + .post(&format!("{}/submit", "http://localhost:9090")) + .json(&to_hex(signed.encoded())) + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse JSON response"); + Ok(()) } diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 2674ff6b..076aa817 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -333,33 +333,33 @@ mod tests { assert!(wim.task_handle.await.is_ok()); } - #[tokio::test] - async fn submit_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9092"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/submit", addr)) - .json(&"0xDEADBEEF") - .send() - .await - .expect("Failed to submit payload") - .json::() - .await - .expect("Failed to parse JSON response"); - - assert_eq!(response, json!({"status": "success"})); - assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } + // #[tokio::test] + // async fn submit_handler_works() { + // // offset port per test to avoid conflicts + // let addr = "127.0.0.1:9092"; + // let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + // let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + // wait().await; + + // let addr = format!("http://{}", wim.rpc_url); + // let response = reqwest::Client::new() + // .post(&format!("{}/submit", addr)) + // .json(&"0xDEADBEEF") + // .send() + // .await + // .expect("Failed to submit payload") + // .text() + // .await + // .expect("Failed to parse response"); + + // assert_eq!(response, json!({"status": "success"})); + // assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + // assert_eq!(wim.is_running(), false); + + // wim.terminate().await.expect("Termination should not fail"); + // assert!(wim.task_handle.await.is_ok()); + // } #[tokio::test] async fn error_handler_works() { diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index c8b9e1ec..9b343361 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -440,25 +440,30 @@ mod tests { Ok(()) } - #[tokio::test] - async fn get_payload_works() -> Result<()> { - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; - let up_opts = UpOpts { - path: Some(temp_dir.path().join("testing")), - constructor: "new".to_string(), - args: ["false".to_string()].to_vec(), - value: "1000".to_string(), - gas_limit: None, - proof_size: None, - salt: None, - url: Url::parse(CONTRACTS_NETWORK_URL)?, - suri: "//Alice".to_string(), - }; - let call_data = get_upload_payload(up_opts).await?; - // println!("{:?}", call_data); - Ok(()) - } + // #[tokio::test] + // async fn get_payload_works() -> Result<()> { + // let temp_dir = new_environment("testing")?; + // let current_dir = env::current_dir().expect("Failed to get current directory"); + // mock_build_process( + // temp_dir.path().join("testing"), + // current_dir.join("./tests/files/testing.contract"), + // current_dir.join("./tests/files/testing.json"), + // )?; + // let up_opts = UpOpts { + // path: Some(temp_dir.path().join("testing")), + // constructor: "new".to_string(), + // args: ["false".to_string()].to_vec(), + // value: "1000".to_string(), + // gas_limit: None, + // proof_size: None, + // salt: None, + // url: Url::parse(CONTRACTS_NETWORK_URL)?, + // suri: "//Alice".to_string(), + // }; + // let call_data = get_upload_payload(up_opts, CONTRACTS_NETWORK_URL).await?; + // // println!("{:?}", call_data); + // Ok(()) + // } #[tokio::test] async fn dry_run_gas_estimate_instantiate_works() -> Result<()> { @@ -617,15 +622,20 @@ mod tests { #[tokio::test] async fn get_instantiate_payload_works() -> Result<()> { - const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; - + let random_port = find_free_port(); + let localhost_url = format!("ws://127.0.0.1:{}", random_port); + let temp_dir = new_environment("testing")?; + let current_dir = env::current_dir().expect("Failed to get current directory"); + mock_build_process( + temp_dir.path().join("testing"), + current_dir.join("./tests/files/testing.contract"), + current_dir.join("./tests/files/testing.json"), + )?; let cache = temp_dir.path().join(""); let binary = contracts_node_generator(cache.clone(), None).await?; binary.source(false, &(), true).await?; - let process = run_contracts_node(binary.path(), None).await?; + let process = run_contracts_node(binary.path(), None, random_port).await?; let upload_exec = set_up_upload(UpOpts { path: Some(temp_dir.path().join("testing")), @@ -635,7 +645,7 @@ mod tests { gas_limit: None, proof_size: None, salt: None, - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), }) .await?; @@ -659,7 +669,7 @@ mod tests { gas_limit: None, proof_size: None, salt: Some(Bytes::from(vec![0x00])), - url: Url::parse(LOCALHOST_URL)?, + url: Url::parse(&localhost_url)?, suri: "//Alice".to_string(), }) .await?; From d73a9868626165b78c90ff1318aa8e3f9744fd95 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 12:02:00 +0100 Subject: [PATCH 079/143] refactor: reuse pop up logic --- crates/pop-cli/src/commands/up/contract.rs | 34 +------ crates/pop-cli/src/common/mod.rs | 1 + crates/pop-cli/src/common/wallet.rs | 101 +++++++++++++++++++++ 3 files changed, 107 insertions(+), 29 deletions(-) create mode 100644 crates/pop-cli/src/common/wallet.rs diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 9538a877..e867b0d9 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -2,7 +2,10 @@ use crate::{ cli::{traits::Cli as _, Cli}, - common::contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + common::{ + contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + wallet::wait_for_signature, + }, style::style, wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; @@ -182,7 +185,7 @@ impl UpContractCommand { }, }; - let maybe_payload = self.wait_for_signature(call_data).await?; + let maybe_payload = wait_for_signature(call_data, self.url.to_string()).await?; if let Some(payload) = maybe_payload { log::success("Signed payload received.")?; let spinner = spinner(); @@ -381,33 +384,6 @@ impl UpContractCommand { Ok((call_data, hash)) } } - - async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); - - let transaction_data = TransactionData::new(self.url.to_string(), call_data); - // starts server - let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; - - log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; - loop { - // Display error, if any. - if let Some(error) = wallet.take_error().await { - log::error(format!("Signing portal error: {error}"))?; - } - - let state = wallet.state.lock().await; - // If the payload is submitted we terminate the frontend. - if !wallet.is_running() || state.signed_payload.is_some() { - wallet.task_handle.await??; - break; - } - } - - let signed_payload = wallet.state.lock().await.signed_payload.clone(); - Ok(signed_payload) - } } impl From for UpOpts { diff --git a/crates/pop-cli/src/common/mod.rs b/crates/pop-cli/src/common/mod.rs index 1cb3ee57..4a89036e 100644 --- a/crates/pop-cli/src/common/mod.rs +++ b/crates/pop-cli/src/common/mod.rs @@ -3,3 +3,4 @@ #[cfg(feature = "contract")] pub mod contracts; pub mod helpers; +pub mod wallet; diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs new file mode 100644 index 00000000..2025bec0 --- /dev/null +++ b/crates/pop-cli/src/common/wallet.rs @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::{ + cli::{traits::Cli as _, Cli}, + wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, +}; +use cliclack::log; +use sp_core::bytes::to_hex; +use std::path::PathBuf; + +pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { + // TODO: to be addressed in future PR. Should not use FromDir (or local path). + let ui = FrontendFromDir::new(PathBuf::from( + "/Users/alexbean/Documents/react-teleport-example/dist", + )); + + let transaction_data = TransactionData::new(url, call_data); + let call_data_bytes = to_hex(&transaction_data.call_data(), false); + println!("transaction_data: {:?}", call_data_bytes); + // starts server + let mut wallet = WalletIntegrationManager::new(ui, transaction_data); + log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; + + log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; + loop { + // Display error, if any. + if let Some(error) = wallet.take_error().await { + log::error(format!("Signing portal error: {error}"))?; + } + + let state = wallet.state.lock().await; + // If the payload is submitted we terminate the frontend. + if !wallet.is_running() || state.signed_payload.is_some() { + wallet.task_handle.await??; + break; + } + } + + let signed_payload = wallet.state.lock().await.signed_payload.clone(); + Ok(signed_payload) +} + +#[cfg(test)] +mod tests { + use super::*; + use subxt::utils::to_hex; + + // TODO: delete this test. + // This is a helper test for an actual running pop CLI. + // It can serve as the "frontend" to query the payload, sign it + // and submit back to the CLI. + #[tokio::test] + async fn sign_call_data() -> anyhow::Result<()> { + use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; + // This struct implements the [`Payload`] trait and is used to submit + // pre-encoded SCALE call data directly, without the dynamic construction of transactions. + struct CallData(Vec); + + impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } + } + + use subxt_signer::sr25519::dev; + let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + let url = "ws://localhost:9944"; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = + subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let signer = dev::alice(); + + let payload = CallData(payload.call_data()); + let ext_params = Params::new().build(); + let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; + + let response = reqwest::Client::new() + .post(&format!("{}/submit", "http://localhost:9090")) + .json(&to_hex(signed.encoded())) + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse JSON response"); + + Ok(()) + } +} From cb9c0acb85ed0ce9415e4f8533365a00bc8e6145 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 14:41:09 +0100 Subject: [PATCH 080/143] chore: rebase fixes --- crates/pop-cli/src/commands/up/contract.rs | 113 --------------------- crates/pop-cli/src/common/wallet.rs | 5 +- crates/pop-cli/src/wallet_integration.rs | 1 - 3 files changed, 1 insertion(+), 118 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index e867b0d9..d68cde19 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -447,9 +447,6 @@ fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Opti #[cfg(test)] mod tests { use super::*; - use duct::cmd; - use std::fs::{self, File}; - use subxt::{client::OfflineClientT, utils::to_hex}; use url::Url; fn default_up_contract_command() -> UpContractCommand { @@ -491,116 +488,6 @@ mod tests { Ok(()) } - // TODO: delete this test. - // This is a helper test for an actual running pop CLI. - // It can serve as the "frontend" to query the payload, sign it - // and submit back to the CLI. - #[ignore] - #[tokio::test] - async fn sign_call_data() -> anyhow::Result<()> { - use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; - // This struct implements the [`Payload`] trait and is used to submit - // pre-encoded SCALE call data directly, without the dynamic construction of transactions. - struct CallData(Vec); - - impl Payload for CallData { - fn encode_call_data_to( - &self, - _: &subxt::Metadata, - out: &mut Vec, - ) -> Result<(), subxt::ext::subxt_core::Error> { - out.extend_from_slice(&self.0); - Ok(()) - } - } - - use subxt_signer::sr25519::dev; - let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - let url = "ws://localhost:9944"; - let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; - let client = - subxt::OnlineClient::::from_rpc_client(rpc_client).await?; - - let signer = dev::alice(); - - let payload = CallData(payload.call_data()); - let ext_params = Params::new().build(); - let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; - - let response = reqwest::Client::new() - .post(&format!("{}/submit", "http://localhost:9090")) - .json(&to_hex(signed.encoded())) - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse JSON response"); - - Ok(()) - } - - // TODO: delete this test. - // This is a helper test for an actual running pop CLI. - // It can serve as the "frontend" to query the payload, sign it - // and submit back to the CLI. - #[tokio::test] - async fn sign_call_data() -> anyhow::Result<()> { - use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; - // This struct implements the [`Payload`] trait and is used to submit - // pre-encoded SCALE call data directly, without the dynamic construction of transactions. - struct CallData(Vec); - - impl Payload for CallData { - fn encode_call_data_to( - &self, - _: &subxt::Metadata, - out: &mut Vec, - ) -> Result<(), subxt::ext::subxt_core::Error> { - out.extend_from_slice(&self.0); - Ok(()) - } - } - - use subxt_signer::sr25519::dev; - let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - let url = "ws://localhost:9944"; - let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; - let client = - subxt::OnlineClient::::from_rpc_client(rpc_client).await?; - - let signer = dev::alice(); - - let payload = CallData(payload.call_data()); - let ext_params = Params::new().build(); - let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; - - let response = reqwest::Client::new() - .post(&format!("{}/submit", "http://localhost:9090")) - .json(&to_hex(signed.encoded())) - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse JSON response"); - - Ok(()) - } - - #[tokio::test] async fn get_upload_call_data_works() -> anyhow::Result<()> { todo!() } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 2025bec0..1cbcfbd3 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -1,9 +1,6 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::{ - cli::{traits::Cli as _, Cli}, - wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, -}; +use crate::wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}; use cliclack::log; use sp_core::bytes::to_hex; use std::path::PathBuf; diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 076aa817..8d8bc02c 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -254,7 +254,6 @@ impl Frontend for FrontendFromString { #[cfg(test)] mod tests { use super::*; - use serde_json::json; const TEST_HTML: &str = "Hello, world!"; From e45097840e8af9b9c0f1999797e1e7034960d665 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 15:03:00 +0100 Subject: [PATCH 081/143] refactor: clean after rebase --- crates/pop-contracts/src/up.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 9b343361..e130ea86 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -385,8 +385,7 @@ mod tests { }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; - use reqwest::get; - use std::{env, fs, process::Command, time::Duration}; + use std::{env, process::Command, time::Duration}; use tokio::time::sleep; use url::Url; @@ -679,7 +678,7 @@ mod tests { assert!(weight.proof_size() > 0); let call_data = get_instantiate_payload(instantiate_exec, weight).await?; - println!("{:?}", to_hex(call_data)); + //println!("{:?}", to_hex(call_data)); //Stop the process contracts-node Command::new("kill") From d822d0bd4914b18693a7f231ab0e50797c1762e2 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 15:17:05 +0100 Subject: [PATCH 082/143] fix: cargo.lock after rebase --- Cargo.lock | 3240 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 2728 insertions(+), 512 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74cd0173..0e47545b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,11 +23,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli 0.31.0", + "gimli 0.31.1", ] [[package]] @@ -46,6 +46,31 @@ dependencies = [ "generic-array", ] +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" version = "0.7.8" @@ -170,9 +195,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -185,36 +210,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -248,9 +273,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -262,8 +287,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -273,9 +310,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" +dependencies = [ + "ark-bw6-761", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -284,14 +360,83 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", "zeroize", ] @@ -301,20 +446,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.1", "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -325,6 +480,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -338,19 +505,56 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-models-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-scale" +version = "0.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -358,7 +562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.4.0", "digest 0.10.7", "num-bigint", ] @@ -374,6 +578,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -382,6 +596,7 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", + "rayon", ] [[package]] @@ -392,9 +607,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -481,6 +696,66 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "asset-test-utils" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0324df9ce91a9840632e865dd3272bd20162023856f1b189b7ae58afa5c6b61" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-timestamp", + "pallet-xcm", + "pallet-xcm-bridge-hub-router", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + +[[package]] +name = "assets-common" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93438e31a4449fbeab87210931edc8cd156292354f1fc15f17d819ecded6bf25" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "impl-trait-for-tuples", + "log", + "pallet-asset-conversion", + "pallet-assets", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + [[package]] name = "async-channel" version = "2.3.1" @@ -519,9 +794,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", @@ -560,9 +835,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.4" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel", "async-io", @@ -575,7 +850,6 @@ dependencies = [ "futures-lite", "rustix 0.38.42", "tracing", - "windows-sys 0.59.0", ] [[package]] @@ -598,9 +872,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -609,9 +883,9 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", @@ -626,9 +900,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -660,9 +934,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" @@ -677,7 +951,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "itoa", "matchit", @@ -690,7 +964,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tower 0.5.2", "tower-layer", @@ -713,72 +987,17 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", ] [[package]] -name = "axum" -version = "0.7.9" +name = "backoff" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.4.1", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "tokio", - "tower 0.5.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper 1.0.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "backoff" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "getrandom", "instant", @@ -791,11 +1010,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.1", + "addr2line 0.24.2", "cfg-if", "libc", "miniz_oxide", - "object 0.36.4", + "object 0.36.5", "rustc-demangle", "windows-targets 0.52.6", ] @@ -861,6 +1080,16 @@ dependencies = [ "log", ] +[[package]] +name = "binary-merkle-tree" +version = "15.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" +dependencies = [ + "hash-db", + "log", +] + [[package]] name = "bincode" version = "1.3.3" @@ -872,15 +1101,30 @@ dependencies = [ [[package]] name = "bip39" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" dependencies = [ - "bitcoin_hashes 0.11.0", + "bitcoin_hashes 0.13.0", "serde", "unicode-normalization", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -888,10 +1132,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" [[package]] -name = "bitcoin_hashes" -version = "0.11.0" +name = "bitcoin-io" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" [[package]] name = "bitcoin_hashes" @@ -900,7 +1144,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", ] [[package]] @@ -923,6 +1177,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -1002,7 +1257,7 @@ dependencies = [ "hex", "http 1.2.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-named-pipe", "hyper-util", "hyperlocal-next", @@ -1034,9 +1289,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ "borsh-derive", "cfg_aliases", @@ -1044,9 +1299,9 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", @@ -1057,9 +1312,9 @@ dependencies = [ [[package]] name = "bounded-collections" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" +checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" dependencies = [ "log", "parity-scale-codec", @@ -1067,6 +1322,281 @@ dependencies = [ "serde", ] +[[package]] +name = "bp-header-chain" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "890df97cea17ee61ff982466bb9e90cb6b1462adb45380999019388d05e4b92d" +dependencies = [ + "bp-runtime", + "finality-grandpa", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-messages" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efabf94339950b914ba87249497f1a0e35a73849934d164fecae4b275928cf6" +dependencies = [ + "bp-header-chain", + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", +] + +[[package]] +name = "bp-parachains" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9011e5c12c15caf3c4129a98f4f4916ea9165db8daf6ed85867c3106075f40df" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-polkadot" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa6277dd4333917ecfbcc35e9332a9f11682e0a506e76b617c336224660fce33" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "sp-api", + "sp-std", +] + +[[package]] +name = "bp-polkadot-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345cf472bac11ef79d403e4846a666b7d22a13cd16d9c85b62cd6b5e16c4a042" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "frame-system", + "parity-scale-codec", + "parity-util-mem", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-relayers" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9465ad727e466d67d64244a1aa7bb19933a297913fdde34b8e9bda0a341bdeb" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-runtime", + "frame-support", + "frame-system", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-runtime" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "746d9464f912b278f8a5e2400f10541f95da7fc6c7d688a2788b9a46296146ee" +dependencies = [ + "frame-support", + "frame-system", + "hash-db", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-std", + "sp-trie 37.0.0", + "trie-db 0.29.1", +] + +[[package]] +name = "bp-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e659078b54c0b6bd79896738212a305842ad37168976363233516754337826" +dependencies = [ + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "ed25519-dalek", + "finality-grandpa", + "parity-scale-codec", + "sp-application-crypto 38.0.0", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", +] + +[[package]] +name = "bp-xcm-bridge-hub" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6909117ca87cb93703742939d5f0c4c93e9646d9cda22262e9709d68c929999b" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bp-xcm-bridge-hub-router" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9284820ca704f5c065563cad77d2e3d069a23cc9cb3a29db9c0de8dd3b173a87" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b53c53d627e2da38f8910807944bf3121e154b5c0ac9e122995af9dfb13ed" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "pallet-message-queue", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0b3aa5fd8481a06ca16e47fd3d2d9c6abe76b27d922ec8980a853f242173b3" +dependencies = [ + "asset-test-utils", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "bp-xcm-bridge-hub", + "bridge-runtime-common", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-bridge-hub", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "bridge-runtime-common" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c639aa22de6e904156a3e8b0e6b9e6af790cb27a1299688cc07997e1ffe5b648" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-xcm-bridge-hub", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-transaction-payment", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", + "staging-xcm 14.2.0", + "tuplex", +] + [[package]] name = "brownstone" version = "1.1.0" @@ -1087,15 +1617,24 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.9", "serde", ] +[[package]] +name = "build-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" +dependencies = [ + "semver 0.6.0", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -1130,6 +1669,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bytemuck" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" + [[package]] name = "byteorder" version = "1.5.0" @@ -1160,6 +1705,20 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "cargo_metadata" version = "0.18.1" @@ -1168,7 +1727,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver", + "semver 1.0.23", "serde", "serde_json", "thiserror 1.0.69", @@ -1190,9 +1749,9 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.20.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965" +checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" dependencies = [ "serde", "toml 0.8.19", @@ -1215,6 +1774,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -1259,6 +1827,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -1285,9 +1854,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1303,9 +1872,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cliclack" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c827ccada848b64fba073b64518a7416d605ad70c594b5450b5ed1d97e3b5d4" +checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" dependencies = [ "console", "indicatif", @@ -1322,14 +1891,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" @@ -1375,7 +1944,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -1398,6 +1967,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + [[package]] name = "const_env" version = "0.1.2" @@ -1444,7 +2033,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata", + "cargo_metadata 0.18.1", "clap", "colored", "contract-metadata", @@ -1452,11 +2041,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", "regex", - "rustc_version", - "semver", + "rustc_version 0.4.1", + "semver 1.0.23", "serde", "serde_json", "strum 0.26.3", @@ -1514,8 +2103,8 @@ version = "5.0.1" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", - "impl-serde", - "semver", + "impl-serde 0.4.0", + "semver 1.0.23", "serde", "serde_json", "url", @@ -1539,7 +2128,7 @@ dependencies = [ "nom", "nom-supreme", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "scale-info", "serde", "serde_json", @@ -1590,13 +2179,57 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] +[[package]] +name = "cranelift-bforest" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" +dependencies = [ + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-isle", + "gimli 0.27.3", + "hashbrown 0.13.2", + "log", + "regalloc2 0.6.1", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" + [[package]] name = "cranelift-entity" version = "0.95.1" @@ -1606,6 +2239,51 @@ dependencies = [ "serde", ] +[[package]] +name = "cranelift-frontend" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" + +[[package]] +name = "cranelift-native" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" +dependencies = [ + "cranelift-codegen", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-wasm" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "itertools 0.10.5", + "log", + "smallvec", + "wasmparser 0.102.0", + "wasmtime-types", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -1615,6 +2293,25 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-queue" version = "0.3.11" @@ -2033,7 +2730,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version", + "rustc_version 0.4.1", "subtle", "zeroize", ] @@ -2059,6 +2756,7 @@ dependencies = [ "cxxbridge-cmd", "cxxbridge-flags", "cxxbridge-macro", + "foldhash", "link-cplusplus", ] @@ -2070,7 +2768,6 @@ checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" dependencies = [ "cc", "codespan-reporting", - "once_cell", "proc-macro2", "quote", "scratch", @@ -2259,9 +2956,9 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", @@ -2341,6 +3038,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs" version = "5.0.1" @@ -2362,6 +3069,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[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", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -2381,18 +3099,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" dependencies = [ "common-path", "derive-syn-parse", @@ -2424,6 +3142,12 @@ dependencies = [ "shared_child", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -2554,9 +3278,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2602,6 +3326,19 @@ dependencies = [ "regex", ] +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + [[package]] name = "env_logger" version = "0.11.5" @@ -2643,6 +3380,47 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" +[[package]] +name = "ethabi-decode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" +dependencies = [ + "ethereum-types", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "scale-info", + "uint 0.9.5", +] + [[package]] name = "event-listener" version = "5.3.1" @@ -2728,6 +3506,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "file-per-thread-logger" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" +dependencies = [ + "env_logger 0.10.2", + "log", +] + [[package]] name = "filetime" version = "0.2.25" @@ -2770,9 +3558,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -2793,6 +3581,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -3121,9 +3915,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -3136,9 +3930,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -3146,15 +3940,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -3164,15 +3958,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand", "futures-core", @@ -3183,9 +3977,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -3194,15 +3988,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -3212,9 +4006,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -3228,6 +4022,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -3260,22 +4063,42 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator", + "fallible-iterator 0.2.0", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.31.0" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +dependencies = [ + "fallible-iterator 0.3.0", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "git2" @@ -3350,9 +4173,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", @@ -3411,6 +4234,17 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "heck" version = "0.4.1" @@ -3447,6 +4281,21 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec 0.7.6", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + [[package]] name = "hkdf" version = "0.12.4" @@ -3567,7 +4416,7 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" name = "httparse" version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -3592,9 +4441,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -3616,9 +4465,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", @@ -3642,7 +4491,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -3658,7 +4507,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -3676,7 +4525,7 @@ dependencies = [ "http 1.2.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -3689,7 +4538,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.30", + "hyper 0.14.31", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -3702,7 +4551,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -3716,7 +4565,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "native-tls", "tokio", @@ -3726,16 +4575,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.1", "pin-project-lite", "socket2", "tokio", @@ -3751,7 +4600,7 @@ checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" dependencies = [ "hex", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -3760,9 +4609,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3935,6 +4784,24 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67aa010c1e3da95bf151bd8b4c059b2ed7e75387cdb969b4f8f2723a43f9941" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + [[package]] name = "impl-serde" version = "0.4.0" @@ -3945,8 +4812,8 @@ dependencies = [ ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "impl-serde" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ @@ -3972,7 +4839,6 @@ checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", ] [[package]] @@ -3999,7 +4865,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "serde", ] @@ -4011,15 +4877,15 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] @@ -4038,11 +4904,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273f2aa983d04a6476d3c5ac76ddbef07555664b88f923996e7465e261dda48" dependencies = [ "blake2", - "derive_more", + "derive_more 1.0.0", "ink_primitives", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", ] @@ -4056,24 +4922,25 @@ dependencies = [ "blake2", "cfg-if", "const_env", - "derive_more", + "derive_more 1.0.0", "ink_allocator", "ink_engine", "ink_prelude", "ink_primitives", "ink_storage_traits", "num-traits", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", "paste", "rlibc", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "schnorrkel", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", + "staging-xcm 11.0.0", "static_assertions", ] @@ -4083,8 +4950,8 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27135c651274087ba0578d2c07866c31d8dd481ae8de5bb7295fe3931491aa80" dependencies = [ - "derive_more", - "impl-serde", + "derive_more 1.0.0", + "impl-serde 0.4.0", "ink_prelude", "ink_primitives", "linkme", @@ -4109,11 +4976,11 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a530c1b352a53176ea718f3a65f15003e54e0474ec12353ea0e0e5bb60b25741" dependencies = [ - "derive_more", + "derive_more 1.0.0", "ink_prelude", "parity-scale-codec", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "xxhash-rust", ] @@ -4171,9 +5038,20 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-terminal" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] [[package]] name = "is_terminal_polyfill" @@ -4194,7 +5072,16 @@ dependencies = [ name = "itertools" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -4210,9 +5097,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -4224,7 +5111,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", ] @@ -4267,7 +5154,7 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4280,7 +5167,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4363,11 +5250,24 @@ dependencies = [ "url", ] +[[package]] +name = "jsonrpsee-ws-client" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" +dependencies = [ + "http 1.2.0", + "jsonrpsee-client-transport 0.24.7", + "jsonrpsee-core 0.24.7", + "jsonrpsee-types 0.24.7", + "url", +] + [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -4400,6 +5300,16 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + [[package]] name = "kube" version = "0.87.2" @@ -4426,7 +5336,7 @@ dependencies = [ "home", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "hyper-timeout", "jsonpath-rust", @@ -4437,11 +5347,11 @@ dependencies = [ "rand", "rustls 0.21.12", "rustls-pemfile 1.0.4", - "secrecy", + "secrecy 0.8.0", "serde", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite", "tokio-util", @@ -4464,7 +5374,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4487,7 +5397,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -4527,9 +5437,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libp2p" @@ -4551,7 +5461,7 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4601,16 +5511,16 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror", - "unsigned-varint", + "thiserror 1.0.69", + "unsigned-varint 0.7.2", "void", ] [[package]] name = "libp2p-identity" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" +checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" dependencies = [ "bs58", "ed25519-dalek", @@ -4619,7 +5529,7 @@ dependencies = [ "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", "tracing", "zeroize", ] @@ -4741,18 +5651,18 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "566336154b9e58a4f055f6dd4cbab62c7dc0826ce3c0a04e63b2d2ecd784cdae" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9" dependencies = [ "proc-macro2", "quote", @@ -4804,11 +5714,20 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.12.3", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", ] [[package]] @@ -4991,9 +5910,9 @@ dependencies = [ [[package]] name = "mockito" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" +checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" dependencies = [ "assert-json-diff", "bytes", @@ -5002,7 +5921,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "log", "rand", @@ -5013,11 +5932,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "multi-stash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" + [[package]] name = "multiaddr" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" dependencies = [ "arrayref", "byteorder", @@ -5028,7 +5953,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.8.0", "url", ] @@ -5050,7 +5975,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint", + "unsigned-varint 0.8.0", ] [[package]] @@ -5064,7 +5989,22 @@ dependencies = [ "log", "pin-project", "smallvec", - "unsigned-varint", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", ] [[package]] @@ -5136,6 +6076,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -5146,6 +6096,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -5200,6 +6159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -5232,18 +6192,27 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -5253,9 +6222,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -5285,18 +6254,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.2+3.3.2" +version = "300.4.1+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -7380,11 +8349,17 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.5.1", + "rand_core 0.6.4", "serde", "unicode-normalization", ] +[[package]] +name = "parity-bytes" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" + [[package]] name = "parity-scale-codec" version = "3.6.12" @@ -7418,6 +8393,41 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "parity-util-mem" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" +dependencies = [ + "cfg-if", + "ethereum-types", + "hashbrown 0.12.3", + "impl-trait-for-tuples", + "lru 0.8.1", + "parity-util-mem-derive", + "parking_lot", + "primitive-types 0.12.2", + "smallvec", + "winapi", +] + +[[package]] +name = "parity-util-mem-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" +dependencies = [ + "proc-macro2", + "syn 1.0.109", + "synstructure 0.12.6", +] + +[[package]] +name = "parity-wasm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" + [[package]] name = "parking" version = "2.2.1" @@ -7471,6 +8481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", + "hmac 0.12.1", "password-hash", ] @@ -7537,18 +8548,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", @@ -7557,9 +8568,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -7590,7 +8601,7 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" @@ -8125,6 +9136,19 @@ name = "polkavm-common" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" +dependencies = [ + "log", + "polkavm-assembler 0.10.0", +] [[package]] name = "polkavm-derive" @@ -8154,6 +9178,15 @@ dependencies = [ "polkavm-derive-impl-macro 0.9.0", ] +[[package]] +name = "polkavm-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" +dependencies = [ + "polkavm-derive-impl-macro 0.10.0", +] + [[package]] name = "polkavm-derive-impl" version = "0.5.0" @@ -8278,7 +9311,59 @@ checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" name = "polling" version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" +dependencies = [ + "polkavm-derive-impl 0.10.0", + "syn 2.0.90", +] + +[[package]] +name = "polkavm-linker" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.32.2", + "polkavm-common 0.9.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linker" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.36.5", + "polkavm-common 0.10.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linux-raw" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" + +[[package]] +name = "polkavm-linux-raw" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", @@ -8300,6 +9385,18 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "pop-cli" version = "0.5.0" @@ -8312,7 +9409,7 @@ dependencies = [ "console", "dirs", "duct", - "env_logger", + "env_logger 0.11.5", "git2", "os_info", "pop-common", @@ -8327,8 +9424,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tempfile", "tokio", "tower-http 0.6.2", @@ -8356,11 +9453,11 @@ dependencies = [ "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "toml 0.5.11", "toml_edit 0.22.22", @@ -8388,11 +9485,11 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-test", "url", @@ -8414,18 +9511,18 @@ dependencies = [ "pop-common", "reqwest 0.12.9", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", + "subxt 0.37.0", "symlink", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-test", - "toml_edit 0.22.20", + "toml_edit 0.22.22", "url", "walkdir", "zombienet-sdk", @@ -8436,22 +9533,22 @@ name = "pop-telemetry" version = "0.5.0" dependencies = [ "dirs", - "env_logger", + "env_logger 0.11.5", "log", "mockito", - "reqwest 0.12.7", + "reqwest 0.12.9", "serde", "serde_json", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", ] [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -8500,9 +9597,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", "syn 2.0.90", @@ -8515,10 +9612,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", - "impl-codec", - "impl-serde", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.0", + "impl-serde 0.5.0", "scale-info", - "uint", + "uint 0.10.0", ] [[package]] @@ -8537,36 +9648,69 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.20", + "toml_edit 0.22.22", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ - "proc-macro-error-attr", + "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", + "syn 2.0.90", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-warning" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" dependencies = [ "proc-macro2", "quote", - "version_check", + "syn 2.0.90", ] [[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" +name = "proc-macro2" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ @@ -8599,18 +9743,38 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + [[package]] name = "psm" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" dependencies = [ "cc", ] @@ -8635,6 +9799,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quick-protobuf" version = "0.8.1" @@ -8732,9 +9902,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -8747,7 +9917,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8797,14 +9967,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -8818,13 +9988,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -8835,9 +10005,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rend" @@ -8862,7 +10032,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -8890,9 +10060,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.1", "bytes", @@ -8903,7 +10073,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-rustls 0.27.3", "hyper-tls 0.6.0", "hyper-util", @@ -8915,11 +10085,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "system-configuration 0.6.1", "tokio", "tokio-native-tls", @@ -9088,13 +10258,31 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver", + "semver 1.0.23", ] [[package]] @@ -9140,7 +10328,7 @@ dependencies = [ name = "rustls" version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "log", "once_cell", @@ -9170,7 +10358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -9187,19 +10375,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-platform-verifier" @@ -9212,7 +10399,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -9251,9 +10438,31 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ruzstd" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" +dependencies = [ + "byteorder", + "derive_more 0.99.18", +] [[package]] name = "ruzstd" @@ -9282,6 +10491,33 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "safe-mix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" +dependencies = [ + "rustc_version 0.2.3", +] + +[[package]] +name = "safe_arch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + [[package]] name = "same-file" version = "1.0.6" @@ -9291,14 +10527,95 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "sc-allocator" +version = "29.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b975ee3a95eaacb611e7b415737a7fa2db4d8ad7b880cc1b97371b04e95c7903" +dependencies = [ + "log", + "sp-core 34.0.0", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", +] + +[[package]] +name = "sc-executor" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f0cc0a3728fd033589183460c5a49b2e7545d09dc89a098216ef9e9aadcd9dc" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sc-executor-common", + "sc-executor-polkavm", + "sc-executor-wasmtime", + "schnellru", + "sp-api", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-io 38.0.0", + "sp-panic-handler", + "sp-runtime-interface 28.0.0", + "sp-trie 37.0.0", + "sp-version", + "sp-wasm-interface 21.0.1", + "tracing", +] + +[[package]] +name = "sc-executor-common" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3b703a33dcb7cddf19176fdf12294b9a6408125836b0f4afee3e6969e7f190" +dependencies = [ + "polkavm 0.9.3", + "sc-allocator", + "sp-maybe-compressed-blob", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", + "wasm-instrument", +] + +[[package]] +name = "sc-executor-polkavm" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fe58d9cacfab73e5595fa84b80f7bd03efebe54a0574daaeb221a1d1f7ab80" +dependencies = [ + "log", + "polkavm 0.9.3", + "sc-executor-common", + "sp-wasm-interface 21.0.1", +] + +[[package]] +name = "sc-executor-wasmtime" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd498f2f77ec1f861c30804f5bfd796d4afcc8ce44ea1f11bfbe2847551d161" +dependencies = [ + "anyhow", + "cfg-if", + "libc", + "log", + "parking_lot", + "rustix 0.36.17", + "sc-allocator", + "sc-executor-common", + "sp-runtime-interface 28.0.0", + "sp-wasm-interface 21.0.1", + "wasmtime", +] + [[package]] name = "scale-bits" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" +checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" dependencies = [ "parity-scale-codec", - "scale-info", + "scale-type-resolver 0.1.1", ] [[package]] @@ -9309,21 +10626,21 @@ checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" dependencies = [ "parity-scale-codec", "scale-info", - "scale-type-resolver", + "scale-type-resolver 0.2.0", "serde", ] [[package]] name = "scale-decode" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" +checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" dependencies = [ - "derive_more", + "derive_more 0.99.18", "parity-scale-codec", - "scale-bits 0.4.0", - "scale-decode-derive 0.10.0", - "scale-info", + "scale-bits 0.5.0", + "scale-decode-derive 0.11.1", + "scale-type-resolver 0.1.1", "smallvec", ] @@ -9344,12 +10661,11 @@ dependencies = [ [[package]] name = "scale-decode-derive" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" +checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" dependencies = [ "darling 0.14.4", - "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -9367,16 +10683,28 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "scale-decode-derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "scale-encode" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" +checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" dependencies = [ - "derive_more", + "derive_more 0.99.18", "parity-scale-codec", - "scale-encode-derive 0.5.0", - "scale-info", + "scale-encode-derive 0.6.0", + "scale-type-resolver 0.1.1", "smallvec", ] @@ -9397,9 +10725,9 @@ dependencies = [ [[package]] name = "scale-encode-derive" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" +checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" dependencies = [ "darling 0.14.4", "proc-macro-crate 1.3.1", @@ -9423,13 +10751,13 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "bitvec", "cfg-if", - "derive_more", + "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", "schemars", @@ -9438,9 +10766,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -9502,9 +10830,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -9575,6 +10903,18 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "password-hash", + "pbkdf2", + "salsa20", + "sha2 0.10.8", +] + [[package]] name = "sct" version = "0.7.1" @@ -9612,7 +10952,18 @@ version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "secp256k1-sys", + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand", + "secp256k1-sys 0.10.1", ] [[package]] @@ -9624,6 +10975,15 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + [[package]] name = "secrecy" version = "0.8.0" @@ -9634,6 +10994,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -9649,13 +11018,40 @@ dependencies = [ ] [[package]] -name = "security-framework-sys" -version = "2.11.1" +name = "security-framework-sys" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ - "core-foundation-sys", - "libc", + "semver-parser 0.10.3", ] [[package]] @@ -9676,6 +11072,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" +dependencies = [ + "serde", +] + [[package]] name = "serde-value" version = "0.7.0" @@ -9719,9 +11124,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "indexmap 2.7.0", "itoa", @@ -9753,9 +11158,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -9774,9 +11179,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", @@ -9928,11 +11333,24 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "similar" @@ -9961,6 +11379,24 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "slot-range-helper" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e34f1146a457a5c554dedeae6c7273aa54c3b031f3e9eb0abd037b5511e2ce9" +dependencies = [ + "enumn", + "parity-scale-codec", + "paste", + "sp-runtime 39.0.2", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -10005,7 +11441,7 @@ dependencies = [ "bs58", "chacha20", "crossbeam-queue", - "derive_more", + "derive_more 0.99.18", "ed25519-zebra 4.0.3", "either", "event-listener", @@ -10028,7 +11464,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd", + "ruzstd 0.5.0", "schnorrkel", "serde", "serde_json", @@ -10039,7 +11475,61 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi", + "wasmi 0.31.2", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.22.1", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 5.3.1", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.13.0", + "libm", + "libsecp256k1", + "merlin", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.6.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.8.1", + "twox-hash", + "wasmi 0.32.3", "x25519-dalek", "zeroize", ] @@ -10476,11 +11966,24 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-io", + "sp-core 31.0.0", + "sp-io 33.0.0", "sp-std", ] +[[package]] +name = "sp-application-crypto" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", +] + [[package]] name = "sp-arithmetic" version = "26.0.0" @@ -10637,7 +12140,7 @@ dependencies = [ "futures", "hash-db", "hash256-std-hasher", - "impl-serde", + "impl-serde 0.4.0", "itertools 0.10.5", "k256", "libsecp256k1", @@ -10647,27 +12150,104 @@ dependencies = [ "parity-scale-codec", "parking_lot", "paste", - "primitive-types", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.27.0", + "sp-runtime-interface 26.0.0", + "sp-std", + "sp-storage 20.0.0", + "ss58-registry", + "substrate-bip39 0.5.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 4.0.3", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", "rand", "scale-info", "schnorrkel", - "secp256k1", - "secrecy", + "secp256k1 0.28.2", + "secrecy 0.8.0", "serde", "sp-crypto-hashing", "sp-debug-derive", - "sp-externalities", - "sp-runtime-interface", + "sp-externalities 0.29.0", + "sp-runtime-interface 28.0.0", "sp-std", - "sp-storage", + "sp-storage 21.0.0", "ss58-registry", - "substrate-bip39", - "thiserror", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", "tracing", "w3f-bls", "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f812cb2dff962eb378c507612a50f1c59f52d92eb97b710f35be3c2346a3cd7" +dependencies = [ + "sp-crypto-hashing", +] + +[[package]] +name = "sp-crypto-ec-utils" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acb24f8a607a48a87f0ee4c090fc5d577eee49ff39ced6a3c491e06eca03c37" +dependencies = [ + "ark-bls12-377", + "ark-bls12-377-ext", + "ark-bls12-381", + "ark-bls12-381-ext", + "ark-bw6-761", + "ark-bw6-761-ext", + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ed-on-bls12-377-ext", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ed-on-bls12-381-bandersnatch-ext", + "ark-scale", + "sp-runtime-interface 28.0.0", +] + [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -10713,7 +12293,45 @@ dependencies = [ "environmental", "parity-scale-codec", "sp-std", - "sp-storage", + "sp-storage 20.0.0", +] + +[[package]] +name = "sp-externalities" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a904407d61cb94228c71b55a9d3708e9d6558991f9e83bd42bd91df37a159d30" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a646ed222fd86d5680faa4a8967980eb32f644cae6c8523e1c689a6deda3e8" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-inherents" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afffbddc380d99a90c459ba1554bbbc01d62e892de9f1485af6940b89c4c0d57" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "thiserror 1.0.69", ] [[package]] @@ -10729,20 +12347,58 @@ dependencies = [ "parity-scale-codec", "polkavm-derive 0.9.1", "rustversion", - "secp256k1", - "sp-core", + "secp256k1 0.28.2", + "sp-core 31.0.0", "sp-crypto-hashing", - "sp-externalities", - "sp-keystore", - "sp-runtime-interface", - "sp-state-machine", + "sp-externalities 0.27.0", + "sp-keystore 0.37.0", + "sp-runtime-interface 26.0.0", + "sp-state-machine 0.38.0", "sp-std", - "sp-tracing", - "sp-trie", + "sp-tracing 16.0.0", + "sp-trie 32.0.0", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-io" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "rustversion", + "secp256k1 0.28.2", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-externalities 0.29.0", + "sp-keystore 0.40.0", + "sp-runtime-interface 28.0.0", + "sp-state-machine 0.43.0", + "sp-tracing 17.0.1", + "sp-trie 37.0.0", "tracing", "tracing-core", ] +[[package]] +name = "sp-keyring" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" +dependencies = [ + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "strum 0.26.3", +] + [[package]] name = "sp-keystore" version = "0.37.0" @@ -10858,25 +12514,52 @@ dependencies = [ name = "sp-runtime" version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 34.0.0", + "sp-arithmetic", + "sp-core 32.0.0", + "sp-io 34.0.0", + "sp-std", + "sp-weights 30.0.0", +] + +[[package]] +name = "sp-runtime" +version = "39.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" dependencies = [ "docify", "either", "hash256-std-hasher", "impl-trait-for-tuples", "log", + "num-traits", "parity-scale-codec", "paste", "rand", "scale-info", "serde", "simple-mermaid", - "sp-application-crypto 34.0.0", - "sp-arithmetic", - "sp-core 32.0.0", - "sp-io 34.0.0", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", "sp-std", - "sp-weights", + "sp-weights 31.0.0", + "tracing", ] [[package]] @@ -10916,13 +12599,33 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "polkavm-derive 0.8.0", - "primitive-types", - "sp-externalities", + "primitive-types 0.12.2", + "sp-externalities 0.27.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 20.0.0", + "sp-tracing 16.0.0", + "sp-wasm-interface 20.0.0", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.29.0", "sp-runtime-interface-proc-macro", "sp-std", - "sp-storage", - "sp-tracing", - "sp-wasm-interface", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", "static_assertions", ] @@ -10995,14 +12698,60 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core", - "sp-externalities", + "sp-core 31.0.0", + "sp-externalities 0.27.0", "sp-panic-handler", "sp-std", - "sp-trie", - "thiserror", + "sp-trie 32.0.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.28.0", +] + +[[package]] +name = "sp-state-machine" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "930104d6ae882626e8880d9b1578da9300655d337a3ffb45e130c608b6c89660" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot", + "rand", + "smallvec", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-panic-handler", + "sp-trie 37.0.0", + "thiserror 1.0.69", "tracing", - "trie-db", + "trie-db 0.29.1", +] + +[[package]] +name = "sp-statement-store" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c219bc34ef4d1f9835f3ed881f965643c32034fcc030eb33b759dadbc802c1c2" +dependencies = [ + "aes-gcm", + "curve25519-dalek 4.1.3", + "ed25519-dalek", + "hkdf", + "parity-scale-codec", + "rand", + "scale-info", + "sha2 0.10.8", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-externalities 0.29.0", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "thiserror 1.0.69", + "x25519-dalek", ] [[package]] @@ -11017,7 +12766,7 @@ version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" dependencies = [ - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", "ref-cast", "serde", @@ -11025,6 +12774,32 @@ dependencies = [ "sp-std", ] +[[package]] +name = "sp-storage" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99c82989b3a4979a7e1ad848aad9f5d0b4388f1f454cc131766526601ab9e8f8" +dependencies = [ + "impl-serde 0.4.0", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", +] + +[[package]] +name = "sp-timestamp" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a1cb4df653d62ccc0dbce1db45d1c9443ec60247ee9576962d24da4c9c6f07" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + [[package]] name = "sp-tracing" version = "16.0.0" @@ -11091,8 +12866,62 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core", - "sp-externalities", + "sp-core 31.0.0", + "sp-externalities 0.27.0", + "sp-std", + "sp-version-proc-macro", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-version-proc-macro" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aee8f6730641a65fcf0c8f9b1e448af4b3bb083d08058b47528188bccc7b7a7" +dependencies = [ + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sp-trie" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6282aef9f4b6ecd95a67a45bcdb67a71f4a4155c09a53c10add4ffe823db18cd" +dependencies = [ + "ahash 0.8.11", + "hash-db", + "lazy_static", + "memory-db", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "rand", + "scale-info", + "schnellru", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.29.1", + "trie-root", +] + +[[package]] +name = "sp-version" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d521a405707b5be561367cd3d442ff67588993de24062ce3adefcf8437ee9fe1" +dependencies = [ + "impl-serde 0.4.0", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime 39.0.2", "sp-std", "sp-version-proc-macro", "thiserror 1.0.69", @@ -11124,6 +12953,19 @@ dependencies = [ "wasmtime", ] +[[package]] +name = "sp-wasm-interface" +version = "21.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "wasmtime", +] + [[package]] name = "sp-weights" version = "31.0.0" @@ -11135,7 +12977,22 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic", + "sp-arithmetic 25.0.0", + "sp-debug-derive", +] + +[[package]] +name = "sp-weights" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 26.0.0", "sp-debug-derive", ] @@ -11157,9 +13014,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.50.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" dependencies = [ "Inflector", "num-format", @@ -11170,6 +13027,29 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "ssz_rs" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" +dependencies = [ + "bitvec", + "num-bigint", + "sha2 0.9.9", + "ssz_rs_derive", +] + +[[package]] +name = "ssz_rs_derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -11279,6 +13159,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string-interner" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "serde", +] + [[package]] name = "strsim" version = "0.10.0" @@ -11345,12 +13236,83 @@ dependencies = [ "zeroize", ] -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - +[[package]] +name = "substrate-bip39" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "schnorrkel", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "substrate-wasm-builder" +version = "24.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf035ffe7335fb24053edfe4d0a5780250eda772082a1b80ae25835dd4c09265" +dependencies = [ + "build-helper", + "cargo_metadata 0.15.4", + "console", + "filetime", + "jobserver", + "parity-wasm", + "polkavm-linker 0.9.2", + "sp-maybe-compressed-blob", + "strum 0.26.3", + "tempfile", + "toml 0.8.19", + "walkdir", + "wasm-opt", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subxt" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" +dependencies = [ + "async-trait", + "derive-where", + "either", + "frame-metadata 17.0.0", + "futures", + "hex", + "impl-serde 0.5.0", + "jsonrpsee", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.16.3", + "serde", + "serde_json", + "subxt-core", + "subxt-lightclient", + "subxt-macro", + "subxt-metadata", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "tracing", + "url", + "wasm-bindgen-futures", + "web-time", +] + [[package]] name = "subxt" version = "0.38.0" @@ -11364,7 +13326,7 @@ dependencies = [ "futures", "hex", "impl-serde 0.5.0", - "jsonrpsee", + "jsonrpsee 0.24.7", "parity-scale-codec", "polkadot-sdk", "primitive-types 0.13.1", @@ -11372,13 +13334,13 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value", + "scale-value 0.17.0", "serde", "serde_json", - "subxt-core", - "subxt-lightclient", - "subxt-macro", - "subxt-metadata", + "subxt-core 0.38.0", + "subxt-lightclient 0.38.0", + "subxt-macro 0.38.0", + "subxt-metadata 0.38.0", "thiserror 1.0.69", "tokio", "tokio-util", @@ -11495,6 +13457,20 @@ dependencies = [ "scale-info", ] +[[package]] +name = "subxt-metadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" +dependencies = [ + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "polkadot-sdk", + "scale-info", +] + [[package]] name = "subxt-signer" version = "0.38.0" @@ -11562,12 +13538,12 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "syn-solidity" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" dependencies = [ - "proc-macro-error", + "paste", "proc-macro2", "quote", "syn 2.0.90", @@ -11581,9 +13557,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -11661,9 +13637,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.41" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -11678,9 +13654,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -11714,6 +13690,22 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +[[package]] +name = "testnet-parachains-constants" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bceae6f7c89d47daff6c7e05f712551a01379f61b07d494661941144878589" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "polkadot-core-primitives", + "rococo-runtime-constants", + "smallvec", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "westend-runtime-constants", +] + [[package]] name = "textwrap" version = "0.16.1" @@ -11722,14 +13714,14 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl 1.0.69", ] @@ -11745,9 +13737,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -11806,6 +13798,15 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -11840,7 +13841,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.2", + "mio 1.0.3", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -11972,7 +13973,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -11999,15 +14000,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.20", ] [[package]] @@ -12103,9 +14104,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -12115,9 +14116,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -12126,9 +14127,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -12145,6 +14146,17 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-serde" version = "0.1.3" @@ -12164,7 +14176,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers", + "matchers 0.0.1", "regex", "serde", "serde_json", @@ -12173,7 +14185,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-serde", ] @@ -12209,6 +14221,18 @@ dependencies = [ "smallvec", ] +[[package]] +name = "trie-db" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" +dependencies = [ + "hash-db", + "log", + "rustc-hex", + "smallvec", +] + [[package]] name = "trie-root" version = "0.18.0" @@ -12224,6 +14248,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + [[package]] name = "tungstenite" version = "0.20.1" @@ -12238,11 +14268,17 @@ dependencies = [ "log", "rand", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + [[package]] name = "twox-hash" version = "1.6.3" @@ -12263,9 +14299,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -12280,19 +14316,34 @@ dependencies = [ ] [[package]] -name = "unicase" -version = "2.7.0" +name = "uint" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" dependencies = [ - "version_check", + "byteorder", + "crunchy", + "hex", + "static_assertions", ] +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicase" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" + [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-linebreak" @@ -12311,15 +14362,21 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -12343,6 +14400,12 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" + [[package]] name = "untrusted" version = "0.9.0" @@ -12387,9 +14450,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] @@ -12430,15 +14493,15 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" +checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff", - "ark-serialize", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", "ark-serialize-derive", "arrayref", "constcat", @@ -12448,7 +14511,7 @@ dependencies = [ "rand_core 0.6.4", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -12563,6 +14626,15 @@ dependencies = [ "wasmparser 0.207.0", ] +[[package]] +name = "wasm-instrument" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" +dependencies = [ + "parity-wasm", +] + [[package]] name = "wasm-opt" version = "0.116.1" @@ -12574,7 +14646,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror", + "thiserror 1.0.69", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -12631,6 +14703,29 @@ dependencies = [ "string-interner", ] +[[package]] +name = "wasmi_collections" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" +dependencies = [ + "ahash 0.8.11", + "hashbrown 0.14.5", + "string-interner", +] + +[[package]] +name = "wasmi_core" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmi_core" version = "0.32.3" @@ -12692,9 +14787,12 @@ dependencies = [ "once_cell", "paste", "psm", + "rayon", "serde", "target-lexicon", "wasmparser 0.102.0", + "wasmtime-cache", + "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -12710,6 +14808,63 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "wasmtime-cache" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" +dependencies = [ + "anyhow", + "base64 0.21.7", + "bincode", + "directories-next", + "file-per-thread-logger", + "log", + "rustix 0.36.17", + "serde", + "sha2 0.10.8", + "toml 0.5.11", + "windows-sys 0.45.0", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "wasmtime-cranelift" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "gimli 0.27.3", + "log", + "object 0.30.4", + "target-lexicon", + "thiserror 1.0.69", + "wasmparser 0.102.0", + "wasmtime-cranelift-shared", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-cranelift-shared" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-native", + "gimli 0.27.3", + "object 0.30.4", + "target-lexicon", + "wasmtime-environ", +] + [[package]] name = "wasmtime-environ" version = "8.0.1" @@ -12724,7 +14879,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", "wasmtime-types", ] @@ -12747,6 +14902,7 @@ dependencies = [ "serde", "target-lexicon", "wasmtime-environ", + "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-runtime", "windows-sys 0.45.0", @@ -12758,7 +14914,9 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" dependencies = [ + "object 0.30.4", "once_cell", + "rustix 0.36.17", ] [[package]] @@ -12804,7 +14962,7 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", ] @@ -12830,9 +14988,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -12866,6 +15024,16 @@ dependencies = [ "winsafe", ] +[[package]] +name = "wide" +version = "0.7.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" +dependencies = [ + "bytemuck", + "safe_arch", +] + [[package]] name = "winapi" version = "0.3.9" @@ -13161,9 +15329,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -13385,8 +15553,8 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", - "synstructure", + "syn 2.0.90", + "synstructure 0.13.1", ] [[package]] @@ -13450,14 +15618,14 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "arbitrary", "crc32fast", @@ -13481,7 +15649,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "toml 0.7.8", "url", @@ -13529,7 +15697,7 @@ checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" dependencies = [ "pest", "pest_derive", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -13553,7 +15721,7 @@ dependencies = [ "serde_yaml", "sha2 0.10.8", "tar", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -13594,8 +15762,56 @@ dependencies = [ "rand", "regex", "reqwest 0.11.27", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "uuid", ] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe 6.0.6", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] From 2590cb70e291fa39163570bdeb81e2b2eddc1cd5 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 23:20:16 +0100 Subject: [PATCH 083/143] refactor: move terminate node into common::contracts --- crates/pop-cli/src/commands/up/contract.rs | 46 +++++----------------- crates/pop-cli/src/common/contracts.rs | 29 +++++++++++++- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index d68cde19..29392a8f 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -3,7 +3,7 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::{ - contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + contracts::{check_contracts_node_and_prompt, has_contract_been_built, terminate_node}, wallet::wait_for_signature, }, style::style, @@ -21,10 +21,7 @@ use pop_contracts::{ }; use sp_core::Bytes; use sp_weights::Weight; -use std::{ - path::PathBuf, - process::{Child, Command}, -}; +use std::path::PathBuf; use tempfile::NamedTempFile; use url::Url; @@ -179,7 +176,7 @@ impl UpContractCommand { Ok(data) => data, Err(e) => { error(format!("An error occurred getting the call data: {e}"))?; - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -196,7 +193,7 @@ impl UpContractCommand { // TODO: dry (see else below) if let Err(e) = result { spinner.error(format!("An error occurred uploading your contract: {e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); } @@ -215,7 +212,7 @@ impl UpContractCommand { let result = instantiate_contract_signed(self.url.as_str(), payload).await; if let Err(e) = result { spinner.error(format!("An error occurred uploading your contract: {e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); } @@ -238,7 +235,7 @@ impl UpContractCommand { return Ok(()); } - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro(COMPLETE)?; return Ok(()); } @@ -246,7 +243,7 @@ impl UpContractCommand { // Check for upload only. if self.upload_only { let result = self.upload_contract().await; - Self::terminate_node(process)?; + terminate_node(process)?; match result { Ok(_) => { Cli.outro(COMPLETE)?; @@ -263,7 +260,7 @@ impl UpContractCommand { Ok(i) => i, Err(e) => { error(format!("An error occurred instantiating the contract: {e}"))?; - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -281,7 +278,7 @@ impl UpContractCommand { }, Err(e) => { spinner.error(format!("{e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -299,7 +296,7 @@ impl UpContractCommand { contract_info.code_hash, ); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro(COMPLETE)?; } @@ -341,29 +338,6 @@ impl UpContractCommand { Ok(()) } - /// Handles the optional termination of a local running node. - fn terminate_node(process: Option<(Child, NamedTempFile)>) -> anyhow::Result<()> { - // Prompt to close any launched node - let Some((process, log)) = process else { - return Ok(()); - }; - if confirm("Would you like to terminate the local node?") - .initial_value(true) - .interact()? - { - // Stop the process contracts-node - Command::new("kill") - .args(["-s", "TERM", &process.id().to_string()]) - .spawn()? - .wait()?; - } else { - log.keep()?; - log::warning(format!("NOTE: The node is running in the background with process ID {}. Please terminate it manually when done.", process.id()))?; - } - - Ok(()) - } - // get the call data and contract code hash async fn get_contract_data(&self) -> anyhow::Result<(Vec, [u8; 32])> { let contract_code = get_contract_code(self.path.as_ref()).await?; diff --git a/crates/pop-cli/src/common/contracts.rs b/crates/pop-cli/src/common/contracts.rs index 3d0be11f..c353d196 100644 --- a/crates/pop-cli/src/common/contracts.rs +++ b/crates/pop-cli/src/common/contracts.rs @@ -3,7 +3,11 @@ use cliclack::{confirm, log::warning, spinner}; use pop_common::{manifest::from_path, sourcing::set_executable_permission}; use pop_contracts::contracts_node_generator; -use std::path::{Path, PathBuf}; +use std::{ + path::{Path, PathBuf}, + process::{Child, Command}, +}; +use tempfile::NamedTempFile; /// Checks the status of the `substrate-contracts-node` binary, sources it if necessary, and /// prompts the user to update it if the existing binary is not the latest version. @@ -68,6 +72,29 @@ pub async fn check_contracts_node_and_prompt(skip_confirm: bool) -> anyhow::Resu Ok(node_path) } +/// Handles the optional termination of a local running node. +pub fn terminate_node(process: Option<(Child, NamedTempFile)>) -> anyhow::Result<()> { + // Prompt to close any launched node + let Some((process, log)) = process else { + return Ok(()); + }; + if confirm("Would you like to terminate the local node?") + .initial_value(true) + .interact()? + { + // Stop the process contracts-node + Command::new("kill") + .args(["-s", "TERM", &process.id().to_string()]) + .spawn()? + .wait()?; + } else { + log.keep()?; + warning(format!("NOTE: The node is running in the background with process ID {}. Please terminate it manually when done.", process.id()))?; + } + + Ok(()) +} + /// Checks if a contract has been built by verifying the existence of the build directory and the /// .contract file. /// From 534d083e4cbfafaa200c71a342a6121f449bc1a7 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 23:23:32 +0100 Subject: [PATCH 084/143] fix: sp-core not only for contracts --- crates/pop-cli/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index 6d2d6ef4..2d511c77 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -28,12 +28,12 @@ url.workspace = true clap.workspace = true cliclack.workspace = true console.workspace = true +sp-core.workspace = true strum.workspace = true strum_macros.workspace = true # contracts pop-contracts = { path = "../pop-contracts", version = "0.5.0", optional = true } -sp-core = { workspace = true, optional = true } sp-weights = { workspace = true, optional = true } # parachains @@ -59,6 +59,6 @@ subxt-signer.workspace = true [features] default = ["contract", "parachain", "telemetry"] -contract = ["dep:pop-contracts", "dep:sp-core", "dep:sp-weights", "dep:dirs"] +contract = ["dep:pop-contracts", "dep:sp-weights", "dep:dirs"] parachain = ["dep:pop-parachains", "dep:dirs"] telemetry = ["dep:pop-telemetry"] From d56ee9b14c30c2ba97e67dd9b28eb1c3779a28e6 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 12 Dec 2024 00:07:04 -0700 Subject: [PATCH 085/143] feat(up-contract): serve HTML from string, fix deployment message on error, cors, and other misc. improvements --- crates/pop-cli/src/commands/up/contract.rs | 27 ++++++++++++++++++++++ crates/pop-cli/src/wallet_integration.rs | 7 ++++++ 2 files changed, 34 insertions(+) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 29392a8f..e20113ff 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -358,6 +358,33 @@ impl UpContractCommand { Ok((call_data, hash)) } } + + async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { + let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); + + let transaction_data = TransactionData::new(self.url.to_string(), call_data); + // starts server + let mut wallet = WalletIntegrationManager::new(ui, transaction_data); + log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; + + log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; + loop { + // Display error, if any. + if let Some(error) = wallet.take_error().await { + log::error(format!("Signing portal error: {error}"))?; + } + + let state = wallet.state.lock().await; + // If the payload is submitted we terminate the frontend. + if !wallet.is_running() || state.signed_payload.is_some() { + wallet.task_handle.await??; + break; + } + } + + let signed_payload = wallet.state.lock().await.signed_payload.clone(); + Ok(signed_payload) + } } impl From for UpOpts { diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 8d8bc02c..339ec0be 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -85,6 +85,13 @@ impl WalletIntegrationManager { error: None, })); + // TODO: temporary until we host from here. + let cors = tower_http::cors::CorsLayer::new() + .allow_origin("http://localhost:9090".parse::().unwrap()) + .allow_origin("http://127.0.0.1:9090".parse::().unwrap()) + .allow_methods(Any) // Allow any HTTP method + .allow_headers(Any); // Allow any headers (like 'Content-Type') + // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() .allow_origin("http://localhost:9090".parse::().unwrap()) From 676dd8320b8d02b9a2895a30eb297c49b9455964 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 20:37:48 +0100 Subject: [PATCH 086/143] fix: rebase --- crates/pop-cli/src/commands/up/contract.rs | 3 +-- crates/pop-cli/src/common/wallet.rs | 8 ++------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index e20113ff..27ad0615 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -7,7 +7,6 @@ use crate::{ wallet::wait_for_signature, }, style::style, - wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; @@ -231,7 +230,7 @@ impl UpContractCommand { } } else { Cli.outro_cancel("Signed payload doesn't exist.")?; - Self::terminate_node(process)?; + terminate_node(process)?; return Ok(()); } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 1cbcfbd3..163e8aa9 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -1,15 +1,11 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}; +use crate::wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}; use cliclack::log; use sp_core::bytes::to_hex; -use std::path::PathBuf; pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { - // TODO: to be addressed in future PR. Should not use FromDir (or local path). - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/alexbean/Documents/react-teleport-example/dist", - )); + let ui = FrontendFromString::new(include_str!("../assets/index.html").to_string()); let transaction_data = TransactionData::new(url, call_data); let call_data_bytes = to_hex(&transaction_data.call_data(), false); From bef205a7998da6a34f1071b0401a895ce94f0b15 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 14:52:48 +0100 Subject: [PATCH 087/143] feat: secure signing logic for pop call chain --- Cargo.lock | 1 + crates/pop-cli/src/commands/call/chain.rs | 92 ++++++++++++++++++++--- crates/pop-parachains/Cargo.toml | 1 + crates/pop-parachains/src/call/mod.rs | 40 +++++++++- crates/pop-parachains/src/lib.rs | 4 +- 5 files changed, 123 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0e47545b..3f401a58 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9513,6 +9513,7 @@ dependencies = [ "scale-info", "scale-value 0.16.3", "serde_json", + "sp-core 31.0.0", "strum 0.26.3", "strum_macros 0.26.4", "subxt 0.37.0", diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 0179f1b8..8a0e284c 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -2,14 +2,17 @@ use std::path::Path; -use crate::cli::{self, traits::*}; +use crate::{ + cli::{self, traits::*}, + common::wallet::wait_for_signature, +}; use anyhow::{anyhow, Result}; use clap::Args; use pop_parachains::{ - construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, find_dispatchable_by_name, find_pallet_by_name, parse_chain_metadata, set_up_client, - sign_and_submit_extrinsic, supported_actions, Action, CallData, DynamicPayload, Function, - OnlineClient, Pallet, Param, SubstrateConfig, + sign_and_submit_extrinsic, submit_signed_extrinsic, supported_actions, Action, CallData, + DynamicPayload, Function, OnlineClient, Pallet, Param, SubstrateConfig, }; use url::Url; @@ -40,6 +43,9 @@ pub struct CallChainCommand { /// - with a password "//Alice///SECRET_PASSWORD" #[arg(short, long)] suri: Option, + /// Use your browser wallet to sign the extrinsic. + #[clap(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] + use_wallet: bool, /// SCALE encoded bytes representing the call data of the extrinsic. #[arg(name = "call", short, long, conflicts_with_all = ["pallet", "function", "args"])] call_data: Option, @@ -94,10 +100,18 @@ impl CallChainCommand { }, }; - // Sign and submit the extrinsic. - if let Err(e) = call.submit_extrinsic(&chain.client, &chain.url, xt, &mut cli).await { - display_message(&e.to_string(), false, &mut cli)?; - break; + if self.use_wallet { + // Sign and submit the extrinsic. + if let Err(e) = call.submit_extrinsic_secure_signing(&chain, &xt, &mut cli).await { + display_message(&e.to_string(), false, &mut cli)?; + break; + } + } else { + // Sign and submit the extrinsic. + if let Err(e) = call.submit_extrinsic(&chain.client, xt, &mut cli).await { + display_message(&e.to_string(), false, &mut cli)?; + break; + } } if !prompt_to_repeat_call @@ -198,11 +212,24 @@ impl CallChainCommand { // sudo. self.configure_sudo(chain, cli)?; - // Resolve who is signing the extrinsic. + // Resolve who is signing the extrinsic. If a `suri` was provided via the command line, + // skip the prompt. let suri = match self.suri.as_ref() { Some(suri) => suri.clone(), None => { - cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + if !self.use_wallet { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + .initial_value(true) + .interact()? { + self.use_wallet = true; + DEFAULT_URI.to_string() + } + else { + cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + } + } else { + DEFAULT_URI.to_string() + } }, }; @@ -212,6 +239,7 @@ impl CallChainCommand { suri, skip_confirm: self.skip_confirm, sudo: self.sudo, + use_wallet: self.use_wallet, }); } } @@ -225,6 +253,7 @@ impl CallChainCommand { cli: &mut impl Cli, ) -> Result<()> { // Resolve who is signing the extrinsic. + // TODO: HERE TOO let suri = match self.suri.as_ref() { Some(suri) => suri, None => &cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, @@ -288,6 +317,7 @@ impl CallChainCommand { self.function = None; self.args.clear(); self.sudo = false; + self.use_wallet = false; } // Function to check if all required fields are specified. @@ -339,6 +369,8 @@ struct Call { /// - for a dev account "//Alice" /// - with a password "//Alice///SECRET_PASSWORD" suri: String, + /// Whether to use your browser wallet to sign the extrinsic. + use_wallet: bool, /// Whether to automatically sign and submit the extrinsic without prompting for confirmation. skip_confirm: bool, /// Whether to dispatch the function call with `Root` origin. @@ -398,6 +430,31 @@ impl Call { Ok(()) } + // Sign and submit an extrinsic. + async fn submit_extrinsic_secure_signing( + &mut self, + chain: &Chain, + xt: &DynamicPayload, + cli: &mut impl Cli, + ) -> Result<()> { + let call_data = call_data(&chain.client, xt)?; + let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; + if let Some(payload) = maybe_payload { + cli.success("Signed payload received.")?; + let spinner = cliclack::spinner(); + spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); + + let result = submit_signed_extrinsic(chain.client.clone(), payload) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + + spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); + } else { + display_message("Signed payload doesn't exist.", false, cli)?; + } + Ok(()) + } + fn display(&self, chain: &Chain) -> String { let mut full_message = "pop call chain".to_string(); full_message.push_str(&format!(" --pallet {}", self.function.pallet)); @@ -417,7 +474,12 @@ impl Call { .collect(); full_message.push_str(&format!(" --args {}", args.join(" "))); } - full_message.push_str(&format!(" --url {} --suri {}", chain.url, self.suri)); + full_message.push_str(&format!(" --url {}", chain.url)); + if self.use_wallet { + full_message.push_str("--use-wallet"); + } else { + full_message.push_str(&format!(" --suri {}", self.suri)); + } if self.sudo { full_message.push_str(" --sudo"); } @@ -720,6 +782,7 @@ mod tests { }, args: vec!["0x11".to_string()].to_vec(), suri: DEFAULT_URI.to_string(), + use_wallet: false, skip_confirm: false, sudo: false, }; @@ -759,6 +822,7 @@ mod tests { function: find_dispatchable_by_name(&pallets, "System", "remark")?.clone(), args: vec!["0x11".to_string()].to_vec(), suri: DEFAULT_URI.to_string(), + use_wallet: false, skip_confirm: false, sudo: false, }; @@ -782,6 +846,7 @@ mod tests { args: vec![].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), suri: None, + use_wallet: false, skip_confirm: false, call_data: Some("0x00000411".to_string()), sudo: false, @@ -811,6 +876,7 @@ mod tests { args: vec![].to_vec(), url: Some(Url::parse("wss://polkadot-rpc.publicnode.com")?), suri: Some("//Alice".to_string()), + use_wallet: false, skip_confirm: false, call_data: Some("0x00000411".to_string()), sudo: true, @@ -842,6 +908,7 @@ mod tests { function: Some("remark".to_string()), args: vec!["0x11".to_string()].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), + use_wallet: true, suri: Some(DEFAULT_URI.to_string()), skip_confirm: false, call_data: None, @@ -852,6 +919,7 @@ mod tests { assert_eq!(call_config.function, None); assert_eq!(call_config.args.len(), 0); assert!(!call_config.sudo); + assert!(call_config.use_wallet); Ok(()) } @@ -863,6 +931,7 @@ mod tests { args: vec!["0x11".to_string()].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), suri: Some(DEFAULT_URI.to_string()), + use_wallet: false, skip_confirm: false, call_data: None, sudo: false, @@ -881,6 +950,7 @@ mod tests { args: vec!["2000".to_string(), "0x1".to_string(), "0x12".to_string()].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), suri: Some(DEFAULT_URI.to_string()), + use_wallet: false, call_data: None, skip_confirm: false, sudo: false, diff --git a/crates/pop-parachains/Cargo.toml b/crates/pop-parachains/Cargo.toml index 64bef2d6..19d8361d 100644 --- a/crates/pop-parachains/Cargo.toml +++ b/crates/pop-parachains/Cargo.toml @@ -29,6 +29,7 @@ indexmap.workspace = true reqwest.workspace = true scale-info.workspace = true scale-value.workspace = true +sp-core.workspace = true subxt.workspace = true symlink.workspace = true toml_edit.workspace = true diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs index 1f7e61b2..dacf17e0 100644 --- a/crates/pop-parachains/src/call/mod.rs +++ b/crates/pop-parachains/src/call/mod.rs @@ -5,12 +5,12 @@ use pop_common::{ call::{DefaultEnvironment, DisplayEvents, TokenMetadata, Verbosity}, create_signer, }; +use sp_core::bytes::from_hex; use subxt::{ dynamic::Value, - tx::{DynamicPayload, Payload}, + tx::{DynamicPayload, Payload, SubmittableExtrinsic}, OnlineClient, SubstrateConfig, }; - pub mod metadata; /// Sets up an [OnlineClient] instance for connecting to a blockchain. @@ -82,6 +82,28 @@ pub async fn sign_and_submit_extrinsic( Ok(format!("Extrinsic Submitted with hash: {:?}\n\n{}", result.extrinsic_hash(), events)) } +/// TODO: Signs and submits a given extrinsic. +/// +/// # Arguments +/// * `client` - The client used to interact with the chain. +/// * `xt` - The extrinsic to be signed and submitted. +/// * `suri` - The secret URI (e.g., mnemonic or private key) for signing the extrinsic. +pub async fn submit_signed_extrinsic( + client: OnlineClient, + payload: String, +) -> Result { + let hex_encoded = + from_hex(&payload).map_err(|e| Error::CallDataDecodingError(e.to_string()))?; + let extrinsic = SubmittableExtrinsic::from_bytes(client, hex_encoded); + let result = extrinsic + .submit_and_watch() + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))? + .wait_for_finalized_success() + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))?; + Ok(format!("{:?}", result.extrinsic_hash())) +} /// Encodes the call data for a given extrinsic into a hexadecimal string. /// /// # Arguments @@ -97,6 +119,20 @@ pub fn encode_call_data( Ok(format!("0x{}", hex::encode(call_data))) } +/// Encodes the call data for a given extrinsic into a hexadecimal string. +/// +/// # Arguments +/// * `client` - The client used to interact with the chain. +/// * `xt` - The extrinsic whose call data will be encoded and returned. +pub fn call_data( + client: &OnlineClient, + xt: &DynamicPayload, +) -> Result, Error> { + Ok(xt + .encode_call_data(&client.metadata()) + .map_err(|e| Error::CallDataEncodingError(e.to_string()))?) +} + /// Decodes a hex-encoded string into a vector of bytes representing the call data. /// /// # Arguments diff --git a/crates/pop-parachains/src/lib.rs b/crates/pop-parachains/src/lib.rs index 5bba8154..bdb182c2 100644 --- a/crates/pop-parachains/src/lib.rs +++ b/crates/pop-parachains/src/lib.rs @@ -17,14 +17,14 @@ pub use build::{ generate_plain_chain_spec, generate_raw_chain_spec, is_supported, ChainSpec, }; pub use call::{ - construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, metadata::{ action::{supported_actions, Action}, find_dispatchable_by_name, find_pallet_by_name, params::Param, parse_chain_metadata, Function, Pallet, }, - set_up_client, sign_and_submit_extrinsic, CallData, + set_up_client, sign_and_submit_extrinsic, submit_signed_extrinsic, CallData, }; pub use errors::Error; pub use indexmap::IndexSet; From 3915463f2074458075e76f64db2072b36c7d2acf Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 15:00:42 +0100 Subject: [PATCH 088/143] test: unit tests in pop-cli --- crates/pop-cli/src/commands/call/chain.rs | 11 ++++++----- crates/pop-cli/src/common/wallet.rs | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 8a0e284c..a6aa6b9c 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -476,7 +476,7 @@ impl Call { } full_message.push_str(&format!(" --url {}", chain.url)); if self.use_wallet { - full_message.push_str("--use-wallet"); + full_message.push_str(" --use-wallet"); } else { full_message.push_str(&format!(" --suri {}", self.suri)); } @@ -710,7 +710,7 @@ mod tests { ) .expect_input("The value for `remark` might be too large to enter. You may enter the path to a file instead.", "0x11".into()) .expect_confirm("Would you like to dispatch this function call with `Root` origin?", true) - .expect_input("Signer of the extrinsic:", "//Bob".into()); + .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", true); let chain = call_config.configure_chain(&mut cli).await?; assert_eq!(chain.url, Url::parse(POP_NETWORK_TESTNET_URL)?); @@ -719,9 +719,10 @@ mod tests { assert_eq!(call_chain.function.pallet, "System"); assert_eq!(call_chain.function.name, "remark"); assert_eq!(call_chain.args, ["0x11".to_string()].to_vec()); - assert_eq!(call_chain.suri, "//Bob"); + assert_eq!(call_chain.suri, "//Alice"); // Default value + assert!(call_chain.use_wallet); assert!(call_chain.sudo); - assert_eq!(call_chain.display(&chain), "pop call chain --pallet System --function remark --args \"0x11\" --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Bob --sudo"); + assert_eq!(call_chain.display(&chain), "pop call chain --pallet System --function remark --args \"0x11\" --url wss://rpc1.paseo.popnetwork.xyz/ --use-wallet --sudo"); cli.verify() } @@ -919,7 +920,7 @@ mod tests { assert_eq!(call_config.function, None); assert_eq!(call_config.args.len(), 0); assert!(!call_config.sudo); - assert!(call_config.use_wallet); + assert!(!call_config.use_wallet); Ok(()) } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 163e8aa9..638b3805 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -33,6 +33,7 @@ pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Resu Ok(signed_payload) } +#[ignore] #[cfg(test)] mod tests { use super::*; From 995a8b4a5862775c77655e14f7e83a317240d374 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 15:23:26 +0100 Subject: [PATCH 089/143] feat: secure signing for call from call_data --- crates/pop-cli/src/commands/call/chain.rs | 89 +++++++++++++++-------- 1 file changed, 58 insertions(+), 31 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index a6aa6b9c..a50ee66c 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -102,7 +102,8 @@ impl CallChainCommand { if self.use_wallet { // Sign and submit the extrinsic. - if let Err(e) = call.submit_extrinsic_secure_signing(&chain, &xt, &mut cli).await { + let call_data = call_data(&chain.client, &xt)?; + if let Err(e) = submit_extrinsic_secure_signing(&chain, call_data, &mut cli).await { display_message(&e.to_string(), false, &mut cli)?; break; } @@ -252,12 +253,37 @@ impl CallChainCommand { call_data: &str, cli: &mut impl Cli, ) -> Result<()> { - // Resolve who is signing the extrinsic. - // TODO: HERE TOO + // Resolve who is signing the extrinsic. If a `suri` was provided via the command line, + // skip the prompt. + let mut use_wallet = self.use_wallet; let suri = match self.suri.as_ref() { - Some(suri) => suri, - None => &cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, + Some(suri) => suri.clone(), + None => { + if !self.use_wallet { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + .initial_value(true) + .interact()? { + use_wallet = true; + DEFAULT_URI.to_string() + } + else { + cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + } + } else { + DEFAULT_URI.to_string() + } + }, }; + // Return early + if use_wallet { + let call_data_bytes = + decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; + submit_extrinsic_secure_signing(chain, call_data_bytes, cli) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + display_message("Call complete.", true, cli)?; + return Ok(()); + } cli.info(format!("Encoded call data: {}", call_data))?; if !self.skip_confirm && !cli @@ -430,31 +456,6 @@ impl Call { Ok(()) } - // Sign and submit an extrinsic. - async fn submit_extrinsic_secure_signing( - &mut self, - chain: &Chain, - xt: &DynamicPayload, - cli: &mut impl Cli, - ) -> Result<()> { - let call_data = call_data(&chain.client, xt)?; - let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; - if let Some(payload) = maybe_payload { - cli.success("Signed payload received.")?; - let spinner = cliclack::spinner(); - spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); - - let result = submit_signed_extrinsic(chain.client.clone(), payload) - .await - .map_err(|err| anyhow!("{}", format!("{err:?}")))?; - - spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); - } else { - display_message("Signed payload doesn't exist.", false, cli)?; - } - Ok(()) - } - fn display(&self, chain: &Chain) -> String { let mut full_message = "pop call chain".to_string(); full_message.push_str(&format!(" --pallet {}", self.function.pallet)); @@ -487,6 +488,31 @@ impl Call { } } +// Sign and submit an extrinsic. +async fn submit_extrinsic_secure_signing( + chain: &Chain, + call_data: Vec, + cli: &mut impl Cli, +) -> Result<()> { + let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; + if let Some(payload) = maybe_payload { + cli.success("Signed payload received.")?; + let spinner = cliclack::spinner(); + spinner.start( + "Submitting the extrinsic and then waiting for finalization, please be patient...", + ); + + let result = submit_signed_extrinsic(chain.client.clone(), payload) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + + spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); + } else { + display_message("Signed payload doesn't exist.", false, cli)?; + } + Ok(()) +} + // Displays a message to the user, with formatting based on the success status. fn display_message(message: &str, success: bool, cli: &mut impl Cli) -> Result<()> { if success { @@ -853,6 +879,7 @@ mod tests { sudo: false, }; let mut cli = MockCli::new() + .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", false) .expect_input("Signer of the extrinsic:", "//Bob".into()) .expect_confirm("Do you want to submit the extrinsic?", false) .expect_outro_cancel("Extrinsic with call data 0x00000411 was not submitted."); @@ -875,7 +902,7 @@ mod tests { pallet: None, function: None, args: vec![].to_vec(), - url: Some(Url::parse("wss://polkadot-rpc.publicnode.com")?), + url: Some(Url::parse(POLKADOT_NETWORK_URL)?), suri: Some("//Alice".to_string()), use_wallet: false, skip_confirm: false, From 60c9b09de65a297367cb5562a24501f831f336ee Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 09:15:34 +0100 Subject: [PATCH 090/143] refactor: docs and remove unneded functions --- crates/pop-cli/src/commands/call/chain.rs | 27 +++++++++++++---------- crates/pop-parachains/src/call/mod.rs | 20 +++-------------- crates/pop-parachains/src/lib.rs | 7 ++++-- 3 files changed, 23 insertions(+), 31 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index a50ee66c..6226390f 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -9,10 +9,11 @@ use crate::{ use anyhow::{anyhow, Result}; use clap::Args; use pop_parachains::{ - call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, find_dispatchable_by_name, find_pallet_by_name, parse_chain_metadata, set_up_client, - sign_and_submit_extrinsic, submit_signed_extrinsic, supported_actions, Action, CallData, - DynamicPayload, Function, OnlineClient, Pallet, Param, SubstrateConfig, + sign_and_submit_extrinsic, submit_signed_extrinsic, submit_signed_extrinsic, supported_actions, + Action, CallData, DynamicPayload, Function, OnlineClient, Pallet, Param, Payload, + SubstrateConfig, }; use url::Url; @@ -102,8 +103,10 @@ impl CallChainCommand { if self.use_wallet { // Sign and submit the extrinsic. - let call_data = call_data(&chain.client, &xt)?; - if let Err(e) = submit_extrinsic_secure_signing(&chain, call_data, &mut cli).await { + let call_data = xt.encode_call_data(&chain.client.metadata())?; + if let Err(e) = + submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await + { display_message(&e.to_string(), false, &mut cli)?; break; } @@ -223,13 +226,13 @@ impl CallChainCommand { .initial_value(true) .interact()? { self.use_wallet = true; - DEFAULT_URI.to_string() + DEFAULT_URI.to_string() // Default value because the user is using the browser wallet. } else { cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? } } else { - DEFAULT_URI.to_string() + DEFAULT_URI.to_string() // Default value because the user is using the browser wallet. } }, }; @@ -274,11 +277,11 @@ impl CallChainCommand { } }, }; - // Return early + // Perform signing steps with wallet integration and return early. if use_wallet { let call_data_bytes = decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; - submit_extrinsic_secure_signing(chain, call_data_bytes, cli) + submit_extrinsic_with_secure_signing(chain, call_data_bytes, cli) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; display_message("Call complete.", true, cli)?; @@ -488,8 +491,8 @@ impl Call { } } -// Sign and submit an extrinsic. -async fn submit_extrinsic_secure_signing( +// Sign and submit an extrinsic using wallet integration. +async fn submit_extrinsic_with_secure_signing( chain: &Chain, call_data: Vec, cli: &mut impl Cli, @@ -508,7 +511,7 @@ async fn submit_extrinsic_secure_signing( spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); } else { - display_message("Signed payload doesn't exist.", false, cli)?; + display_message("No signed payload received.", false, cli)?; } Ok(()) } diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs index dacf17e0..32b27aee 100644 --- a/crates/pop-parachains/src/call/mod.rs +++ b/crates/pop-parachains/src/call/mod.rs @@ -82,12 +82,11 @@ pub async fn sign_and_submit_extrinsic( Ok(format!("Extrinsic Submitted with hash: {:?}\n\n{}", result.extrinsic_hash(), events)) } -/// TODO: Signs and submits a given extrinsic. +/// Submits a signed extrinsic. /// /// # Arguments /// * `client` - The client used to interact with the chain. -/// * `xt` - The extrinsic to be signed and submitted. -/// * `suri` - The secret URI (e.g., mnemonic or private key) for signing the extrinsic. +/// * `payload` - The signed payload string to be submitted. pub async fn submit_signed_extrinsic( client: OnlineClient, payload: String, @@ -104,6 +103,7 @@ pub async fn submit_signed_extrinsic( .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))?; Ok(format!("{:?}", result.extrinsic_hash())) } + /// Encodes the call data for a given extrinsic into a hexadecimal string. /// /// # Arguments @@ -119,20 +119,6 @@ pub fn encode_call_data( Ok(format!("0x{}", hex::encode(call_data))) } -/// Encodes the call data for a given extrinsic into a hexadecimal string. -/// -/// # Arguments -/// * `client` - The client used to interact with the chain. -/// * `xt` - The extrinsic whose call data will be encoded and returned. -pub fn call_data( - client: &OnlineClient, - xt: &DynamicPayload, -) -> Result, Error> { - Ok(xt - .encode_call_data(&client.metadata()) - .map_err(|e| Error::CallDataEncodingError(e.to_string()))?) -} - /// Decodes a hex-encoded string into a vector of bytes representing the call data. /// /// # Arguments diff --git a/crates/pop-parachains/src/lib.rs b/crates/pop-parachains/src/lib.rs index bdb182c2..7e70c214 100644 --- a/crates/pop-parachains/src/lib.rs +++ b/crates/pop-parachains/src/lib.rs @@ -17,7 +17,7 @@ pub use build::{ generate_plain_chain_spec, generate_raw_chain_spec, is_supported, ChainSpec, }; pub use call::{ - call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, metadata::{ action::{supported_actions, Action}, find_dispatchable_by_name, find_pallet_by_name, @@ -31,7 +31,10 @@ pub use indexmap::IndexSet; pub use new_pallet::{create_pallet_template, new_pallet_options::*, TemplatePalletConfig}; pub use new_parachain::instantiate_template_dir; // External export from subxt. -pub use subxt::{tx::DynamicPayload, OnlineClient, SubstrateConfig}; +pub use subxt::{ + tx::{DynamicPayload, Payload}, + OnlineClient, SubstrateConfig, +}; pub use templates::{Config, Parachain, Provider}; pub use up::Zombienet; pub use utils::helpers::is_initial_endowment_valid; From 094aea19d914633159b208ea4ed5865cbe5e3661 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 09:25:43 +0100 Subject: [PATCH 091/143] refactor: replace hex library --- Cargo.lock | 1 - Cargo.toml | 1 - crates/pop-cli/src/commands/call/chain.rs | 21 +++++++------------ crates/pop-parachains/Cargo.toml | 1 - .../pop-parachains/src/call/metadata/mod.rs | 7 ++++--- crates/pop-parachains/src/call/mod.rs | 7 +++---- 6 files changed, 15 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3f401a58..dc13bcc0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9505,7 +9505,6 @@ dependencies = [ "duct", "flate2", "glob", - "hex", "indexmap 2.7.0", "mockito", "pop-common", diff --git a/Cargo.toml b/Cargo.toml index 3effb7c2..c96a1bfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,6 @@ contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branc #contract-transcode = "5.0.0" contract-transcode = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" -hex = { version = "0.4.3", default-features = false } # parachains askama = "0.12" diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 6226390f..420961bf 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -101,21 +101,16 @@ impl CallChainCommand { }, }; - if self.use_wallet { - // Sign and submit the extrinsic. + // Sign and submit the extrinsic. + let result = if self.use_wallet { let call_data = xt.encode_call_data(&chain.client.metadata())?; - if let Err(e) = - submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await - { - display_message(&e.to_string(), false, &mut cli)?; - break; - } + submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await } else { - // Sign and submit the extrinsic. - if let Err(e) = call.submit_extrinsic(&chain.client, xt, &mut cli).await { - display_message(&e.to_string(), false, &mut cli)?; - break; - } + call.submit_extrinsic(&chain.client, xt, &mut cli).await + }; + + if let Err(e) = result { + display_message(&e.to_string(), false, &mut cli)?; } if !prompt_to_repeat_call diff --git a/crates/pop-parachains/Cargo.toml b/crates/pop-parachains/Cargo.toml index 19d8361d..6380fbd1 100644 --- a/crates/pop-parachains/Cargo.toml +++ b/crates/pop-parachains/Cargo.toml @@ -24,7 +24,6 @@ tokio.workspace = true url.workspace = true askama.workspace = true -hex.workspace = true indexmap.workspace = true reqwest.workspace = true scale-info.workspace = true diff --git a/crates/pop-parachains/src/call/metadata/mod.rs b/crates/pop-parachains/src/call/metadata/mod.rs index 1f53f523..5a9a9a2c 100644 --- a/crates/pop-parachains/src/call/metadata/mod.rs +++ b/crates/pop-parachains/src/call/metadata/mod.rs @@ -4,7 +4,7 @@ use crate::errors::Error; use params::Param; use scale_value::stringify::custom_parsers; use std::fmt::{Display, Formatter}; -use subxt::{dynamic::Value, Metadata, OnlineClient, SubstrateConfig}; +use subxt::{dynamic::Value, utils::to_hex, Metadata, OnlineClient, SubstrateConfig}; pub mod action; pub mod params; @@ -179,7 +179,7 @@ pub fn parse_dispatchable_arguments( .map(|(param, raw_param)| { // Convert sequence parameters to hex if is_sequence let processed_param = if param.is_sequence && !raw_param.starts_with("0x") { - format!("0x{}", hex::encode(raw_param)) + to_hex(&raw_param) } else { raw_param }; @@ -199,6 +199,7 @@ mod tests { use crate::{call::tests::POP_NETWORK_TESTNET_URL, set_up_client}; use anyhow::Result; + use sp_core::bytes::from_hex; use subxt::ext::scale_bits; #[tokio::test] @@ -283,7 +284,7 @@ mod tests { ] .to_vec(); let addr: Vec<_> = - hex::decode("8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48") + from_hex("8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48") .unwrap() .into_iter() .map(|b| Value::u128(b as u128)) diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs index 32b27aee..f5bb05b7 100644 --- a/crates/pop-parachains/src/call/mod.rs +++ b/crates/pop-parachains/src/call/mod.rs @@ -5,7 +5,7 @@ use pop_common::{ call::{DefaultEnvironment, DisplayEvents, TokenMetadata, Verbosity}, create_signer, }; -use sp_core::bytes::from_hex; +use sp_core::bytes::{from_hex, to_hex}; use subxt::{ dynamic::Value, tx::{DynamicPayload, Payload, SubmittableExtrinsic}, @@ -116,7 +116,7 @@ pub fn encode_call_data( let call_data = xt .encode_call_data(&client.metadata()) .map_err(|e| Error::CallDataEncodingError(e.to_string()))?; - Ok(format!("0x{}", hex::encode(call_data))) + Ok(to_hex(&call_data, false)) } /// Decodes a hex-encoded string into a vector of bytes representing the call data. @@ -124,8 +124,7 @@ pub fn encode_call_data( /// # Arguments /// * `call_data` - The hex-encoded string representing call data. pub fn decode_call_data(call_data: &str) -> Result, Error> { - hex::decode(call_data.trim_start_matches("0x")) - .map_err(|e| Error::CallDataDecodingError(e.to_string())) + from_hex(call_data).map_err(|e| Error::CallDataDecodingError(e.to_string())) } /// This struct implements the [`Payload`] trait and is used to submit From d51bcf71e2bbaccf83610df30d1ed67c85c338ab Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 20:25:44 +0100 Subject: [PATCH 092/143] fix: rebase issues --- Cargo.lock | 1147 ++++++++------------ crates/pop-cli/src/cli.rs | 38 - crates/pop-cli/src/commands/call/chain.rs | 21 +- crates/pop-cli/src/commands/up/contract.rs | 48 - crates/pop-cli/src/common/wallet.rs | 3 - crates/pop-cli/src/wallet_integration.rs | 77 +- crates/pop-contracts/src/up.rs | 120 +- 7 files changed, 543 insertions(+), 911 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dc13bcc0..ba7959cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -724,7 +724,7 @@ dependencies = [ "parachains-runtimes-test-utils", "parity-scale-codec", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -749,7 +749,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -1080,16 +1080,6 @@ dependencies = [ "log", ] -[[package]] -name = "binary-merkle-tree" -version = "15.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" -dependencies = [ - "hash-db", - "log", -] - [[package]] name = "bincode" version = "1.3.3" @@ -1245,9 +1235,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.16.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aed08d3adb6ebe0eff737115056652670ae290f177759aac19c30456135f94c" +checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -1260,7 +1250,7 @@ dependencies = [ "hyper 1.5.1", "hyper-named-pipe", "hyper-util", - "hyperlocal-next", + "hyperlocal", "log", "pin-project-lite", "serde", @@ -1278,9 +1268,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.44.0-rc.2" +version = "1.47.1-rc.27.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709d9aa1c37abb89d40f19f5d0ad6f0d88cb1581264e571c9350fc5bb89cf1c5" +checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" dependencies = [ "serde", "serde_repr", @@ -1336,7 +1326,7 @@ dependencies = [ "serde", "sp-consensus-grandpa", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1371,7 +1361,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1404,7 +1394,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1423,7 +1413,7 @@ dependencies = [ "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1444,7 +1434,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-std", "sp-trie 37.0.0", @@ -1467,7 +1457,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-consensus-grandpa", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", ] @@ -1499,7 +1489,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -1516,7 +1506,7 @@ dependencies = [ "scale-info", "snowbridge-core", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", ] @@ -1558,7 +1548,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -1590,7 +1580,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", "staging-xcm 14.2.0", @@ -1617,9 +1607,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" dependencies = [ "memchr", "regex-automata 0.4.9", @@ -1713,21 +1703,7 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "thiserror 1.0.69", @@ -1741,7 +1717,7 @@ checksum = "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "thiserror 2.0.6", @@ -1759,9 +1735,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" +checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" dependencies = [ "jobserver", "libc", @@ -2033,7 +2009,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata 0.18.1", + "cargo_metadata 0.19.1", "clap", "colored", "contract-metadata", @@ -2041,11 +2017,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde 0.4.0", + "impl-serde 0.5.0", "parity-scale-codec", "regex", "rustc_version 0.4.1", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "strum 0.26.3", @@ -2060,7 +2036,7 @@ dependencies = [ "walkdir", "wasm-encoder", "wasm-opt", - "wasmparser 0.207.0", + "wasmparser 0.220.0", "which", "zip", ] @@ -2081,7 +2057,7 @@ dependencies = [ "hex", "ink_env", "ink_metadata", - "itertools 0.12.1", + "itertools 0.13.0", "pallet-contracts-uapi-next", "parity-scale-codec", "rust_decimal", @@ -2103,8 +2079,8 @@ version = "5.0.1" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", - "impl-serde 0.4.0", - "semver 1.0.23", + "impl-serde 0.5.0", + "semver 1.0.24", "serde", "serde_json", "url", @@ -2124,11 +2100,11 @@ dependencies = [ "indexmap 2.7.0", "ink_env", "ink_metadata", - "itertools 0.12.1", + "itertools 0.13.0", "nom", "nom-supreme", "parity-scale-codec", - "primitive-types 0.12.2", + "primitive-types 0.13.1", "scale-info", "serde", "serde_json", @@ -2329,14 +2305,13 @@ checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "libc", - "mio 0.8.11", + "mio", "parking_lot", "rustix 0.38.42", "signal-hook", @@ -2431,7 +2406,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2448,7 +2423,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2479,7 +2454,7 @@ dependencies = [ "sp-externalities 0.29.0", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-std", "sp-trie 37.0.0", @@ -2512,7 +2487,7 @@ dependencies = [ "frame-system", "pallet-session", "parity-scale-codec", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2528,7 +2503,7 @@ dependencies = [ "parity-scale-codec", "polkadot-primitives 16.0.0", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2543,7 +2518,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2567,7 +2542,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -2585,7 +2560,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2600,7 +2575,7 @@ dependencies = [ "polkadot-primitives 15.0.0", "sp-api", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2615,7 +2590,7 @@ dependencies = [ "polkadot-primitives 16.0.0", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-trie 37.0.0", "staging-xcm 14.2.0", ] @@ -2660,7 +2635,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2686,7 +2661,7 @@ dependencies = [ "pallet-asset-conversion", "parity-scale-codec", "polkadot-runtime-common", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -2701,7 +2676,7 @@ dependencies = [ "cumulus-primitives-core", "parity-scale-codec", "polkadot-primitives 16.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-trie 37.0.0", ] @@ -2748,9 +2723,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e1ec88093d2abd9cf1b09ffd979136b8e922bf31cad966a8fe0d73233112ef" +checksum = "a5a32d755fe20281b46118ee4b507233311fb7a48a0cfd42f554b93640521a2f" dependencies = [ "cc", "cxxbridge-cmd", @@ -2762,9 +2737,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" +checksum = "11645536ada5d1c8804312cbffc9ab950f2216154de431de930da47ca6955199" dependencies = [ "cc", "codespan-reporting", @@ -2776,9 +2751,9 @@ dependencies = [ [[package]] name = "cxxbridge-cmd" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c23bfff654d6227cbc83de8e059d2f8678ede5fc3a6c5a35d5c379983cc61e6" +checksum = "ebcc9c78e3c7289665aab921a2b394eaffe8bdb369aa18d81ffc0f534fd49385" dependencies = [ "clap", "codespan-reporting", @@ -2789,15 +2764,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c01b36e22051bc6928a78583f1621abaaf7621561c2ada1b00f7878fbe2caa" +checksum = "3a22a87bd9e78d7204d793261470a4c9d585154fddd251828d8aefbb5f74c3bf" [[package]] name = "cxxbridge-macro" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e14013136fac689345d17b9a6df55977251f11d333c0a571e8d963b55e1f95" +checksum = "1dfdb020ff8787c5daf6e0dca743005cc8782868faeadfbabb8824ede5cb1c72" dependencies = [ "proc-macro2", "quote", @@ -3463,6 +3438,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + [[package]] name = "fastrand" version = "2.3.0" @@ -3630,7 +3611,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-storage 21.0.0", "static_assertions", @@ -3648,7 +3629,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3691,7 +3672,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3709,7 +3690,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", ] @@ -3750,7 +3731,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3785,7 +3766,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", "sp-state-machine 0.43.0", "sp-std", @@ -3854,7 +3835,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-version", "sp-weights", @@ -3872,7 +3853,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3895,7 +3876,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -4525,7 +4506,7 @@ dependencies = [ "http 1.2.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -4593,10 +4574,10 @@ dependencies = [ ] [[package]] -name = "hyperlocal-next" -version = "0.9.0" +name = "hyperlocal" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" +checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ "hex", "http-body-util", @@ -4815,6 +4796,15 @@ dependencies = [ name = "impl-serde" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", @@ -5086,15 +5076,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.14" @@ -5193,7 +5174,7 @@ dependencies = [ "http 1.2.0", "jsonrpsee-core", "pin-project", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "rustls-platform-verifier", "soketto", @@ -5250,19 +5231,6 @@ dependencies = [ "url", ] -[[package]] -name = "jsonrpsee-ws-client" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" -dependencies = [ - "http 1.2.0", - "jsonrpsee-client-transport 0.24.7", - "jsonrpsee-core 0.24.7", - "jsonrpsee-types 0.24.7", - "url", -] - [[package]] name = "k256" version = "0.13.4" @@ -5904,6 +5872,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", + "log", "wasi", "windows-sys 0.52.0", ] @@ -6332,7 +6301,7 @@ dependencies = [ "sp-core 34.0.0", "sp-crypto-hashing", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6351,7 +6320,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6370,7 +6339,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6385,7 +6354,7 @@ dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6400,7 +6369,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6418,7 +6387,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6435,7 +6404,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6451,7 +6420,7 @@ dependencies = [ "pallet-assets", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6466,7 +6435,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6483,7 +6452,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6499,7 +6468,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-authority-discovery", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6513,7 +6482,7 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6535,7 +6504,7 @@ dependencies = [ "sp-consensus-babe", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -6558,7 +6527,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", ] @@ -6575,7 +6544,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6593,7 +6562,7 @@ dependencies = [ "scale-info", "serde", "sp-consensus-beefy", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -6620,7 +6589,7 @@ dependencies = [ "sp-consensus-beefy", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", ] @@ -6639,7 +6608,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6658,7 +6627,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-consensus-grandpa", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -6677,7 +6646,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", ] @@ -6699,7 +6668,7 @@ dependencies = [ "pallet-bridge-grandpa", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -6724,7 +6693,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-arithmetic", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -6744,7 +6713,7 @@ dependencies = [ "sp-api", "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6763,7 +6732,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6782,7 +6751,7 @@ dependencies = [ "parity-scale-codec", "rand", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -6800,7 +6769,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6815,7 +6784,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6843,7 +6812,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -6879,7 +6848,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -6949,7 +6918,7 @@ dependencies = [ "scale-info", "serde", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6968,7 +6937,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6983,7 +6952,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7002,7 +6971,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7018,7 +6987,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7040,7 +7009,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "strum 0.26.3", ] @@ -7055,7 +7024,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7073,7 +7042,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7092,7 +7061,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7112,7 +7081,7 @@ dependencies = [ "sp-core 34.0.0", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7133,7 +7102,7 @@ dependencies = [ "sp-consensus-grandpa", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -7152,7 +7121,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7171,7 +7140,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7189,7 +7158,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7203,7 +7172,7 @@ dependencies = [ "parity-scale-codec", "safe-mix", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7217,7 +7186,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7234,7 +7203,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7253,7 +7222,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -7272,7 +7241,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7292,7 +7261,7 @@ dependencies = [ "sp-arithmetic", "sp-io 38.0.0", "sp-mixnet", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7310,7 +7279,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-mmr-primitives", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7326,7 +7295,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7343,7 +7312,7 @@ dependencies = [ "pallet-nfts", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7361,7 +7330,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7388,7 +7357,7 @@ dependencies = [ "scale-info", "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7404,7 +7373,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7421,7 +7390,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", "sp-tracing 17.0.1", ] @@ -7442,7 +7411,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-staking 36.0.0", ] @@ -7471,7 +7440,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7495,7 +7464,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7514,7 +7483,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7532,7 +7501,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7549,7 +7518,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7564,7 +7533,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7583,7 +7552,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7598,7 +7567,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7616,7 +7585,7 @@ dependencies = [ "serde", "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7633,7 +7602,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7661,7 +7630,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -7677,7 +7646,7 @@ dependencies = [ "frame-system", "parity-wasm", "polkavm-linker 0.10.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "tempfile", "toml 0.8.19", ] @@ -7709,7 +7678,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -7753,7 +7722,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7769,7 +7738,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7788,7 +7757,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-arithmetic", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7807,7 +7776,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7824,7 +7793,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -7839,7 +7808,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7857,7 +7826,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "sp-state-machine 0.43.0", @@ -7877,7 +7846,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "rand", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", ] @@ -7891,7 +7860,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7909,7 +7878,7 @@ dependencies = [ "scale-info", "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7930,7 +7899,7 @@ dependencies = [ "serde", "sp-application-crypto 38.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7969,7 +7938,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7986,7 +7955,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-statement-store", ] @@ -8003,7 +7972,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8021,7 +7990,7 @@ dependencies = [ "scale-info", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-storage 21.0.0", "sp-timestamp", ] @@ -8042,7 +8011,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8058,7 +8027,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8070,7 +8039,7 @@ dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -8090,7 +8059,7 @@ dependencies = [ "serde", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-transaction-storage-proof", ] @@ -8110,7 +8079,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8128,7 +8097,7 @@ dependencies = [ "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8143,7 +8112,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8159,7 +8128,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8174,7 +8143,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8189,7 +8158,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8209,7 +8178,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -8230,7 +8199,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -8252,7 +8221,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8273,7 +8242,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8303,7 +8272,7 @@ dependencies = [ "sp-consensus-aura", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -8333,7 +8302,7 @@ dependencies = [ "sp-consensus-aura", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-parachain-info", "staging-xcm 14.2.0", @@ -8364,12 +8333,6 @@ checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" name = "parity-scale-codec" version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" - -[[package]] -name = "parity-scale-codec" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec 0.7.6", @@ -8624,7 +8587,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8640,7 +8603,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -8667,7 +8630,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 34.0.0", ] @@ -8694,7 +8657,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -8739,7 +8702,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "staging-xcm 14.2.0", @@ -8802,7 +8765,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "sp-std", @@ -9017,7 +8980,7 @@ dependencies = [ "sp-mmr-primitives", "sp-npos-elections", "sp-offchain", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-session", "sp-staking 36.0.0", @@ -9068,7 +9031,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-offchain", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-storage 21.0.0", "sp-transaction-pool", @@ -9307,58 +9270,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" -[[package]] -name = "polling" -version = "3.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" -dependencies = [ - "polkavm-derive-impl 0.10.0", - "syn 2.0.90", -] - -[[package]] -name = "polkavm-linker" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" -dependencies = [ - "gimli 0.28.1", - "hashbrown 0.14.5", - "log", - "object 0.32.2", - "polkavm-common 0.9.0", - "regalloc2 0.9.3", - "rustc-demangle", -] - -[[package]] -name = "polkavm-linker" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" -dependencies = [ - "gimli 0.28.1", - "hashbrown 0.14.5", - "log", - "object 0.36.5", - "polkavm-common 0.10.0", - "regalloc2 0.9.3", - "rustc-demangle", -] - -[[package]] -name = "polkavm-linux-raw" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" - -[[package]] -name = "polkavm-linux-raw" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" - [[package]] name = "polling" version = "3.7.4" @@ -9424,8 +9335,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tempfile", "tokio", "tower-http 0.6.2", @@ -9453,8 +9364,8 @@ dependencies = [ "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", "thiserror 1.0.69", @@ -9485,8 +9396,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", "thiserror 1.0.69", @@ -9510,12 +9421,12 @@ dependencies = [ "pop-common", "reqwest 0.12.9", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde_json", - "sp-core 31.0.0", + "sp-core 32.0.0", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", + "subxt", "symlink", "tar", "tempfile", @@ -9708,39 +9619,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "proc-macro-warning" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "proc-macro2" version = "1.0.92" @@ -9902,9 +9780,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -10182,7 +10060,7 @@ dependencies = [ "polkadot-runtime-common", "smallvec", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -10282,7 +10160,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.24", ] [[package]] @@ -10326,9 +10204,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "log", "once_cell", @@ -10384,9 +10262,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" [[package]] name = "rustls-platform-verifier" @@ -10399,7 +10277,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -10464,16 +10342,6 @@ dependencies = [ "derive_more 0.99.18", ] -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", -] - [[package]] name = "rw-stream-sink" version = "0.4.0" @@ -10683,18 +10551,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "scale-decode-derive" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" -dependencies = [ - "darling 0.20.10", - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "scale-encode" version = "0.6.0" @@ -11056,13 +10912,28 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" dependencies = [ "serde", ] +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + [[package]] name = "serde" version = "1.0.216" @@ -11310,7 +11181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio 0.8.11", + "mio", "signal-hook", ] @@ -11394,7 +11265,7 @@ dependencies = [ "enumn", "parity-scale-codec", "paste", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -11464,7 +11335,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd 0.5.0", + "ruzstd", "schnorrkel", "serde", "serde_json", @@ -11475,106 +11346,52 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi 0.31.2", + "wasmi", "x25519-dalek", "zeroize", ] [[package]] -name = "smoldot" -version = "0.18.0" +name = "smoldot-light" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" dependencies = [ - "arrayvec 0.7.6", + "async-channel", "async-lock", - "atomic-take", "base64 0.22.1", - "bip39", "blake2-rfc", "bs58", - "chacha20", - "crossbeam-queue", "derive_more 0.99.18", - "ed25519-zebra 4.0.3", "either", - "event-listener 5.3.1", + "event-listener", "fnv", + "futures-channel", "futures-lite", "futures-util", "hashbrown 0.14.5", "hex", - "hmac 0.12.1", "itertools 0.13.0", - "libm", - "libsecp256k1", - "merlin", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", + "log", + "lru 0.12.5", + "parking_lot", "pin-project", - "poly1305", "rand", "rand_chacha", - "ruzstd 0.6.0", - "schnorrkel", "serde", "serde_json", - "sha2 0.10.8", - "sha3", "siphasher", "slab", - "smallvec", - "soketto 0.8.1", - "twox-hash", - "wasmi 0.32.3", - "x25519-dalek", + "smol", + "smoldot", "zeroize", ] [[package]] -name = "smoldot-light" -version = "0.16.2" +name = "snowbridge-amcl" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" -dependencies = [ - "async-channel", - "async-lock", - "base64 0.22.1", - "blake2-rfc", - "bs58", - "derive_more 0.99.18", - "either", - "event-listener", - "fnv", - "futures-channel", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "itertools 0.13.0", - "log", - "lru 0.12.5", - "parking_lot", - "pin-project", - "rand", - "rand_chacha", - "serde", - "serde_json", - "siphasher", - "slab", - "smol", - "smoldot 0.16.0", - "zeroize", -] - -[[package]] -name = "snowbridge-amcl" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" dependencies = [ "parity-scale-codec", "scale-info", @@ -11597,7 +11414,7 @@ dependencies = [ "snowbridge-milagro-bls", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "ssz_rs", "ssz_rs_derive", @@ -11621,7 +11438,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -11644,7 +11461,7 @@ dependencies = [ "serde", "serde-big-array", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -11672,7 +11489,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -11709,7 +11526,7 @@ dependencies = [ "snowbridge-pallet-ethereum-client-fixtures", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "static_assertions", ] @@ -11749,7 +11566,7 @@ dependencies = [ "snowbridge-router-primitives", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11787,7 +11604,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -11806,7 +11623,7 @@ dependencies = [ "snowbridge-core", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11826,7 +11643,7 @@ dependencies = [ "snowbridge-core", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11875,7 +11692,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11934,7 +11751,7 @@ dependencies = [ "sp-core 34.0.0", "sp-externalities 0.29.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-state-machine 0.43.0", "sp-trie 37.0.0", @@ -11959,15 +11776,15 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "33.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" +checksum = "1505fad69251900048ddddc6387265e1545d1a366e3b4dcd57b76a03f0a65ae7" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 31.0.0", - "sp-io 33.0.0", + "sp-core 32.0.0", + "sp-io 34.0.0", "sp-std", ] @@ -12010,7 +11827,7 @@ dependencies = [ "scale-info", "sp-api", "sp-application-crypto 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12021,7 +11838,7 @@ checksum = "74738809461e3d4bd707b5b94e0e0c064a623a74a6a8fe5c98514417a02858dd" dependencies = [ "sp-api", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12037,7 +11854,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-consensus-slots", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-timestamp", ] @@ -12056,7 +11873,7 @@ dependencies = [ "sp-consensus-slots", "sp-core 34.0.0", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-timestamp", ] @@ -12077,7 +11894,7 @@ dependencies = [ "sp-io 38.0.0", "sp-keystore 0.40.0", "sp-mmr-primitives", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "strum 0.26.3", ] @@ -12097,7 +11914,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12109,7 +11926,7 @@ dependencies = [ "parity-scale-codec", "sp-api", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12171,6 +11988,53 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core" +version = "32.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2dac7e47c7ddbb61efe196d5cce99f6ea88926c961fa39909bfeae46fc5a7b" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 3.1.0", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.10.5", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.28.0", + "sp-runtime-interface 27.0.0", + "sp-std", + "sp-storage 21.0.0", + "ss58-registry", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + [[package]] name = "sp-core" version = "34.0.0" @@ -12296,6 +12160,17 @@ dependencies = [ "sp-storage 20.0.0", ] +[[package]] +name = "sp-externalities" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + [[package]] name = "sp-externalities" version = "0.29.0" @@ -12317,7 +12192,7 @@ dependencies = [ "scale-info", "serde_json", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12330,15 +12205,15 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] [[package]] name = "sp-io" -version = "33.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" +checksum = "c44ed47247b6eee76ff703f9fa9f04f99c4104ac1faf629e6d1128e09066b57b" dependencies = [ "bytes", "ed25519-dalek", @@ -12348,15 +12223,15 @@ dependencies = [ "polkavm-derive 0.9.1", "rustversion", "secp256k1 0.28.2", - "sp-core 31.0.0", + "sp-core 32.0.0", "sp-crypto-hashing", - "sp-externalities 0.27.0", - "sp-keystore 0.37.0", - "sp-runtime-interface 26.0.0", - "sp-state-machine 0.38.0", + "sp-externalities 0.28.0", + "sp-keystore 0.38.0", + "sp-runtime-interface 27.0.0", + "sp-state-machine 0.39.0", "sp-std", - "sp-tracing 16.0.0", - "sp-trie 32.0.0", + "sp-tracing 17.0.1", + "sp-trie 33.0.0", "tracing", "tracing-core", ] @@ -12395,15 +12270,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" dependencies = [ "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "strum 0.26.3", ] [[package]] name = "sp-keystore" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" +checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" dependencies = [ "parity-scale-codec", "parking_lot", @@ -12470,7 +12345,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-debug-derive", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] @@ -12485,7 +12360,7 @@ dependencies = [ "serde", "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12496,7 +12371,7 @@ checksum = "2d9de237d72ecffd07f90826eef18360208b16d8de939d54e61591fac0fcbf99" dependencies = [ "sp-api", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12512,9 +12387,9 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "34.0.0" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +checksum = "42ce931b7fbfdeeca1340801dbd4a1cae54ad4c97a1e3dcfcc79709bc800dd46" dependencies = [ "docify", "either", @@ -12532,41 +12407,14 @@ dependencies = [ "sp-core 32.0.0", "sp-io 34.0.0", "sp-std", - "sp-weights 30.0.0", -] - -[[package]] -name = "sp-runtime" -version = "39.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "num-traits", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "sp-weights 31.0.0", - "tracing", + "sp-weights", ] [[package]] name = "sp-runtime" -version = "39.0.2" +version = "39.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" +checksum = "ef567865c042b9002dfa44b8fc850fe611038acdf1e382e539495015f60f692f" dependencies = [ "docify", "either", @@ -12609,6 +12457,26 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "sp-runtime-interface" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "647db5e1dc481686628b41554e832df6ab400c4b43a6a54e54d3b0a71ca404aa" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.28.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", + "static_assertions", +] + [[package]] name = "sp-runtime-interface" version = "28.0.0" @@ -12654,7 +12522,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -12669,7 +12537,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12683,14 +12551,14 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] name = "sp-state-machine" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" +checksum = "21d9078306c3066f1824e41153e1ceec34231d39d9a7e7956b101eadf7b9fd3a" dependencies = [ "hash-db", "log", @@ -12698,11 +12566,10 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 31.0.0", - "sp-externalities 0.27.0", + "sp-core 32.0.0", + "sp-externalities 0.28.0", "sp-panic-handler", - "sp-std", - "sp-trie 32.0.0", + "sp-trie 33.0.0", "thiserror 1.0.69", "tracing", "trie-db 0.28.0", @@ -12748,7 +12615,7 @@ dependencies = [ "sp-core 34.0.0", "sp-crypto-hashing", "sp-externalities 0.29.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "thiserror 1.0.69", "x25519-dalek", @@ -12796,7 +12663,7 @@ dependencies = [ "async-trait", "parity-scale-codec", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] @@ -12832,7 +12699,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc4bf251059485a7dd38fe4afeda8792983511cc47f342ff4695e2dcae6b5247" dependencies = [ "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12846,15 +12713,15 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-trie 37.0.0", ] [[package]] name = "sp-trie" -version = "32.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" +checksum = "d1f5b3620a1c87c265a83d85d7519c6b60c47acf7f77593966afe313d086f00e" dependencies = [ "ahash 0.8.11", "hash-db", @@ -12866,23 +12733,12 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 31.0.0", - "sp-externalities 0.27.0", - "sp-std", - "sp-version-proc-macro", + "sp-core 32.0.0", + "sp-externalities 0.28.0", "thiserror 1.0.69", -] - -[[package]] -name = "sp-version-proc-macro" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aee8f6730641a65fcf0c8f9b1e448af4b3bb083d08058b47528188bccc7b7a7" -dependencies = [ - "parity-scale-codec", - "proc-macro2", - "quote", - "syn 2.0.90", + "tracing", + "trie-db 0.28.0", + "trie-root", ] [[package]] @@ -12921,7 +12777,7 @@ dependencies = [ "scale-info", "serde", "sp-crypto-hashing-proc-macro", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-version-proc-macro", "thiserror 1.0.69", @@ -12977,22 +12833,7 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 25.0.0", - "sp-debug-derive", -] - -[[package]] -name = "sp-weights" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" -dependencies = [ - "bounded-collections", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-debug-derive", ] @@ -13067,7 +12908,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13104,7 +12945,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "xcm-procedural 10.1.0", ] @@ -13126,7 +12967,7 @@ dependencies = [ "scale-info", "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -13147,7 +12988,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "tracing", @@ -13297,7 +13138,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde", "serde_json", "subxt-core", @@ -13313,43 +13154,6 @@ dependencies = [ "web-time", ] -[[package]] -name = "subxt" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" -dependencies = [ - "async-trait", - "derive-where", - "either", - "frame-metadata 17.0.0", - "futures", - "hex", - "impl-serde 0.5.0", - "jsonrpsee 0.24.7", - "parity-scale-codec", - "polkadot-sdk", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", - "scale-value 0.17.0", - "serde", - "serde_json", - "subxt-core 0.38.0", - "subxt-lightclient 0.38.0", - "subxt-macro 0.38.0", - "subxt-metadata 0.38.0", - "thiserror 1.0.69", - "tokio", - "tokio-util", - "tracing", - "url", - "wasm-bindgen-futures", - "web-time", -] - [[package]] name = "subxt-codegen" version = "0.38.0" @@ -13389,7 +13193,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde", "serde_json", "subxt-metadata", @@ -13443,34 +13247,6 @@ dependencies = [ "scale-info", ] -[[package]] -name = "subxt-metadata" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" -dependencies = [ - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "parity-scale-codec", - "polkadot-sdk", - "scale-info", -] - -[[package]] -name = "subxt-metadata" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" -dependencies = [ - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "parity-scale-codec", - "polkadot-sdk", - "scale-info", -] - [[package]] name = "subxt-signer" version = "0.38.0" @@ -13701,7 +13477,7 @@ dependencies = [ "polkadot-core-primitives", "rococo-runtime-constants", "smallvec", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "westend-runtime-constants", ] @@ -13841,7 +13617,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.3", + "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -13897,7 +13673,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.19", + "rustls 0.23.20", "tokio", ] @@ -13952,6 +13728,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml" version = "0.7.8" @@ -14618,12 +14403,12 @@ checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-encoder" -version = "0.207.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17" +checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" dependencies = [ "leb128", - "wasmparser 0.207.0", + "wasmparser 0.220.0", ] [[package]] @@ -14703,29 +14488,6 @@ dependencies = [ "string-interner", ] -[[package]] -name = "wasmi_collections" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" -dependencies = [ - "ahash 0.8.11", - "hashbrown 0.14.5", - "string-interner", -] - -[[package]] -name = "wasmi_core" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" -dependencies = [ - "downcast-rs", - "libm", - "num-traits", - "paste", -] - [[package]] name = "wasmi_core" version = "0.32.3" @@ -14750,15 +14512,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.207.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" +checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", "hashbrown 0.14.5", "indexmap 2.7.0", - "semver 1.0.23", + "semver 1.0.24", "serde", ] @@ -15006,7 +14768,7 @@ dependencies = [ "polkadot-runtime-common", "smallvec", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -15014,9 +14776,9 @@ dependencies = [ [[package]] name = "which" -version = "6.0.3" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" dependencies = [ "either", "home", @@ -15451,7 +15213,7 @@ dependencies = [ "polkadot-runtime-parachains", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -15536,27 +15298,6 @@ dependencies = [ "synstructure 0.13.1", ] -[[package]] -name = "zerofrom" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", - "synstructure 0.13.1", -] - [[package]] name = "zeroize" version = "1.8.1" @@ -15599,28 +15340,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "zip" version = "2.2.1" @@ -15638,9 +15357,9 @@ dependencies = [ [[package]] name = "zombienet-configuration" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22860eef7e651d6e0aa7e37fc3bcba3c2c8b7bd1c140d7ea929caacf2b7fc726" +checksum = "d716b3ff8112d98ced15f53b0c72454f8cde533fe2b68bb04379228961efbd80" dependencies = [ "anyhow", "lazy_static", @@ -15658,9 +15377,9 @@ dependencies = [ [[package]] name = "zombienet-orchestrator" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19b1b2fd2db3153155f21cb84cdd8e5d6faefc3043353b8c90661c44f4660da" +checksum = "4098a7d33b729b59e32c41a87aa4d484bd1b8771a059bbd4edfb4d430b3b2d74" dependencies = [ "anyhow", "async-trait", @@ -15691,9 +15410,9 @@ dependencies = [ [[package]] name = "zombienet-prom-metrics-parser" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" +checksum = "961e30be45b34f6ebeabf29ee2f47b0cd191ea62e40c064752572207509a6f5c" dependencies = [ "pest", "pest_derive", @@ -15702,9 +15421,9 @@ dependencies = [ [[package]] name = "zombienet-provider" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c99cc7c143f1145bda2b2f5a945b8040a898a85fc029dba51f220395a7188d9d" +checksum = "ab0f7f01780b7c99a6c40539d195d979f234305f32808d547438b50829d44262" dependencies = [ "anyhow", "async-trait", @@ -15733,9 +15452,9 @@ dependencies = [ [[package]] name = "zombienet-sdk" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09e5abdad4ad32c1c06cb8fdc4507db026f65987cb5c46ae4224118cc496097b" +checksum = "99a3c5f2d657235b3ab7dc384677e63cde21983029e99106766ecd49e9f8d7f3" dependencies = [ "async-trait", "futures", @@ -15751,9 +15470,9 @@ dependencies = [ [[package]] name = "zombienet-support" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e3310631948f8bb4d394c160c4b063889a4e0c6beadd6b95f9b62d1616ab93c" +checksum = "296f887ea88e07edd771f8e1d0dec5297a58b422f4b884a6292a21ebe03277cb" dependencies = [ "anyhow", "async-trait", diff --git a/crates/pop-cli/src/cli.rs b/crates/pop-cli/src/cli.rs index 3dae776f..f98c934e 100644 --- a/crates/pop-cli/src/cli.rs +++ b/crates/pop-cli/src/cli.rs @@ -146,48 +146,10 @@ impl traits::Confirm for Confirm { fn interact(&mut self) -> Result { self.0.interact() } - /// Sets the initially selected value. - fn initial_value(mut self, initial_value: bool) -> Self { - self.0 = self.0.initial_value(initial_value); - self - } -} - -/// A input prompt using cliclack. -struct Input(cliclack::Input); -impl traits::Input for Input { - /// Sets the default value for the input. - fn default_input(mut self, value: &str) -> Self { - self.0 = self.0.default_input(value); - self - } - /// Starts the prompt interaction. - fn interact(&mut self) -> Result { - self.0.interact() - } - /// Sets the placeholder (hint) text for the input. - fn placeholder(mut self, placeholder: &str) -> Self { - self.0 = self.0.placeholder(placeholder); - self - } - /// Sets whether the input is required. - fn required(mut self, required: bool) -> Self { - self.0 = self.0.required(required); - self - } - /// Sets a validation callback for the input that is called when the user submits. - fn validate( - mut self, - validator: impl Fn(&String) -> std::result::Result<(), &'static str> + 'static, - ) -> Self { - self.0 = self.0.validate(validator); - self - } } /// A input prompt using cliclack. struct Input(cliclack::Input); - impl traits::Input for Input { /// Sets the default value for the input. fn default_input(mut self, value: &str) -> Self { diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 420961bf..d87d349f 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -11,9 +11,8 @@ use clap::Args; use pop_parachains::{ construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, find_dispatchable_by_name, find_pallet_by_name, parse_chain_metadata, set_up_client, - sign_and_submit_extrinsic, submit_signed_extrinsic, submit_signed_extrinsic, supported_actions, - Action, CallData, DynamicPayload, Function, OnlineClient, Pallet, Param, Payload, - SubstrateConfig, + sign_and_submit_extrinsic, submit_signed_extrinsic, supported_actions, Action, CallData, + DynamicPayload, Function, OnlineClient, Pallet, Param, Payload, SubstrateConfig, }; use url::Url; @@ -104,9 +103,10 @@ impl CallChainCommand { // Sign and submit the extrinsic. let result = if self.use_wallet { let call_data = xt.encode_call_data(&chain.client.metadata())?; - submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await + submit_extrinsic_with_secure_signing(&chain.client, &chain.url, call_data, &mut cli) + .await } else { - call.submit_extrinsic(&chain.client, xt, &mut cli).await + call.submit_extrinsic(&chain.client, &chain.url, xt, &mut cli).await }; if let Err(e) = result { @@ -276,7 +276,7 @@ impl CallChainCommand { if use_wallet { let call_data_bytes = decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; - submit_extrinsic_with_secure_signing(chain, call_data_bytes, cli) + submit_extrinsic_with_secure_signing(client, &url, call_data_bytes, cli) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; display_message("Call complete.", true, cli)?; @@ -300,7 +300,7 @@ impl CallChainCommand { spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); let call_data_bytes = decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; - let result = sign_and_submit_extrinsic(client, url, CallData::new(call_data_bytes), suri) + let result = sign_and_submit_extrinsic(client, url, CallData::new(call_data_bytes), &suri) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; @@ -488,11 +488,12 @@ impl Call { // Sign and submit an extrinsic using wallet integration. async fn submit_extrinsic_with_secure_signing( - chain: &Chain, + client: &OnlineClient, + url: &Url, call_data: Vec, cli: &mut impl Cli, ) -> Result<()> { - let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; + let maybe_payload = wait_for_signature(call_data, url.to_string()).await?; if let Some(payload) = maybe_payload { cli.success("Signed payload received.")?; let spinner = cliclack::spinner(); @@ -500,7 +501,7 @@ async fn submit_extrinsic_with_secure_signing( "Submitting the extrinsic and then waiting for finalization, please be patient...", ); - let result = submit_signed_extrinsic(chain.client.clone(), payload) + let result = submit_signed_extrinsic(client.clone(), payload) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 27ad0615..8717ec93 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -357,33 +357,6 @@ impl UpContractCommand { Ok((call_data, hash)) } } - - async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); - - let transaction_data = TransactionData::new(self.url.to_string(), call_data); - // starts server - let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; - - log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; - loop { - // Display error, if any. - if let Some(error) = wallet.take_error().await { - log::error(format!("Signing portal error: {error}"))?; - } - - let state = wallet.state.lock().await; - // If the payload is submitted we terminate the frontend. - if !wallet.is_running() || state.signed_payload.is_some() { - wallet.task_handle.await??; - break; - } - } - - let signed_payload = wallet.state.lock().await.signed_payload.clone(); - Ok(signed_payload) - } } impl From for UpOpts { @@ -423,27 +396,6 @@ fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Opti )); } -fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Option) { - spinner.stop(format!( - "Contract deployed and instantiated:\n{}", - style(format!( - "{}\n{}", - style(format!("{} The contract address is {:?}", console::Emoji("●", ">"), address)) - .dim(), - code_hash - .map(|hash| style(format!( - "{} The contract code hash is {:?}", - console::Emoji("●", ">"), - hash - )) - .dim() - .to_string()) - .unwrap_or_default(), - )) - .dim() - )); -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 638b3805..465b132f 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -2,14 +2,11 @@ use crate::wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}; use cliclack::log; -use sp_core::bytes::to_hex; pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { let ui = FrontendFromString::new(include_str!("../assets/index.html").to_string()); let transaction_data = TransactionData::new(url, call_data); - let call_data_bytes = to_hex(&transaction_data.call_data(), false); - println!("transaction_data: {:?}", call_data_bytes); // starts server let mut wallet = WalletIntegrationManager::new(ui, transaction_data); log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 339ec0be..57b2924e 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -4,7 +4,7 @@ use axum::{ routing::{get, post}, Router, }; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use std::{path::PathBuf, sync::Arc}; use tokio::{ sync::{oneshot, Mutex}, @@ -20,7 +20,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(Deserialize, Clone))] +#[cfg_attr(test, derive(serde::Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -85,12 +85,7 @@ impl WalletIntegrationManager { error: None, })); - // TODO: temporary until we host from here. - let cors = tower_http::cors::CorsLayer::new() - .allow_origin("http://localhost:9090".parse::().unwrap()) - .allow_origin("http://127.0.0.1:9090".parse::().unwrap()) - .allow_methods(Any) // Allow any HTTP method - .allow_headers(Any); // Allow any headers (like 'Content-Type') + let payload = Arc::new(payload); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -107,7 +102,7 @@ impl WalletIntegrationManager { .merge(frontend.serve_content()) // Custom route for serving frontend. .layer(cors); - let addr = "127.0.0.1:9090"; + let rpc_owned = rpc.to_string(); // Will shut down when the signed payload is received. let task_handle = tokio::spawn(async move { @@ -128,6 +123,7 @@ impl WalletIntegrationManager { } /// Signals the wallet integration server to shut down. + #[allow(dead_code)] pub async fn terminate(&mut self) -> anyhow::Result<()> { terminate_helper(&self.state).await } @@ -230,9 +226,12 @@ async fn terminate_helper(handle: &Arc>) -> anyhow::Result<( pub struct FrontendFromDir { content: PathBuf, } - #[allow(dead_code)] -impl FrontendFromDir {} +impl FrontendFromDir { + pub fn new(content: PathBuf) -> Self { + Self { content } + } +} impl Frontend for FrontendFromDir { fn serve_content(&self) -> Router { @@ -245,6 +244,7 @@ pub struct FrontendFromString { content: String, } +#[allow(dead_code)] impl FrontendFromString { pub fn new(content: String) -> Self { Self { content } @@ -261,6 +261,7 @@ impl Frontend for FrontendFromString { #[cfg(test)] mod tests { use super::*; + use serde_json::json; const TEST_HTML: &str = "Hello, world!"; @@ -339,33 +340,33 @@ mod tests { assert!(wim.task_handle.await.is_ok()); } - // #[tokio::test] - // async fn submit_handler_works() { - // // offset port per test to avoid conflicts - // let addr = "127.0.0.1:9092"; - // let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - // let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - // wait().await; - - // let addr = format!("http://{}", wim.rpc_url); - // let response = reqwest::Client::new() - // .post(&format!("{}/submit", addr)) - // .json(&"0xDEADBEEF") - // .send() - // .await - // .expect("Failed to submit payload") - // .text() - // .await - // .expect("Failed to parse response"); - - // assert_eq!(response, json!({"status": "success"})); - // assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - // assert_eq!(wim.is_running(), false); - - // wim.terminate().await.expect("Termination should not fail"); - // assert!(wim.task_handle.await.is_ok()); - // } + #[tokio::test] + async fn submit_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9092"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + let addr = format!("http://{}", wim.rpc_url); + let response = reqwest::Client::new() + .post(&format!("{}/submit", addr)) + .json(&"0xDEADBEEF") + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse response"); + + assert_eq!(response, json!({"status": "success"})); + assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + assert_eq!(wim.is_running(), false); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } #[tokio::test] async fn error_handler_works() { diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index e130ea86..a92a0c3a 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -689,68 +689,68 @@ mod tests { Ok(()) } - #[tokio::test] - async fn get_instantiate_payload_works() -> Result<()> { - const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; - let temp_dir = generate_smart_contract_test_environment()?; - mock_build_process(temp_dir.path().join("testing"))?; + // #[tokio::test] + // async fn get_instantiate_payload_works() -> Result<()> { + // const LOCALHOST_URL: &str = "ws://127.0.0.1:9944"; + // let temp_dir = generate_smart_contract_test_environment()?; + // mock_build_process(temp_dir.path().join("testing"))?; - let cache = temp_dir.path().join(""); + // let cache = temp_dir.path().join(""); - let binary = contracts_node_generator(cache.clone(), None).await?; - binary.source(false, &(), true).await?; - let process = run_contracts_node(binary.path(), None).await?; - - let upload_exec = set_up_upload(UpOpts { - path: Some(temp_dir.path().join("testing")), - constructor: "new".to_string(), - args: [].to_vec(), - value: "1000".to_string(), - gas_limit: None, - proof_size: None, - salt: None, - url: Url::parse(LOCALHOST_URL)?, - suri: "//Alice".to_string(), - }) - .await?; + // let binary = contracts_node_generator(cache.clone(), None).await?; + // binary.source(false, &(), true).await?; + // let process = run_contracts_node(binary.path(), None).await?; - // Only upload a Smart Contract - let upload_result = upload_smart_contract(&upload_exec).await?; - assert!(!upload_result.starts_with("0x0x")); - assert!(upload_result.starts_with("0x")); - //Error when Smart Contract has been already uploaded - assert!(matches!( - upload_smart_contract(&upload_exec).await, - Err(Error::UploadContractError(..)) - )); - - // Instantiate a Smart Contract - let instantiate_exec = set_up_deployment(UpOpts { - path: Some(temp_dir.path().join("testing")), - constructor: "new".to_string(), - args: ["false".to_string()].to_vec(), - value: "0".to_string(), - gas_limit: None, - proof_size: None, - salt: Some(Bytes::from(vec![0x00])), - url: Url::parse(LOCALHOST_URL)?, - suri: "//Alice".to_string(), - }) - .await?; - // First gas estimation - let weight = dry_run_gas_estimate_instantiate(&instantiate_exec).await?; - assert!(weight.ref_time() > 0); - assert!(weight.proof_size() > 0); - - let call_data = get_instantiate_payload(instantiate_exec, weight).await?; - println!("{:?}", to_hex(call_data)); - - //Stop the process contracts-node - Command::new("kill") - .args(["-s", "TERM", &process.id().to_string()]) - .spawn()? - .wait()?; + // let upload_exec = set_up_upload(UpOpts { + // path: Some(temp_dir.path().join("testing")), + // constructor: "new".to_string(), + // args: [].to_vec(), + // value: "1000".to_string(), + // gas_limit: None, + // proof_size: None, + // salt: None, + // url: Url::parse(LOCALHOST_URL)?, + // suri: "//Alice".to_string(), + // }) + // .await?; + + // // Only upload a Smart Contract + // let upload_result = upload_smart_contract(&upload_exec).await?; + // assert!(!upload_result.starts_with("0x0x")); + // assert!(upload_result.starts_with("0x")); + // //Error when Smart Contract has been already uploaded + // assert!(matches!( + // upload_smart_contract(&upload_exec).await, + // Err(Error::UploadContractError(..)) + // )); + + // // Instantiate a Smart Contract + // let instantiate_exec = set_up_deployment(UpOpts { + // path: Some(temp_dir.path().join("testing")), + // constructor: "new".to_string(), + // args: ["false".to_string()].to_vec(), + // value: "0".to_string(), + // gas_limit: None, + // proof_size: None, + // salt: Some(Bytes::from(vec![0x00])), + // url: Url::parse(LOCALHOST_URL)?, + // suri: "//Alice".to_string(), + // }) + // .await?; + // // First gas estimation + // let weight = dry_run_gas_estimate_instantiate(&instantiate_exec).await?; + // assert!(weight.ref_time() > 0); + // assert!(weight.proof_size() > 0); + + // let call_data = get_instantiate_payload(instantiate_exec, weight).await?; + // println!("{:?}", to_hex(call_data)); + + // //Stop the process contracts-node + // Command::new("kill") + // .args(["-s", "TERM", &process.id().to_string()]) + // .spawn()? + // .wait()?; - Ok(()) - } + // Ok(()) + // } } From 2c461be44d1a61b396a86684414f40a2c7c527db Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 20:41:22 +0100 Subject: [PATCH 093/143] fix: merge issues --- Cargo.lock | 1778 +++++---------------- crates/pop-cli/src/commands/call/chain.rs | 40 +- crates/pop-common/Cargo.toml | 1 - crates/pop-common/src/lib.rs | 20 +- crates/pop-contracts/src/call.rs | 2 +- crates/pop-parachains/src/build.rs | 4 +- 6 files changed, 452 insertions(+), 1393 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c1ee9d5..60e0e6f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -724,7 +724,7 @@ dependencies = [ "parachains-runtimes-test-utils", "parity-scale-codec", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -749,7 +749,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -1080,16 +1080,6 @@ dependencies = [ "log", ] -[[package]] -name = "binary-merkle-tree" -version = "15.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" -dependencies = [ - "hash-db", - "log", -] - [[package]] name = "bincode" version = "1.3.3" @@ -1268,7 +1258,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror 1.0.69", + "thiserror 2.0.6", "tokio", "tokio-util", "tower-service", @@ -1336,7 +1326,7 @@ dependencies = [ "serde", "sp-consensus-grandpa", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1371,7 +1361,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1404,7 +1394,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1423,7 +1413,7 @@ dependencies = [ "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1444,7 +1434,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-std", "sp-trie 37.0.0", @@ -1467,7 +1457,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-consensus-grandpa", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", ] @@ -1499,7 +1489,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -1516,7 +1506,7 @@ dependencies = [ "scale-info", "snowbridge-core", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", ] @@ -1558,7 +1548,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -1590,7 +1580,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", "staging-xcm 14.2.0", @@ -1713,7 +1703,7 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "thiserror 1.0.69", @@ -1721,16 +1711,16 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.18.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +checksum = "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.6", ] [[package]] @@ -1745,9 +1735,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" +checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" dependencies = [ "jobserver", "libc", @@ -2013,13 +2003,13 @@ checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" [[package]] name = "contract-build" -version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" +version = "5.0.1" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata 0.18.1", + "cargo_metadata 0.19.1", "clap", "colored", "contract-metadata", @@ -2027,11 +2017,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde 0.4.0", + "impl-serde 0.5.0", "parity-scale-codec", "regex", "rustc_version 0.4.1", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "strum 0.26.3", @@ -2053,8 +2043,8 @@ dependencies = [ [[package]] name = "contract-extrinsics" -version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" +version = "5.0.1" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", "blake2", @@ -2074,10 +2064,10 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-core 31.0.0", - "sp-runtime 34.0.0", - "sp-weights 30.0.0", - "subxt 0.37.0", + "sp-core 32.0.0", + "sp-runtime 35.0.0", + "sp-weights", + "subxt", "tokio", "tracing", "url", @@ -2085,12 +2075,12 @@ dependencies = [ [[package]] name = "contract-metadata" -version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" +version = "5.0.1" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", - "impl-serde 0.4.0", - "semver 1.0.23", + "impl-serde 0.5.0", + "semver 1.0.24", "serde", "serde_json", "url", @@ -2098,8 +2088,8 @@ dependencies = [ [[package]] name = "contract-transcode" -version = "5.0.0-alpha" -source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#cda5248fa4e8e8d0ea74f897672181d404a6c850" +version = "5.0.1" +source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", "base58", @@ -2114,12 +2104,12 @@ dependencies = [ "nom", "nom-supreme", "parity-scale-codec", - "primitive-types 0.12.2", + "primitive-types 0.13.1", "scale-info", "serde", "serde_json", "strsim 0.11.1", - "thiserror 1.0.69", + "thiserror 2.0.6", "tracing", ] @@ -2416,7 +2406,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2433,7 +2423,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2464,7 +2454,7 @@ dependencies = [ "sp-externalities 0.29.0", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-std", "sp-trie 37.0.0", @@ -2497,7 +2487,7 @@ dependencies = [ "frame-system", "pallet-session", "parity-scale-codec", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2513,7 +2503,7 @@ dependencies = [ "parity-scale-codec", "polkadot-primitives 16.0.0", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2528,7 +2518,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2552,7 +2542,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -2570,7 +2560,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2585,7 +2575,7 @@ dependencies = [ "polkadot-primitives 15.0.0", "sp-api", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2600,7 +2590,7 @@ dependencies = [ "polkadot-primitives 16.0.0", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-trie 37.0.0", "staging-xcm 14.2.0", ] @@ -2645,7 +2635,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2671,7 +2661,7 @@ dependencies = [ "pallet-asset-conversion", "parity-scale-codec", "polkadot-runtime-common", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -2686,7 +2676,7 @@ dependencies = [ "cumulus-primitives-core", "parity-scale-codec", "polkadot-primitives 16.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-trie 37.0.0", ] @@ -3406,47 +3396,6 @@ dependencies = [ "uint 0.9.5", ] -[[package]] -name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" -dependencies = [ - "ethereum-types", - "tiny-keccak", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "primitive-types 0.12.2", - "scale-info", - "uint 0.9.5", -] - [[package]] name = "event-listener" version = "5.3.1" @@ -3576,22 +3525,6 @@ dependencies = [ "scale-info", ] -[[package]] -name = "finito" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3" -dependencies = [ - "either", - "futures", - "futures-timer", - "log", - "num-traits", - "parity-scale-codec", - "parking_lot", - "scale-info", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -3664,108 +3597,6 @@ name = "frame-benchmarking" version = "38.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a01bdd47c2d541b38bd892da647d1e972c9d85b4ecd7094ad64f7600175da54d" -dependencies = [ - "frame-support", - "frame-support-procedural", - "frame-system", - "linregress", - "log", - "parity-scale-codec", - "paste", - "scale-info", - "serde", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "sp-storage 21.0.0", - "static_assertions", -] - -[[package]] -name = "frame-benchmarking-pallet-pov" -version = "28.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffde6f573a63eeb1ccb7d2667c5741a11ce93bc30f33712e5326b9d8a811c29" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", -] - -[[package]] -name = "frame-decode" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d3379df61ff3dd871e2dde7d1bcdc0263e613c21c7579b149fd4f0ad9b1dc2" -dependencies = [ - "frame-metadata 17.0.0", - "parity-scale-codec", - "scale-decode 0.14.0", - "scale-info", - "scale-type-resolver 0.2.0", - "sp-crypto-hashing", -] - -[[package]] -name = "frame-election-provider-solution-type" -version = "14.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8156f209055d352994ecd49e19658c6b469d7c6de923bd79868957d0dcfb6f71" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "frame-election-provider-support" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36f5116192c63d39f1b4556fa30ac7db5a6a52575fa241b045f7dfa82ecc2be" -dependencies = [ - "frame-election-provider-solution-type", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-npos-elections", - "sp-runtime 39.0.2", -] - -[[package]] -name = "frame-executive" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c365bf3879de25bbee28e9584096955a02fbe8d7e7624e10675800317f1cee5b" -dependencies = [ - "aquamarine", - "frame-support", - "frame-system", - "frame-try-runtime", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", -] - -[[package]] -name = "frame-metadata" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01bdd47c2d541b38bd892da647d1e972c9d85b4ecd7094ad64f7600175da54d" dependencies = [ "frame-support", "frame-support-procedural", @@ -3900,7 +3731,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3927,7 +3758,7 @@ dependencies = [ "serde_json", "smallvec", "sp-api", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-crypto-hashing-proc-macro", "sp-debug-derive", @@ -3935,12 +3766,12 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", "sp-state-machine 0.43.0", "sp-std", "sp-tracing 17.0.1", - "sp-weights 31.0.0", + "sp-weights", "static_assertions", "tt-call", ] @@ -4004,10 +3835,10 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-version", - "sp-weights 31.0.0", + "sp-weights", ] [[package]] @@ -4022,7 +3853,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -4045,7 +3876,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -5236,24 +5067,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -5344,94 +5157,27 @@ version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5c71d8c1a731cc4227c2f698d377e7848ca12c8a48866fc5e6951c43a4db843" dependencies = [ - "jsonrpsee-client-transport 0.22.5", - "jsonrpsee-core 0.22.5", - "jsonrpsee-http-client", - "jsonrpsee-types 0.22.5", -] - -[[package]] -name = "jsonrpsee" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b089779ad7f80768693755a031cc14a7766aba707cbe886674e3f79e9b7e47" -dependencies = [ - "jsonrpsee-core 0.23.2", - "jsonrpsee-types 0.23.2", - "jsonrpsee-ws-client 0.23.2", -] - -[[package]] -name = "jsonrpsee" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5c71d8c1a731cc4227c2f698d377e7848ca12c8a48866fc5e6951c43a4db843" -dependencies = [ - "jsonrpsee-client-transport 0.24.7", - "jsonrpsee-core 0.24.7", - "jsonrpsee-types 0.24.7", - "jsonrpsee-ws-client 0.24.7", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", + "jsonrpsee-ws-client", ] [[package]] name = "jsonrpsee-client-transport" version = "0.24.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4978087a58c3ab02efc5b07c5e5e2803024536106fd5506f558db172c889b3aa" +checksum = "548125b159ba1314104f5bb5f38519e03a41862786aa3925cf349aae9cdd546e" dependencies = [ + "base64 0.22.1", "futures-util", - "http 0.2.12", - "jsonrpsee-core 0.22.5", + "http 1.2.0", + "jsonrpsee-core", "pin-project", - "rustls-native-certs 0.7.3", - "rustls-pki-types", - "soketto 0.7.1", - "thiserror 1.0.69", - "tokio", - "tokio-rustls 0.25.0", - "tokio-util", - "tracing", - "url", -] - -[[package]] -name = "jsonrpsee-client-transport" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08163edd8bcc466c33d79e10f695cdc98c00d1e6ddfb95cec41b6b0279dd5432" -dependencies = [ - "base64 0.22.1", - "futures-util", - "http 1.2.0", - "jsonrpsee-core 0.23.2", - "pin-project", - "rustls 0.23.20", - "rustls-pki-types", - "rustls-platform-verifier", - "soketto 0.8.1", - "thiserror 1.0.69", - "tokio", - "tokio-rustls 0.26.1", - "tokio-util", - "tracing", - "url", -] - -[[package]] -name = "jsonrpsee-client-transport" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548125b159ba1314104f5bb5f38519e03a41862786aa3925cf349aae9cdd546e" -dependencies = [ - "base64 0.22.1", - "futures-util", - "http 1.2.0", - "jsonrpsee-core 0.24.7", - "pin-project", - "rustls 0.23.20", + "rustls 0.23.20", "rustls-pki-types", "rustls-platform-verifier", - "soketto 0.8.1", + "soketto", "thiserror 1.0.69", "tokio", "tokio-rustls 0.26.1", @@ -5449,50 +5195,7 @@ dependencies = [ "async-trait", "futures-timer", "futures-util", - "hyper 0.14.31", - "jsonrpsee-types 0.22.5", - "pin-project", - "rustc-hash 1.1.0", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tokio-stream", - "tracing", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79712302e737d23ca0daa178e752c9334846b08321d439fd89af9a384f8c830b" -dependencies = [ - "anyhow", - "async-trait", - "beef", - "futures-timer", - "futures-util", - "jsonrpsee-types 0.23.2", - "pin-project", - "rustc-hash 1.1.0", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tokio-stream", - "tracing", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2882f6f8acb9fdaec7cefc4fd607119a9bd709831df7d7672a1d3b644628280" -dependencies = [ - "async-trait", - "futures-timer", - "futures-util", - "jsonrpsee-types 0.24.7", + "jsonrpsee-types", "pin-project", "rustc-hash 2.1.0", "serde", @@ -5503,51 +5206,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "jsonrpsee-http-client" -version = "0.22.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ccf93fc4a0bfe05d851d37d7c32b7f370fe94336b52a2f0efc5f1981895c2e5" -dependencies = [ - "async-trait", - "hyper 0.14.31", - "hyper-rustls 0.24.2", - "jsonrpsee-core 0.22.5", - "jsonrpsee-types 0.22.5", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tower 0.4.13", - "tracing", - "url", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a178c60086f24cc35bb82f57c651d0d25d99c4742b4d335de04e97fa1f08a8a1" -dependencies = [ - "http 1.2.0", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c465fbe385238e861fdc4d1c85e04ada6c1fd246161d26385c1b311724d2af" -dependencies = [ - "beef", - "http 1.2.0", - "serde", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "jsonrpsee-types" version = "0.24.7" @@ -5567,22 +5225,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" dependencies = [ "http 1.2.0", - "jsonrpsee-client-transport 0.23.2", - "jsonrpsee-core 0.23.2", - "jsonrpsee-types 0.23.2", - "url", -] - -[[package]] -name = "jsonrpsee-ws-client" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" -dependencies = [ - "http 1.2.0", - "jsonrpsee-client-transport 0.24.7", - "jsonrpsee-core 0.24.7", - "jsonrpsee-types 0.24.7", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", "url", ] @@ -6229,17 +5874,6 @@ dependencies = [ "libc", "log", "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "mio" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" -dependencies = [ - "libc", - "wasi", "windows-sys 0.52.0", ] @@ -6667,7 +6301,7 @@ dependencies = [ "sp-core 34.0.0", "sp-crypto-hashing", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6683,10 +6317,10 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6702,10 +6336,10 @@ dependencies = [ "pallet-asset-conversion", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6720,7 +6354,7 @@ dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6735,7 +6369,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6753,7 +6387,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6770,7 +6404,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6786,7 +6420,7 @@ dependencies = [ "pallet-assets", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6801,7 +6435,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6818,7 +6452,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6834,7 +6468,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-authority-discovery", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6848,7 +6482,7 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6870,7 +6504,7 @@ dependencies = [ "sp-consensus-babe", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -6893,7 +6527,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", ] @@ -6910,7 +6544,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6928,7 +6562,7 @@ dependencies = [ "scale-info", "serde", "sp-consensus-beefy", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -6955,7 +6589,7 @@ dependencies = [ "sp-consensus-beefy", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", ] @@ -6974,7 +6608,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6993,7 +6627,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-consensus-grandpa", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -7012,7 +6646,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", ] @@ -7034,7 +6668,7 @@ dependencies = [ "pallet-bridge-grandpa", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -7058,8 +6692,8 @@ dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", - "sp-runtime 39.0.2", + "sp-arithmetic", + "sp-runtime 39.0.3", "sp-std", ] @@ -7077,9 +6711,9 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7098,7 +6732,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7117,7 +6751,7 @@ dependencies = [ "parity-scale-codec", "rand", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7135,7 +6769,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7150,7 +6784,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7178,12 +6812,12 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", "wasm-instrument", - "wasmi 0.32.3", + "wasmi", ] [[package]] @@ -7214,7 +6848,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -7284,7 +6918,7 @@ dependencies = [ "scale-info", "serde", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7300,10 +6934,10 @@ dependencies = [ "pallet-ranked-collective", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7318,7 +6952,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7337,7 +6971,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7353,7 +6987,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7371,11 +7005,11 @@ dependencies = [ "parity-scale-codec", "rand", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "strum 0.26.3", ] @@ -7390,7 +7024,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7408,7 +7042,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7427,7 +7061,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7447,7 +7081,7 @@ dependencies = [ "sp-core 34.0.0", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7468,7 +7102,7 @@ dependencies = [ "sp-consensus-grandpa", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -7487,7 +7121,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7506,7 +7140,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7524,7 +7158,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7538,7 +7172,7 @@ dependencies = [ "parity-scale-codec", "safe-mix", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7552,7 +7186,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7569,7 +7203,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7585,11 +7219,11 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", ] [[package]] @@ -7607,7 +7241,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7624,10 +7258,10 @@ dependencies = [ "scale-info", "serde", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-io 38.0.0", "sp-mixnet", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7645,7 +7279,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-mmr-primitives", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7661,7 +7295,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7678,7 +7312,7 @@ dependencies = [ "pallet-nfts", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7696,7 +7330,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7721,9 +7355,9 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7739,7 +7373,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7756,7 +7390,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", "sp-tracing 17.0.1", ] @@ -7777,7 +7411,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-staking 36.0.0", ] @@ -7806,7 +7440,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7830,7 +7464,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7849,7 +7483,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7867,7 +7501,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7884,7 +7518,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7899,7 +7533,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7915,10 +7549,10 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7933,7 +7567,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7949,9 +7583,9 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7968,7 +7602,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7996,7 +7630,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8012,7 +7646,7 @@ dependencies = [ "frame-system", "parity-wasm", "polkavm-linker 0.10.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "tempfile", "toml 0.8.19", ] @@ -8044,7 +7678,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8088,7 +7722,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -8104,7 +7738,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8122,8 +7756,8 @@ dependencies = [ "pallet-utility", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", - "sp-runtime 39.0.2", + "sp-arithmetic", + "sp-runtime 39.0.3", ] [[package]] @@ -8139,10 +7773,10 @@ dependencies = [ "pallet-ranked-collective", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8159,8 +7793,8 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", ] [[package]] @@ -8174,7 +7808,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8192,7 +7826,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "sp-state-machine 0.43.0", @@ -8212,7 +7846,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "rand", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", ] @@ -8226,7 +7860,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8242,9 +7876,9 @@ dependencies = [ "parity-scale-codec", "rand_chacha", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8265,7 +7899,7 @@ dependencies = [ "serde", "sp-application-crypto 38.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -8276,7 +7910,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "988a7ebeacc84d4bdb0b12409681e956ffe35438447d8f8bc78db547cffb6ebc" dependencies = [ "log", - "sp-arithmetic 26.0.0", + "sp-arithmetic", ] [[package]] @@ -8304,7 +7938,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8321,7 +7955,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-statement-store", ] @@ -8338,7 +7972,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8356,7 +7990,7 @@ dependencies = [ "scale-info", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-storage 21.0.0", "sp-timestamp", ] @@ -8377,7 +8011,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8393,7 +8027,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8405,8 +8039,8 @@ dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "sp-api", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", ] [[package]] @@ -8425,7 +8059,7 @@ dependencies = [ "serde", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-transaction-storage-proof", ] @@ -8445,7 +8079,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8463,7 +8097,7 @@ dependencies = [ "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8478,7 +8112,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8494,7 +8128,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8509,7 +8143,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8524,7 +8158,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8544,7 +8178,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -8565,7 +8199,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -8587,7 +8221,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8608,7 +8242,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8638,7 +8272,7 @@ dependencies = [ "sp-consensus-aura", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -8668,7 +8302,7 @@ dependencies = [ "sp-consensus-aura", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-parachain-info", "staging-xcm 14.2.0", @@ -8953,7 +8587,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8969,8 +8603,8 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", ] [[package]] @@ -8989,14 +8623,14 @@ dependencies = [ "serde", "sp-api", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-authority-discovery", "sp-consensus-slots", "sp-core 34.0.0", "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 34.0.0", ] @@ -9016,14 +8650,14 @@ dependencies = [ "serde", "sp-api", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-authority-discovery", "sp-consensus-slots", "sp-core 34.0.0", "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -9068,7 +8702,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "staging-xcm 14.2.0", @@ -9126,12 +8760,12 @@ dependencies = [ "serde", "sp-api", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "sp-std", @@ -9321,7 +8955,7 @@ dependencies = [ "sp-api", "sp-api-proc-macro", "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-authority-discovery", "sp-block-builder", "sp-consensus-aura", @@ -9346,7 +8980,7 @@ dependencies = [ "sp-mmr-primitives", "sp-npos-elections", "sp-offchain", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-session", "sp-staking 36.0.0", @@ -9361,7 +8995,7 @@ dependencies = [ "sp-trie 37.0.0", "sp-version", "sp-wasm-interface 21.0.1", - "sp-weights 31.0.0", + "sp-weights", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -9389,7 +9023,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-block-builder", "sp-consensus-aura", "sp-consensus-grandpa", @@ -9397,7 +9031,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-offchain", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-storage 21.0.0", "sp-transaction-pool", @@ -9697,12 +9331,12 @@ dependencies = [ "reqwest 0.12.9", "serde", "serde_json", - "sp-core 31.0.0", - "sp-weights 30.0.0", + "sp-core 32.0.0", + "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tempfile", "tokio", "tower-http 0.6.2", @@ -9730,8 +9364,8 @@ dependencies = [ "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", "thiserror 1.0.69", @@ -9758,12 +9392,12 @@ dependencies = [ "pop-common", "reqwest 0.12.9", "scale-info", - "sp-core 31.0.0", - "sp-weights 30.0.0", + "sp-core 32.0.0", + "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", "thiserror 1.0.69", @@ -9788,12 +9422,12 @@ dependencies = [ "pop-common", "reqwest 0.12.9", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde_json", "sp-core 32.0.0", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", + "subxt", "symlink", "tar", "tempfile", @@ -10145,22 +9779,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "reconnecting-jsonrpsee-ws-client" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "cfg_aliases", - "finito", - "futures", - "jsonrpsee 0.23.2", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tracing", -] - [[package]] name = "redox_syscall" version = "0.5.8" @@ -10443,8 +10061,8 @@ dependencies = [ "polkadot-runtime-common", "smallvec", "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", "staging-xcm 14.2.0", "staging-xcm-builder", ] @@ -10543,7 +10161,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.24", ] [[package]] @@ -10585,20 +10203,6 @@ dependencies = [ "sct", ] -[[package]] -name = "rustls" -version = "0.23.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" -dependencies = [ - "log", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", -] - [[package]] name = "rustls" version = "0.23.20" @@ -10659,9 +10263,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" [[package]] name = "rustls-platform-verifier" @@ -10729,17 +10333,6 @@ dependencies = [ "wait-timeout", ] -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", - "twox-hash", -] - [[package]] name = "ruzstd" version = "0.6.0" @@ -10920,21 +10513,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "scale-decode" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ae9cc099ae85ff28820210732b00f019546f36f33225f509fe25d5816864a0" -dependencies = [ - "derive_more 0.99.18", - "parity-scale-codec", - "primitive-types 0.12.2", - "scale-bits 0.6.0", - "scale-decode-derive 0.13.1", - "scale-type-resolver 0.2.0", - "smallvec", -] - [[package]] name = "scale-decode" version = "0.14.0" @@ -10962,18 +10540,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "scale-decode-derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb22f574168103cdd3133b19281639ca65ad985e24612728f727339dcaf4021" -dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "scale-decode-derive" version = "0.14.0" @@ -10999,21 +10565,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "scale-encode" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528464e6ae6c8f98e2b79633bf79ef939552e795e316579dab09c61670d56602" -dependencies = [ - "derive_more 0.99.18", - "parity-scale-codec", - "primitive-types 0.12.2", - "scale-bits 0.6.0", - "scale-encode-derive 0.7.2", - "scale-type-resolver 0.2.0", - "smallvec", -] - [[package]] name = "scale-encode" version = "0.8.0" @@ -11042,19 +10593,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "scale-encode-derive" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef2618f123c88da9cd8853b69d766068f1eddc7692146d7dfe9b89e25ce2efd" -dependencies = [ - "darling 0.20.10", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "scale-encode-derive" version = "0.8.0" @@ -11127,39 +10665,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "scale-typegen" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc4c70c7fea2eef1740f0081d3fe385d8bee1eef11e9272d3bec7dc8e5438e0" -dependencies = [ - "proc-macro2", - "quote", - "scale-info", - "syn 2.0.90", - "thiserror 1.0.69", -] - -[[package]] -name = "scale-value" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6ab090d823e75cfdb258aad5fe92e13f2af7d04b43a55d607d25fcc38c811" -dependencies = [ - "base58", - "blake2", - "derive_more 0.99.18", - "either", - "parity-scale-codec", - "scale-bits 0.6.0", - "scale-decode 0.13.1", - "scale-encode 0.7.2", - "scale-info", - "scale-type-resolver 0.2.0", - "serde", - "yap", -] - [[package]] name = "scale-value" version = "0.17.0" @@ -11406,33 +10911,6 @@ dependencies = [ "semver-parser 0.10.3", ] -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.3", -] - [[package]] name = "semver" version = "1.0.24" @@ -11788,7 +11266,7 @@ dependencies = [ "enumn", "parity-scale-codec", "paste", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -11858,7 +11336,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd 0.5.0", + "ruzstd", "schnorrkel", "serde", "serde_json", @@ -11869,101 +11347,11 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi 0.31.2", - "x25519-dalek", - "zeroize", -] - -[[package]] -name = "smoldot" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" -dependencies = [ - "arrayvec 0.7.6", - "async-lock", - "atomic-take", - "base64 0.22.1", - "bip39", - "blake2-rfc", - "bs58", - "chacha20", - "crossbeam-queue", - "derive_more 0.99.18", - "ed25519-zebra 4.0.3", - "either", - "event-listener 5.3.1", - "fnv", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "hmac 0.12.1", - "itertools 0.13.0", - "libm", - "libsecp256k1", - "merlin", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", - "pin-project", - "poly1305", - "rand", - "rand_chacha", - "ruzstd 0.6.0", - "schnorrkel", - "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "siphasher", - "slab", - "smallvec", - "soketto 0.8.1", - "twox-hash", - "wasmi 0.32.3", + "wasmi", "x25519-dalek", "zeroize", ] -[[package]] -name = "smoldot-light" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" -dependencies = [ - "async-channel", - "async-lock", - "base64 0.22.1", - "blake2-rfc", - "derive_more 0.99.18", - "either", - "event-listener", - "fnv", - "futures-channel", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "itertools 0.13.0", - "log", - "lru 0.12.5", - "no-std-net", - "parking_lot", - "pin-project", - "rand", - "rand_chacha", - "serde", - "serde_json", - "siphasher", - "slab", - "smol", - "smoldot 0.16.0", - "zeroize", -] - [[package]] name = "smoldot-light" version = "0.16.2" @@ -11977,7 +11365,7 @@ dependencies = [ "bs58", "derive_more 0.99.18", "either", - "event-listener 5.3.1", + "event-listener", "fnv", "futures-channel", "futures-lite", @@ -11996,7 +11384,7 @@ dependencies = [ "siphasher", "slab", "smol", - "smoldot 0.18.0", + "smoldot", "zeroize", ] @@ -12027,7 +11415,7 @@ dependencies = [ "snowbridge-milagro-bls", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "ssz_rs", "ssz_rs_derive", @@ -12048,10 +11436,10 @@ dependencies = [ "scale-info", "serde", "snowbridge-beacon-primitives", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -12074,7 +11462,7 @@ dependencies = [ "serde", "serde-big-array", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -12102,7 +11490,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12139,7 +11527,7 @@ dependencies = [ "snowbridge-pallet-ethereum-client-fixtures", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "static_assertions", ] @@ -12179,7 +11567,7 @@ dependencies = [ "snowbridge-router-primitives", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -12214,10 +11602,10 @@ dependencies = [ "serde", "snowbridge-core", "snowbridge-outbound-queue-merkle-tree", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -12236,7 +11624,7 @@ dependencies = [ "snowbridge-core", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -12256,7 +11644,7 @@ dependencies = [ "snowbridge-core", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -12272,7 +11660,7 @@ dependencies = [ "log", "parity-scale-codec", "snowbridge-core", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -12305,7 +11693,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -12334,21 +11722,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "soketto" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" -dependencies = [ - "base64 0.13.1", - "bytes", - "futures", - "httparse", - "log", - "rand", - "sha-1", -] - [[package]] name = "soketto" version = "0.8.1" @@ -12369,44 +11742,6 @@ name = "sp-api" version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbce492e0482134128b7729ea36f5ef1a9f9b4de2d48ff8dde7b5e464e28ce75" -dependencies = [ - "docify", - "hash-db", - "log", - "parity-scale-codec", - "scale-info", - "sp-api-proc-macro", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "sp-metadata-ir", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "sp-state-machine 0.43.0", - "sp-trie 37.0.0", - "sp-version", - "thiserror 1.0.69", -] - -[[package]] -name = "sp-api-proc-macro" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9aadf9e97e694f0e343978aa632938c5de309cbcc8afed4136cb71596737278" -dependencies = [ - "Inflector", - "blake2", - "expander", - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "sp-application-crypto" -version = "33.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbce492e0482134128b7729ea36f5ef1a9f9b4de2d48ff8dde7b5e464e28ce75" dependencies = [ "docify", "hash-db", @@ -12449,8 +11784,8 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 31.0.0", - "sp-io 33.0.0", + "sp-core 32.0.0", + "sp-io 34.0.0", "sp-std", ] @@ -12467,35 +11802,6 @@ dependencies = [ "sp-io 38.0.0", ] -[[package]] -name = "sp-arithmetic" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", -] - -[[package]] -name = "sp-arithmetic" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d0d0a4c591c421d3231ddd5e27d828618c24456d51445d21a1f79fcee97c23" -dependencies = [ - "docify", - "integer-sqrt", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-std", - "static_assertions", -] - [[package]] name = "sp-arithmetic" version = "26.0.0" @@ -12522,7 +11828,7 @@ dependencies = [ "scale-info", "sp-api", "sp-application-crypto 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12533,7 +11839,7 @@ checksum = "74738809461e3d4bd707b5b94e0e0c064a623a74a6a8fe5c98514417a02858dd" dependencies = [ "sp-api", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12549,7 +11855,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-consensus-slots", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-timestamp", ] @@ -12568,7 +11874,7 @@ dependencies = [ "sp-consensus-slots", "sp-core 34.0.0", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-timestamp", ] @@ -12589,8 +11895,8 @@ dependencies = [ "sp-io 38.0.0", "sp-keystore 0.40.0", "sp-mmr-primitives", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", "strum 0.26.3", ] @@ -12609,7 +11915,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12621,7 +11927,7 @@ dependencies = [ "parity-scale-codec", "sp-api", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12683,6 +11989,53 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core" +version = "32.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2dac7e47c7ddbb61efe196d5cce99f6ea88926c961fa39909bfeae46fc5a7b" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 3.1.0", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.10.5", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.28.0", + "sp-runtime-interface 27.0.0", + "sp-std", + "sp-storage 21.0.0", + "ss58-registry", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + [[package]] name = "sp-core" version = "34.0.0" @@ -12808,6 +12161,17 @@ dependencies = [ "sp-storage 20.0.0", ] +[[package]] +name = "sp-externalities" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + [[package]] name = "sp-externalities" version = "0.29.0" @@ -12829,7 +12193,7 @@ dependencies = [ "scale-info", "serde_json", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12842,7 +12206,7 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] @@ -12860,15 +12224,15 @@ dependencies = [ "polkavm-derive 0.9.1", "rustversion", "secp256k1 0.28.2", - "sp-core 31.0.0", + "sp-core 32.0.0", "sp-crypto-hashing", - "sp-externalities 0.27.0", - "sp-keystore 0.37.0", - "sp-runtime-interface 26.0.0", - "sp-state-machine 0.38.0", + "sp-externalities 0.28.0", + "sp-keystore 0.38.0", + "sp-runtime-interface 27.0.0", + "sp-state-machine 0.39.0", "sp-std", - "sp-tracing 16.0.0", - "sp-trie 32.0.0", + "sp-tracing 17.0.1", + "sp-trie 33.0.0", "tracing", "tracing-core", ] @@ -12900,44 +12264,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "sp-keyring" -version = "39.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" -dependencies = [ - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "strum 0.26.3", -] - -[[package]] -name = "sp-keystore" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" -dependencies = [ - "bytes", - "docify", - "ed25519-dalek", - "libsecp256k1", - "log", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "rustversion", - "secp256k1 0.28.2", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-externalities 0.29.0", - "sp-keystore 0.40.0", - "sp-runtime-interface 28.0.0", - "sp-state-machine 0.43.0", - "sp-tracing 17.0.1", - "sp-trie 37.0.0", - "tracing", - "tracing-core", -] - [[package]] name = "sp-keyring" version = "39.0.0" @@ -12957,8 +12283,8 @@ checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" dependencies = [ "parity-scale-codec", "parking_lot", - "sp-core 31.0.0", - "sp-externalities 0.27.0", + "sp-core 32.0.0", + "sp-externalities 0.28.0", ] [[package]] @@ -13020,7 +12346,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-debug-derive", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] @@ -13033,9 +12359,9 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13046,7 +12372,7 @@ checksum = "2d9de237d72ecffd07f90826eef18360208b16d8de939d54e61591fac0fcbf99" dependencies = [ "sp-api", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13077,39 +12403,12 @@ dependencies = [ "scale-info", "serde", "simple-mermaid", - "sp-application-crypto 33.0.0", - "sp-arithmetic 25.0.0", - "sp-core 31.0.0", - "sp-io 33.0.0", - "sp-std", - "sp-weights 30.0.0", -] - -[[package]] -name = "sp-runtime" -version = "39.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "num-traits", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", + "sp-application-crypto 34.0.0", + "sp-arithmetic", + "sp-core 32.0.0", + "sp-io 34.0.0", "sp-std", - "sp-weights 31.0.0", - "tracing", + "sp-weights", ] [[package]] @@ -13159,6 +12458,26 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "sp-runtime-interface" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "647db5e1dc481686628b41554e832df6ab400c4b43a6a54e54d3b0a71ca404aa" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.28.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", + "static_assertions", +] + [[package]] name = "sp-runtime-interface" version = "28.0.0" @@ -13204,7 +12523,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -13219,7 +12538,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13233,7 +12552,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13248,11 +12567,10 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 31.0.0", - "sp-externalities 0.27.0", + "sp-core 32.0.0", + "sp-externalities 0.28.0", "sp-panic-handler", - "sp-std", - "sp-trie 32.0.0", + "sp-trie 33.0.0", "thiserror 1.0.69", "tracing", "trie-db 0.28.0", @@ -13298,7 +12616,7 @@ dependencies = [ "sp-core 34.0.0", "sp-crypto-hashing", "sp-externalities 0.29.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "thiserror 1.0.69", "x25519-dalek", @@ -13346,7 +12664,7 @@ dependencies = [ "async-trait", "parity-scale-codec", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] @@ -13382,7 +12700,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc4bf251059485a7dd38fe4afeda8792983511cc47f342ff4695e2dcae6b5247" dependencies = [ "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13396,7 +12714,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-trie 37.0.0", ] @@ -13416,9 +12734,8 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 31.0.0", - "sp-externalities 0.27.0", - "sp-std", + "sp-core 32.0.0", + "sp-externalities 0.28.0", "thiserror 1.0.69", "tracing", "trie-db 0.28.0", @@ -13461,7 +12778,7 @@ dependencies = [ "scale-info", "serde", "sp-crypto-hashing-proc-macro", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-version-proc-macro", "thiserror 1.0.69", @@ -13481,34 +12798,21 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef97172c42eb4c6c26506f325f48463e9bc29b2034a587f1b9e48c751229bee" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-std", - "wasmtime", -] - -[[package]] -name = "sp-wasm-interface" -version = "21.0.1" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" +checksum = "9ef97172c42eb4c6c26506f325f48463e9bc29b2034a587f1b9e48c751229bee" dependencies = [ "anyhow", "impl-trait-for-tuples", "log", "parity-scale-codec", + "sp-std", "wasmtime", ] [[package]] -name = "sp-weights" -version = "30.0.0" +name = "sp-wasm-interface" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" dependencies = [ @@ -13530,22 +12834,7 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 25.0.0", - "sp-debug-derive", -] - -[[package]] -name = "sp-weights" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" -dependencies = [ - "bounded-collections", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-debug-derive", ] @@ -13620,7 +12909,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13638,7 +12927,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-weights 31.0.0", + "sp-weights", "xcm-procedural 8.0.0", ] @@ -13657,8 +12946,8 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", "xcm-procedural 10.1.0", ] @@ -13677,10 +12966,10 @@ dependencies = [ "parity-scale-codec", "polkadot-parachain-primitives", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", "staging-xcm 14.2.0", "staging-xcm-executor", ] @@ -13697,11 +12986,11 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", + "sp-runtime 39.0.3", + "sp-weights", "staging-xcm 14.2.0", "tracing", ] @@ -13829,44 +13118,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "subxt" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" -dependencies = [ - "async-trait", - "derive-where", - "either", - "frame-metadata 17.0.0", - "futures", - "hex", - "impl-serde 0.4.0", - "instant", - "jsonrpsee 0.22.5", - "parity-scale-codec", - "primitive-types 0.12.2", - "reconnecting-jsonrpsee-ws-client", - "scale-bits 0.6.0", - "scale-decode 0.13.1", - "scale-encode 0.7.2", - "scale-info", - "scale-value 0.16.3", - "serde", - "serde_json", - "sp-crypto-hashing", - "subxt-core 0.37.1", - "subxt-lightclient 0.37.0", - "subxt-macro 0.37.0", - "subxt-metadata 0.37.0", - "thiserror 1.0.69", - "tokio-util", - "tracing", - "url", - "wasm-bindgen-futures", - "web-time", -] - [[package]] name = "subxt" version = "0.38.0" @@ -13880,7 +13131,7 @@ dependencies = [ "futures", "hex", "impl-serde 0.5.0", - "jsonrpsee 0.24.7", + "jsonrpsee", "parity-scale-codec", "polkadot-sdk", "primitive-types 0.13.1", @@ -13888,13 +13139,13 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.17.0", + "scale-value", "serde", "serde_json", - "subxt-core 0.38.0", - "subxt-lightclient 0.38.0", - "subxt-macro 0.38.0", - "subxt-metadata 0.38.0", + "subxt-core", + "subxt-lightclient", + "subxt-macro", + "subxt-metadata", "thiserror 1.0.69", "tokio", "tokio-util", @@ -13915,58 +13166,12 @@ dependencies = [ "proc-macro2", "quote", "scale-info", - "scale-typegen 0.8.0", - "subxt-metadata 0.37.0", - "syn 2.0.90", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "subxt-codegen" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cfcfb7d9589f3df0ac87c4988661cf3fb370761fcb19f2fd33104cc59daf22a" -dependencies = [ - "heck 0.5.0", - "parity-scale-codec", - "proc-macro2", - "quote", - "scale-info", - "scale-typegen 0.9.0", - "subxt-metadata 0.38.0", + "scale-typegen", + "subxt-metadata", "syn 2.0.90", "thiserror 1.0.69", ] -[[package]] -name = "subxt-core" -version = "0.37.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af3b36405538a36b424d229dc908d1396ceb0994c90825ce928709eac1a159a" -dependencies = [ - "base58", - "blake2", - "derive-where", - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "hex", - "impl-serde 0.4.0", - "parity-scale-codec", - "primitive-types 0.12.2", - "scale-bits 0.6.0", - "scale-decode 0.13.1", - "scale-encode 0.7.2", - "scale-info", - "scale-value 0.16.3", - "serde", - "serde_json", - "sp-crypto-hashing", - "subxt-metadata 0.37.0", - "tracing", -] - [[package]] name = "subxt-core" version = "0.38.0" @@ -13989,27 +13194,10 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.17.0", - "serde", - "serde_json", - "subxt-metadata 0.38.0", - "tracing", -] - -[[package]] -name = "subxt-lightclient" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534d4b725183a9fa09ce0e0f135674473297fdd97dee4d683f41117f365ae997" -dependencies = [ - "futures", - "futures-util", + "scale-value", "serde", "serde_json", - "smoldot-light 0.14.0", - "thiserror 1.0.69", - "tokio", - "tokio-stream", + "subxt-metadata", "tracing", ] @@ -14023,7 +13211,7 @@ dependencies = [ "futures-util", "serde", "serde_json", - "smoldot-light 0.16.2", + "smoldot-light", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -14040,23 +13228,8 @@ dependencies = [ "parity-scale-codec", "proc-macro-error2", "quote", - "scale-typegen 0.8.0", - "subxt-codegen 0.37.0", - "syn 2.0.90", -] - -[[package]] -name = "subxt-macro" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228db9a5c95a6d8dc6152b4d6cdcbabc4f60821dd3f482a4f8791e022b7caadb" -dependencies = [ - "darling 0.20.10", - "parity-scale-codec", - "proc-macro-error2", - "quote", - "scale-typegen 0.9.0", - "subxt-codegen 0.38.0", + "scale-typegen", + "subxt-codegen", "subxt-utils-fetchmetadata", "syn 2.0.90", ] @@ -14075,45 +13248,6 @@ dependencies = [ "scale-info", ] -[[package]] -name = "subxt-metadata" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" -dependencies = [ - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "parity-scale-codec", - "polkadot-sdk", - "scale-info", -] - -[[package]] -name = "subxt-signer" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7a336d6a1f86f126100a4a717be58352de4c8214300c4f7807f974494efdb9" -dependencies = [ - "base64 0.22.1", - "bip39", - "cfg-if", - "crypto_secretbox", - "hex", - "hmac 0.12.1", - "parity-scale-codec", - "pbkdf2", - "polkadot-sdk", - "regex", - "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", - "sha2 0.10.8", - "sp-crypto-hashing", - "subxt-core 0.37.1", - "zeroize", -] - [[package]] name = "subxt-signer" version = "0.38.0" @@ -14137,7 +13271,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "subxt-core 0.38.0", + "subxt-core", "zeroize", ] @@ -14344,7 +13478,7 @@ dependencies = [ "polkadot-core-primitives", "rococo-runtime-constants", "smallvec", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "westend-runtime-constants", ] @@ -14484,7 +13618,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.3", + "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -14534,17 +13668,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" -dependencies = [ - "rustls 0.22.4", - "rustls-pki-types", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.26.1" @@ -15298,15 +14421,6 @@ dependencies = [ "parity-wasm", ] -[[package]] -name = "wasm-instrument" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" -dependencies = [ - "parity-wasm", -] - [[package]] name = "wasm-opt" version = "0.116.1" @@ -15347,23 +14461,6 @@ dependencies = [ "cxx-build", ] -[[package]] -name = "wasmi" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50386c99b9c32bd2ed71a55b6dd4040af2580530fae8bdb9a6576571a80d0cca" -dependencies = [ - "arrayvec 0.7.6", - "multi-stash", - "num-derive", - "num-traits", - "smallvec", - "spin", - "wasmi_arena", - "wasmi_core 0.13.0", - "wasmparser-nostd", -] - [[package]] name = "wasmi" version = "0.32.3" @@ -15377,7 +14474,7 @@ dependencies = [ "smallvec", "spin", "wasmi_collections", - "wasmi_core 0.32.3", + "wasmi_core", "wasmparser-nostd", ] @@ -15392,29 +14489,6 @@ dependencies = [ "string-interner", ] -[[package]] -name = "wasmi_collections" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" -dependencies = [ - "ahash 0.8.11", - "hashbrown 0.14.5", - "string-interner", -] - -[[package]] -name = "wasmi_core" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" -dependencies = [ - "downcast-rs", - "libm", - "num-traits", - "paste", -] - [[package]] name = "wasmi_core" version = "0.32.3" @@ -15447,7 +14521,8 @@ dependencies = [ "bitflags 2.6.0", "hashbrown 0.14.5", "indexmap 2.7.0", - "semver 1.0.23", + "semver 1.0.24", + "serde", ] [[package]] @@ -15688,23 +14763,6 @@ name = "westend-runtime-constants" version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06861bf945aadac59f4be23b44c85573029520ea9bd3d6c9ab21c8b306e81cdc" -dependencies = [ - "frame-support", - "polkadot-primitives 16.0.0", - "polkadot-runtime-common", - "smallvec", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-weights 31.0.0", - "staging-xcm 14.2.0", - "staging-xcm-builder", -] - -[[package]] -name = "which" -version = "6.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06861bf945aadac59f4be23b44c85573029520ea9bd3d6c9ab21c8b306e81cdc" dependencies = [ "frame-support", "polkadot-primitives 16.0.0", @@ -16135,7 +15193,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-weights 31.0.0", + "sp-weights", "staging-xcm 14.2.0", "staging-xcm-executor", ] @@ -16156,7 +15214,7 @@ dependencies = [ "polkadot-runtime-parachains", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -16300,9 +15358,9 @@ dependencies = [ [[package]] name = "zombienet-configuration" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22860eef7e651d6e0aa7e37fc3bcba3c2c8b7bd1c140d7ea929caacf2b7fc726" +checksum = "d716b3ff8112d98ced15f53b0c72454f8cde533fe2b68bb04379228961efbd80" dependencies = [ "anyhow", "lazy_static", @@ -16320,9 +15378,9 @@ dependencies = [ [[package]] name = "zombienet-orchestrator" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19b1b2fd2db3153155f21cb84cdd8e5d6faefc3043353b8c90661c44f4660da" +checksum = "4098a7d33b729b59e32c41a87aa4d484bd1b8771a059bbd4edfb4d430b3b2d74" dependencies = [ "anyhow", "async-trait", @@ -16339,8 +15397,8 @@ dependencies = [ "serde_json", "sha2 0.10.8", "sp-core 31.0.0", - "subxt 0.38.0", - "subxt-signer 0.38.0", + "subxt", + "subxt-signer", "thiserror 1.0.69", "tokio", "tracing", @@ -16353,9 +15411,9 @@ dependencies = [ [[package]] name = "zombienet-prom-metrics-parser" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" +checksum = "961e30be45b34f6ebeabf29ee2f47b0cd191ea62e40c064752572207509a6f5c" dependencies = [ "pest", "pest_derive", @@ -16364,9 +15422,9 @@ dependencies = [ [[package]] name = "zombienet-provider" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c99cc7c143f1145bda2b2f5a945b8040a898a85fc029dba51f220395a7188d9d" +checksum = "ab0f7f01780b7c99a6c40539d195d979f234305f32808d547438b50829d44262" dependencies = [ "anyhow", "async-trait", @@ -16395,15 +15453,15 @@ dependencies = [ [[package]] name = "zombienet-sdk" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09e5abdad4ad32c1c06cb8fdc4507db026f65987cb5c46ae4224118cc496097b" +checksum = "99a3c5f2d657235b3ab7dc384677e63cde21983029e99106766ecd49e9f8d7f3" dependencies = [ "async-trait", "futures", "lazy_static", - "subxt 0.38.0", - "subxt-signer 0.38.0", + "subxt", + "subxt-signer", "tokio", "zombienet-configuration", "zombienet-orchestrator", @@ -16413,9 +15471,9 @@ dependencies = [ [[package]] name = "zombienet-support" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e3310631948f8bb4d394c160c4b063889a4e0c6beadd6b95f9b62d1616ab93c" +checksum = "296f887ea88e07edd771f8e1d0dec5297a58b422f4b884a6292a21ebe03277cb" dependencies = [ "anyhow", "async-trait", diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 61982257..d5dc34f1 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -113,9 +113,8 @@ impl CallChainCommand { display_message(&e.to_string(), false, &mut cli)?; } - if !prompt_to_repeat_call - || !cli - .confirm("Do you want to perform another call?") + if !prompt_to_repeat_call || + !cli.confirm("Do you want to perform another call?") .initial_value(false) .interact()? { @@ -256,7 +255,7 @@ impl CallChainCommand { let mut use_wallet = self.use_wallet; let suri = match self.suri.as_ref() { Some(suri) => suri.clone(), - None => { + None => if !self.use_wallet { if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") .initial_value(true) @@ -269,8 +268,7 @@ impl CallChainCommand { } } else { DEFAULT_URI.to_string() - } - }, + }, }; // Perform signing steps with wallet integration and return early. if use_wallet { @@ -283,9 +281,8 @@ impl CallChainCommand { return Ok(()); } cli.info(format!("Encoded call data: {}", call_data))?; - if !self.skip_confirm - && !cli - .confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm && + !cli.confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { @@ -313,7 +310,7 @@ impl CallChainCommand { // execute the call via `sudo`. fn configure_sudo(&mut self, chain: &Chain, cli: &mut impl Cli) -> Result<()> { match find_dispatchable_by_name(&chain.pallets, "Sudo", "sudo") { - Ok(_) => { + Ok(_) => if !self.sudo { self.sudo = cli .confirm( @@ -321,16 +318,14 @@ impl CallChainCommand { ) .initial_value(false) .interact()?; - } - }, - Err(_) => { + }, + Err(_) => if self.sudo { cli.warning( "NOTE: sudo is not supported by the chain. Ignoring `--sudo` flag.", )?; self.sudo = false; - } - }, + }, } Ok(()) } @@ -346,11 +341,11 @@ impl CallChainCommand { // Function to check if all required fields are specified. fn requires_user_input(&self) -> bool { - self.pallet.is_none() - || self.function.is_none() - || self.args.is_empty() - || self.url.is_none() - || self.suri.is_none() + self.pallet.is_none() || + self.function.is_none() || + self.args.is_empty() || + self.url.is_none() || + self.suri.is_none() } /// Replaces file arguments with their contents, leaving other arguments unchanged. @@ -432,9 +427,8 @@ impl Call { tx: DynamicPayload, cli: &mut impl Cli, ) -> Result<()> { - if !self.skip_confirm - && !cli - .confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm && + !cli.confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { diff --git a/crates/pop-common/Cargo.toml b/crates/pop-common/Cargo.toml index bd815423..f81f2982 100644 --- a/crates/pop-common/Cargo.toml +++ b/crates/pop-common/Cargo.toml @@ -33,7 +33,6 @@ tokio.workspace = true toml.workspace = true toml_edit.workspace = true url.workspace = true -toml.workspace = true [dev-dependencies] mockito.workspace = true diff --git a/crates/pop-common/src/lib.rs b/crates/pop-common/src/lib.rs index 8c06f71d..70dbcc8f 100644 --- a/crates/pop-common/src/lib.rs +++ b/crates/pop-common/src/lib.rs @@ -49,18 +49,16 @@ pub fn target() -> Result<&'static str, Error> { } match ARCH { - "aarch64" => { + "aarch64" => return match OS { "macos" => Ok("aarch64-apple-darwin"), _ => Ok("aarch64-unknown-linux-gnu"), - } - }, - "x86_64" | "x86" => { + }, + "x86_64" | "x86" => return match OS { "macos" => Ok("x86_64-apple-darwin"), _ => Ok("x86_64-unknown-linux-gnu"), - } - }, + }, &_ => {}, } Err(Error::UnsupportedPlatform { arch: ARCH, os: OS }) @@ -75,6 +73,16 @@ pub fn find_free_port() -> u16 { .port() } +/// Provides functionality for making calls to parachains or smart contracts. +pub mod call { + // Note: cargo contract logic is used for parsing events after calling a chain. This could be + // refactored in the future so that we don't have to use cargo contract code in + // `pop-parachains`. + pub use contract_build::Verbosity; + pub use contract_extrinsics::{DisplayEvents, TokenMetadata}; + pub use ink_env::DefaultEnvironment; +} + #[cfg(test)] mod test { use super::*; diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 439ba6d6..83347803 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -19,7 +19,7 @@ use ink_env::{DefaultEnvironment, Environment}; use pop_common::{create_signer, Config, DefaultConfig, Keypair}; use sp_weights::Weight; use std::path::PathBuf; -use subxt::{tx::Payload, Config, SubstrateConfig}; +use subxt::{tx::Payload, SubstrateConfig}; use url::Url; /// Attributes for the `call` command. diff --git a/crates/pop-parachains/src/build.rs b/crates/pop-parachains/src/build.rs index 1cc869e3..1e369f37 100644 --- a/crates/pop-parachains/src/build.rs +++ b/crates/pop-parachains/src/build.rs @@ -51,8 +51,8 @@ pub fn is_supported(path: Option<&Path>) -> Result { const DEPENDENCIES: [&str; 4] = ["cumulus-client-collator", "cumulus-primitives-core", "parachains-common", "polkadot-sdk"]; Ok(DEPENDENCIES.into_iter().any(|d| { - manifest.dependencies.contains_key(d) - || manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) + manifest.dependencies.contains_key(d) || + manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) })) } From 16e48a9225a26c51e10d8aebbdc205d04e9ff139 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 16:38:36 -0700 Subject: [PATCH 094/143] feat(wallet-integration): server and API (#362) * feat(wallet-integration): implement server and API * feat(wallet-integration): add a few tests to server. Needs more * refactor(wallet-integration): just use call_data, remove data types * feat(wallet-integration): add frontend type for flexible serving * feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method * refactor(wallet-integration): move to module with pop-cli crate * feat(wallet-integration): server-side error handling, update port to 9090 * refactor(wallet-integration): restructure server for easier use in thread * fix(wallet-integration): remove invalid fn `finish` * docs(wallet-integration): inline comments * test(wallet-integration): unit tests for wallet-integration server. Add new frontend type * feat(wallet-integration): two new routes: error and terminate * refactor(wallet-integration): consistent comments, remove unnecessary code in tests * feat: add TransactionData::new * refactor(wallet-integration: shutdown channel error handling, terminate helper, take_error and TranscationData::new tests * chore: clippy warning --- Cargo.lock | 55 ++++++++++++++++++++++++ crates/pop-cli/src/wallet_integration.rs | 7 +-- 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9887bd52..401ee5c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -993,6 +993,61 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tower 0.5.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "backoff" version = "0.4.0" diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 57b2924e..3d688e7a 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -226,12 +226,9 @@ async fn terminate_helper(handle: &Arc>) -> anyhow::Result<( pub struct FrontendFromDir { content: PathBuf, } + #[allow(dead_code)] -impl FrontendFromDir { - pub fn new(content: PathBuf) -> Self { - Self { content } - } -} +impl FrontendFromDir {} impl Frontend for FrontendFromDir { fn serve_content(&self) -> Router { From 52716759ff09303d63112367e01a121e7e1285d6 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 13:36:16 -0700 Subject: [PATCH 095/143] feat(up-contract): get call data for upload-only and pass to wallet integration -- PoC --- crates/pop-cli/src/commands/up/contract.rs | 8 +++++++- crates/pop-contracts/src/up.rs | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 8f6b9d45..847c8875 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -237,10 +237,14 @@ impl UpContractCommand { Self::terminate_node(process)?; Cli.outro(COMPLETE)?; - return Ok(()) + return Ok(()); } // Check for upload only. + // TODO: Option 1 for wallet integration + // TODO: checks if dry-run in function + // TODO: this is an upload only. Piece #1 of pop up + // TODO: server can be terminated on return here if self.upload_only { let result = self.upload_contract().await; Self::terminate_node(process)?; @@ -271,6 +275,7 @@ impl UpContractCommand { } else { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); + // TODO: Option 2 for wallet integration. Requires signer info match dry_run_gas_estimate_instantiate(&instantiate_exec).await { Ok(w) => { spinner.stop(format!("Gas limit estimate: {:?}", w)); @@ -286,6 +291,7 @@ impl UpContractCommand { }; // Finally upload and instantiate. + // TODO: option 3 for wallet integration if !self.dry_run { let spinner = spinner(); spinner.start("Uploading and instantiating the contract..."); diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 45233f22..b1e4304b 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -110,6 +110,7 @@ pub async fn set_up_upload( let upload_exec: UploadExec = UploadCommandBuilder::new(extrinsic_opts).done().await?; + Ok(upload_exec) } @@ -242,7 +243,7 @@ pub async fn submit_signed_payload( match status? { TxStatus::InBestBlock(tx_in_block) | TxStatus::InFinalizedBlock(tx_in_block) => { let events = tx_in_block.wait_for_success().await?; - return Ok(events) + return Ok(events); }, TxStatus::Error { message } => return Err(TransactionError::Error(message).into()), TxStatus::Invalid { message } => return Err(TransactionError::Invalid(message).into()), From 3255f2ea4bbe950024d37d7f848a8d7f186450ea Mon Sep 17 00:00:00 2001 From: Peter White Date: Sun, 8 Dec 2024 23:48:11 -0700 Subject: [PATCH 096/143] refactor(pop-up): create functions for wallet integration, plus general cleanup --- crates/pop-cli/src/commands/up/contract.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 847c8875..836bd0b2 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -241,10 +241,6 @@ impl UpContractCommand { } // Check for upload only. - // TODO: Option 1 for wallet integration - // TODO: checks if dry-run in function - // TODO: this is an upload only. Piece #1 of pop up - // TODO: server can be terminated on return here if self.upload_only { let result = self.upload_contract().await; Self::terminate_node(process)?; @@ -275,7 +271,6 @@ impl UpContractCommand { } else { let spinner = spinner(); spinner.start("Doing a dry run to estimate the gas..."); - // TODO: Option 2 for wallet integration. Requires signer info match dry_run_gas_estimate_instantiate(&instantiate_exec).await { Ok(w) => { spinner.stop(format!("Gas limit estimate: {:?}", w)); @@ -291,7 +286,6 @@ impl UpContractCommand { }; // Finally upload and instantiate. - // TODO: option 3 for wallet integration if !self.dry_run { let spinner = spinner(); spinner.start("Uploading and instantiating the contract..."); From 1619e72b9a4eef41c44373aa304e3fd12ca3c2c1 Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 00:05:06 -0700 Subject: [PATCH 097/143] chore: use git branch for cargo contract --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 401ee5c7..af626a19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8373,7 +8373,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.6.4", + "rand_core 0.5.1", "serde", "unicode-normalization", ] From e19d9b96391fcfc210260748660e56dc1a769152 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 10 Dec 2024 17:11:16 -0700 Subject: [PATCH 098/143] feat(up-contract): handle subxt events better, various improvements --- crates/pop-cli/src/commands/up/contract.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 836bd0b2..92dbe1d4 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -447,6 +447,27 @@ fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Opti )); } +fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Option) { + spinner.stop(format!( + "Contract deployed and instantiated:\n{}", + style(format!( + "{}\n{}", + style(format!("{} The contract address is {:?}", console::Emoji("●", ">"), address)) + .dim(), + code_hash + .map(|hash| style(format!( + "{} The contract code hash is {:?}", + console::Emoji("●", ">"), + hash + )) + .dim() + .to_string()) + .unwrap_or_default(), + )) + .dim() + )); +} + #[cfg(test)] mod tests { use super::*; From 145e44bddda0d18c13c612fabd4b13d5161e4368 Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 3 Dec 2024 17:32:40 -0700 Subject: [PATCH 099/143] feat(wallet-integration): implement server and API --- Cargo.lock | 234 +++++++++++++++++++++-- crates/pop-wallet-integration/Cargo.toml | 14 ++ crates/pop-wallet-integration/src/lib.rs | 161 ++++++++++++++++ 3 files changed, 396 insertions(+), 13 deletions(-) create mode 100644 crates/pop-wallet-integration/Cargo.toml create mode 100644 crates/pop-wallet-integration/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index af626a19..bbb39387 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1135,6 +1135,16 @@ dependencies = [ "log", ] +[[package]] +name = "binary-merkle-tree" +version = "15.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" +dependencies = [ + "hash-db", + "log", +] + [[package]] name = "bincode" version = "1.3.3" @@ -8388,7 +8398,13 @@ checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" name = "parity-scale-codec" version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" + +[[package]] +name = "parity-scale-codec" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be4817d39f3272f69c59fe05d0535ae6456c2dc2fa1ba02910296c7e0a5c590" dependencies = [ "arrayvec 0.7.6", "bitvec", @@ -8396,19 +8412,20 @@ dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] @@ -9451,8 +9468,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tar", "tempfile", "thiserror 1.0.69", @@ -9510,6 +9527,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "pop-wallet-integration" +version = "0.5.0" +dependencies = [ + "axum", + "serde", + "serde_json", + "tokio", + "tower-http 0.6.2", +] + [[package]] name = "portable-atomic" version = "1.10.0" @@ -10397,6 +10425,16 @@ dependencies = [ "derive_more 0.99.18", ] +[[package]] +name = "ruzstd" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" +dependencies = [ + "byteorder", + "derive_more 0.99.18", +] + [[package]] name = "rw-stream-sink" version = "0.4.0" @@ -11390,7 +11428,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd", + "ruzstd 0.5.0", "schnorrkel", "serde", "serde_json", @@ -11401,7 +11439,61 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi", + "wasmi 0.31.2", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.22.1", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 5.3.1", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.13.0", + "libm", + "libsecp256k1", + "merlin", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.6.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.8.0", + "twox-hash", + "wasmi 0.32.3", "x25519-dalek", "zeroize", ] @@ -11438,7 +11530,7 @@ dependencies = [ "siphasher", "slab", "smol", - "smoldot", + "smoldot 0.16.0", "zeroize", ] @@ -12462,7 +12554,34 @@ dependencies = [ "sp-core 32.0.0", "sp-io 34.0.0", "sp-std", - "sp-weights", + "sp-weights 31.0.0", +] + +[[package]] +name = "sp-runtime" +version = "39.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "sp-weights 31.0.0", + "tracing", ] [[package]] @@ -12888,7 +13007,22 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic", + "sp-arithmetic 25.0.0", + "sp-debug-derive", +] + +[[package]] +name = "sp-weights" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 26.0.0", "sp-debug-derive", ] @@ -13193,7 +13327,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", "subxt-core", @@ -13209,6 +13343,43 @@ dependencies = [ "web-time", ] +[[package]] +name = "subxt" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" +dependencies = [ + "async-trait", + "derive-where", + "either", + "frame-metadata 17.0.0", + "futures", + "hex", + "impl-serde 0.5.0", + "jsonrpsee 0.24.7", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.17.0", + "serde", + "serde_json", + "subxt-core 0.38.0", + "subxt-lightclient 0.38.0", + "subxt-macro 0.38.0", + "subxt-metadata 0.38.0", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "tracing", + "url", + "wasm-bindgen-futures", + "web-time", +] + [[package]] name = "subxt-codegen" version = "0.38.0" @@ -13248,7 +13419,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde", "serde_json", "subxt-metadata", @@ -13302,6 +13473,20 @@ dependencies = [ "scale-info", ] +[[package]] +name = "subxt-metadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" +dependencies = [ + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "polkadot-sdk", + "scale-info", +] + [[package]] name = "subxt-signer" version = "0.38.0" @@ -14543,6 +14728,29 @@ dependencies = [ "string-interner", ] +[[package]] +name = "wasmi_collections" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" +dependencies = [ + "ahash 0.8.11", + "hashbrown 0.14.5", + "string-interner", +] + +[[package]] +name = "wasmi_core" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmi_core" version = "0.32.3" diff --git a/crates/pop-wallet-integration/Cargo.toml b/crates/pop-wallet-integration/Cargo.toml new file mode 100644 index 00000000..02339d3b --- /dev/null +++ b/crates/pop-wallet-integration/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "pop-wallet-integration" +edition.workspace = true +documentation.workspace = true +license.workspace = true +repository.workspace = true +version.workspace = true + +[dependencies] +axum.workspace = true +tokio.workspace = true +tower-http = { workspace = true, features = ["fs"] } +serde_json.workspace = true +serde = { workspace = true, features = ["derive"] } diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs new file mode 100644 index 00000000..9a970fcd --- /dev/null +++ b/crates/pop-wallet-integration/src/lib.rs @@ -0,0 +1,161 @@ +use axum::{ + routing::{get, post}, + Router, +}; +use serde::Serialize; +use std::{path::PathBuf, sync::Arc}; +use tokio::sync::{oneshot, Mutex}; +use tower_http::services::ServeDir; + +/// Data to be sent to frontend for signing. +#[derive(Serialize)] +pub struct Data { + chain_rpc: String, + data_type: DataType, +} + +/// The type of transaction with specific data for signing (contract or parachain). +#[derive(Serialize)] +pub enum DataType { + /// Parachain call, where Vec is the encoded call data. + Parachain(Vec), + Contract(ContractArgs), +} + +/// Contract specific data variations. +pub mod contracts { + use super::Serialize; + #[derive(Serialize)] + pub struct ContractArgs { + call_type: ContractCallType, + storage_deposit_limit: Option, + /// The binary (wasm, polkavm) of the contract. + code: Option>, + } + + #[derive(Serialize)] + pub enum ContractCallType { + // no unique fields. + Upload, + Instantiate(InstantiateArgs), + Call(CallArgs), + } + + /// Arguments for instantiating a contract. + #[derive(Serialize)] + pub struct InstantiateArgs { + constructor: String, + args: Vec, + value: String, + gas_limit: Option, + proof_size: Option, + salt: Option>, + } + + /// Arguments for calling a contract. + #[derive(Serialize)] + pub struct CallArgs { + address: String, + message: String, + args: Vec, + value: String, + gas_limit: Option, + proof_size: Option, + } +} +use crate::contracts::ContractArgs; + +struct StateHandler { + shutdown_tx: Option>, + signed_payload: Option, +} + +/// Manages the wallet integration for secure signing of transactions. +pub struct WalletIntegrationManager { + frontend_path: PathBuf, + // cloning can be expensive (e.g. contract code stored in-memory) + data: Arc, + signed_payload: Option, +} + +impl WalletIntegrationManager { + /// - frontend_path: Path to the wallet-integration frontend. + /// - data: Data to be sent to the frontend for signing. + pub fn new(frontend_path: PathBuf, data: Data) -> Self { + Self { frontend_path, data: Arc::new(data), signed_payload: Default::default() } + } + + /// Serves the wallet-integration frontend and an API for the wallet to get + /// the necessary data and submit the signed payload. + pub async fn run(&mut self) { + // used to signal shutdown. + let (tx, rx) = oneshot::channel(); + + // shared state between routes. Will be used to store the signed payload. + let state = + Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + + // will shutdown when the signed payload is received + let app = Router::new() + // cloning Arcs is cheap + .route("/data", get(routes::get_data_handler).with_state(self.data.clone())) + .route("/submit", post(routes::handle_submit).with_state(state.clone())) + .nest_service("/", ServeDir::new(self.frontend_path.clone())); + + let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .unwrap(); + + self.signed_payload = state.lock().await.signed_payload.take(); + } +} + +mod routes { + use super::{Arc, Data, Mutex, StateHandler}; + use axum::{extract::State, Json}; + use serde_json::json; + + /// Responds with the serialized JSON data for signing. + pub(super) async fn get_data_handler(State(data): State>) -> Json { + Json(serde_json::to_value(&*data).unwrap()) + } + + /// Receives the signed payload from the wallet. + /// Will signal for shutdown on success. + pub(super) async fn handle_submit( + State(state): State>>, + Json(payload): Json, + ) -> Json { + let mut state = state.lock().await; + state.signed_payload = Some(payload.clone()); + + // signal shutdown + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } + + // graceful shutdown ensures response is sent before shutdown. + Json(json!({"status": "success", "payload": payload})) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[tokio::test] + async fn wallet_integration_manager() { + let path = PathBuf::from("/Users/peter/dev/r0gue/react-teleport-example/dist"); + let data = + Data { chain_rpc: "chain_rpc".to_string(), data_type: DataType::Parachain(vec![]) }; + let mut wim = WalletIntegrationManager::new(path, data); + + wim.run().await; + + println!("{:?}", wim.signed_payload); + } +} From f58b4a498afc1ac80bb4bb8ffdf41d36514972ef Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 3 Dec 2024 17:54:59 -0700 Subject: [PATCH 100/143] feat(wallet-integration): add a few tests to server. Needs more --- Cargo.lock | 3335 ++++------------------ crates/pop-wallet-integration/src/lib.rs | 80 +- 2 files changed, 594 insertions(+), 2821 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bbb39387..36a943aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,11 +23,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ - "gimli 0.31.1", + "gimli 0.31.0", ] [[package]] @@ -46,31 +46,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "aes-gcm" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - [[package]] name = "ahash" version = "0.7.8" @@ -195,9 +170,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -210,36 +185,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -273,9 +248,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" dependencies = [ "derive_arbitrary", ] @@ -287,20 +262,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-models-ext", - "ark-std 0.4.0", + "ark-ff", + "ark-std", ] [[package]] @@ -310,48 +273,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bls12-381-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-serialize 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bw6-761" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-bw6-761-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" -dependencies = [ - "ark-bw6-761", - "ark-ec", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", + "ark-ff", + "ark-serialize", + "ark-std", ] [[package]] @@ -360,83 +284,14 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff 0.4.2", + "ark-ff", "ark-poly", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-serialize", + "ark-std", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", - "rayon", - "zeroize", -] - -[[package]] -name = "ark-ed-on-bls12-377" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff 0.4.2", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ff 0.4.2", - "ark-models-ext", - "ark-std 0.4.0", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", "zeroize", ] @@ -446,30 +301,20 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version 0.4.1", + "rustc_version", "zeroize", ] -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -480,18 +325,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -505,56 +338,19 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-models-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" -dependencies = [ - "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", -] - [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", + "ark-ff", + "ark-serialize", + "ark-std", "derivative", "hashbrown 0.13.2", ] -[[package]] -name = "ark-scale" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" -dependencies = [ - "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - [[package]] name = "ark-serialize" version = "0.4.2" @@ -562,7 +358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std 0.4.0", + "ark-std", "digest 0.10.7", "num-bigint", ] @@ -578,16 +374,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand", -] - [[package]] name = "ark-std" version = "0.4.0" @@ -596,7 +382,6 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", - "rayon", ] [[package]] @@ -607,9 +392,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.9" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -696,66 +481,6 @@ dependencies = [ "wait-timeout", ] -[[package]] -name = "assert_matches" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" - -[[package]] -name = "asset-test-utils" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0324df9ce91a9840632e865dd3272bd20162023856f1b189b7ae58afa5c6b61" -dependencies = [ - "cumulus-pallet-parachain-system", - "cumulus-pallet-xcmp-queue", - "cumulus-primitives-core", - "frame-support", - "frame-system", - "pallet-assets", - "pallet-balances", - "pallet-collator-selection", - "pallet-session", - "pallet-timestamp", - "pallet-xcm", - "pallet-xcm-bridge-hub-router", - "parachains-common", - "parachains-runtimes-test-utils", - "parity-scale-codec", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "staging-parachain-info", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "substrate-wasm-builder", -] - -[[package]] -name = "assets-common" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93438e31a4449fbeab87210931edc8cd156292354f1fc15f17d819ecded6bf25" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "impl-trait-for-tuples", - "log", - "pallet-asset-conversion", - "pallet-assets", - "pallet-xcm", - "parachains-common", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", - "substrate-wasm-builder", -] - [[package]] name = "async-channel" version = "2.3.1" @@ -794,9 +519,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -835,9 +560,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" dependencies = [ "async-channel", "async-io", @@ -850,6 +575,7 @@ dependencies = [ "futures-lite", "rustix 0.38.42", "tracing", + "windows-sys 0.59.0", ] [[package]] @@ -872,9 +598,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", @@ -883,9 +609,9 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", @@ -900,9 +626,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", @@ -934,9 +660,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -951,7 +677,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "itoa", "matchit", @@ -964,7 +690,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "tokio", "tower 0.5.2", "tower-layer", @@ -987,7 +713,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -1065,11 +791,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.2", + "addr2line 0.24.1", "cfg-if", "libc", "miniz_oxide", - "object 0.36.5", + "object 0.36.4", "rustc-demangle", "windows-targets 0.52.6", ] @@ -1135,16 +861,6 @@ dependencies = [ "log", ] -[[package]] -name = "binary-merkle-tree" -version = "15.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" -dependencies = [ - "hash-db", - "log", -] - [[package]] name = "bincode" version = "1.3.3" @@ -1156,30 +872,15 @@ dependencies = [ [[package]] name = "bip39" -version = "2.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ - "bitcoin_hashes 0.13.0", + "bitcoin_hashes 0.11.0", "serde", "unicode-normalization", ] -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -1187,10 +888,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" [[package]] -name = "bitcoin-io" -version = "0.1.3" +name = "bitcoin_hashes" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" [[package]] name = "bitcoin_hashes" @@ -1199,17 +900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative 0.1.2", -] - -[[package]] -name = "bitcoin_hashes" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" -dependencies = [ - "bitcoin-io", - "hex-conservative 0.2.1", + "hex-conservative", ] [[package]] @@ -1232,7 +923,6 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", - "serde", "tap", "wyz", ] @@ -1300,9 +990,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.18.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" +checksum = "0aed08d3adb6ebe0eff737115056652670ae290f177759aac19c30456135f94c" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -1312,10 +1002,10 @@ dependencies = [ "hex", "http 1.2.0", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-named-pipe", "hyper-util", - "hyperlocal", + "hyperlocal-next", "log", "pin-project-lite", "serde", @@ -1333,9 +1023,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.47.1-rc.27.3.1" +version = "1.44.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" +checksum = "709d9aa1c37abb89d40f19f5d0ad6f0d88cb1581264e571c9350fc5bb89cf1c5" dependencies = [ "serde", "serde_repr", @@ -1344,9 +1034,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ "borsh-derive", "cfg_aliases", @@ -1354,9 +1044,9 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.3" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", @@ -1367,289 +1057,14 @@ dependencies = [ [[package]] name = "bounded-collections" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" -dependencies = [ - "log", - "parity-scale-codec", - "scale-info", - "serde", -] - -[[package]] -name = "bp-header-chain" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "890df97cea17ee61ff982466bb9e90cb6b1462adb45380999019388d05e4b92d" -dependencies = [ - "bp-runtime", - "finality-grandpa", - "frame-support", - "parity-scale-codec", - "scale-info", - "serde", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-messages" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efabf94339950b914ba87249497f1a0e35a73849934d164fecae4b275928cf6" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "frame-support", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", -] - -[[package]] -name = "bp-parachains" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9011e5c12c15caf3c4129a98f4f4916ea9165db8daf6ed85867c3106075f40df" -dependencies = [ - "bp-header-chain", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-polkadot" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa6277dd4333917ecfbcc35e9332a9f11682e0a506e76b617c336224660fce33" -dependencies = [ - "bp-header-chain", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "sp-api", - "sp-std", -] - -[[package]] -name = "bp-polkadot-core" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345cf472bac11ef79d403e4846a666b7d22a13cd16d9c85b62cd6b5e16c4a042" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", - "frame-system", - "parity-scale-codec", - "parity-util-mem", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-relayers" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9465ad727e466d67d64244a1aa7bb19933a297913fdde34b8e9bda0a341bdeb" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-runtime", - "frame-support", - "frame-system", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "sp-std", -] - -[[package]] -name = "bp-runtime" -version = "0.18.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "746d9464f912b278f8a5e2400f10541f95da7fc6c7d688a2788b9a46296146ee" +checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" dependencies = [ - "frame-support", - "frame-system", - "hash-db", - "impl-trait-for-tuples", "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-state-machine 0.43.0", - "sp-std", - "sp-trie 37.0.0", - "trie-db 0.29.1", -] - -[[package]] -name = "bp-test-utils" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e659078b54c0b6bd79896738212a305842ad37168976363233516754337826" -dependencies = [ - "bp-header-chain", - "bp-parachains", - "bp-polkadot-core", - "bp-runtime", - "ed25519-dalek", - "finality-grandpa", - "parity-scale-codec", - "sp-application-crypto 38.0.0", - "sp-consensus-grandpa", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "sp-trie 37.0.0", -] - -[[package]] -name = "bp-xcm-bridge-hub" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6909117ca87cb93703742939d5f0c4c93e9646d9cda22262e9709d68c929999b" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", "parity-scale-codec", "scale-info", "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bp-xcm-bridge-hub-router" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9284820ca704f5c065563cad77d2e3d069a23cc9cb3a29db9c0de8dd3b173a87" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bridge-hub-common" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b53c53d627e2da38f8910807944bf3121e154b5c0ac9e122995af9dfb13ed" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "pallet-message-queue", - "parity-scale-codec", - "scale-info", - "snowbridge-core", - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "sp-std", - "staging-xcm 14.2.0", -] - -[[package]] -name = "bridge-hub-test-utils" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0b3aa5fd8481a06ca16e47fd3d2d9c6abe76b27d922ec8980a853f242173b3" -dependencies = [ - "asset-test-utils", - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-test-utils", - "bp-xcm-bridge-hub", - "bridge-runtime-common", - "cumulus-pallet-parachain-system", - "cumulus-pallet-xcmp-queue", - "frame-support", - "frame-system", - "impl-trait-for-tuples", - "log", - "pallet-balances", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-timestamp", - "pallet-utility", - "pallet-xcm", - "pallet-xcm-bridge-hub", - "parachains-common", - "parachains-runtimes-test-utils", - "parity-scale-codec", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-keyring", - "sp-runtime 39.0.2", - "sp-tracing 17.0.1", - "staging-xcm 14.2.0", - "staging-xcm-builder", - "staging-xcm-executor", -] - -[[package]] -name = "bridge-runtime-common" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c639aa22de6e904156a3e8b0e6b9e6af790cb27a1299688cc07997e1ffe5b648" -dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-xcm-bridge-hub", - "frame-support", - "frame-system", - "log", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-transaction-payment", - "pallet-utility", - "parity-scale-codec", - "scale-info", - "sp-io 38.0.0", - "sp-runtime 39.0.2", - "sp-std", - "sp-trie 37.0.0", - "staging-xcm 14.2.0", - "tuplex", ] [[package]] @@ -1672,24 +1087,15 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.7", "serde", ] -[[package]] -name = "build-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" -dependencies = [ - "semver 0.6.0", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -1724,12 +1130,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "bytemuck" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" - [[package]] name = "byteorder" version = "1.5.0" @@ -1762,13 +1162,13 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.15.4" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver", "serde", "serde_json", "thiserror 1.0.69", @@ -1790,9 +1190,9 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.20.5" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" +checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965" dependencies = [ "serde", "toml 0.8.19", @@ -1815,15 +1215,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -1868,7 +1259,6 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", - "zeroize", ] [[package]] @@ -1895,9 +1285,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1913,9 +1303,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cliclack" -version = "0.3.5" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" +checksum = "0c827ccada848b64fba073b64518a7416d605ad70c594b5450b5ed1d97e3b5d4" dependencies = [ "console", "indicatif", @@ -1932,14 +1322,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -1985,7 +1375,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width 0.1.14", + "unicode-width", "windows-sys 0.52.0", ] @@ -2008,26 +1398,6 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "const-random" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" -dependencies = [ - "const-random-macro", -] - -[[package]] -name = "const-random-macro" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" -dependencies = [ - "getrandom", - "once_cell", - "tiny-keccak", -] - [[package]] name = "const_env" version = "0.1.2" @@ -2074,7 +1444,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata 0.19.1", + "cargo_metadata", "clap", "colored", "contract-metadata", @@ -2082,11 +1452,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde 0.5.0", + "impl-serde", "parity-scale-codec", "regex", - "rustc_version 0.4.1", - "semver 1.0.23", + "rustc_version", + "semver", "serde", "serde_json", "strum 0.26.3", @@ -2101,7 +1471,7 @@ dependencies = [ "walkdir", "wasm-encoder", "wasm-opt", - "wasmparser 0.220.0", + "wasmparser 0.207.0", "which", "zip", ] @@ -2122,7 +1492,7 @@ dependencies = [ "hex", "ink_env", "ink_metadata", - "itertools 0.13.0", + "itertools 0.12.1", "pallet-contracts-uapi-next", "parity-scale-codec", "rust_decimal", @@ -2144,8 +1514,8 @@ version = "5.0.1" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", - "impl-serde 0.5.0", - "semver 1.0.23", + "impl-serde", + "semver", "serde", "serde_json", "url", @@ -2165,11 +1535,11 @@ dependencies = [ "indexmap 2.7.0", "ink_env", "ink_metadata", - "itertools 0.13.0", + "itertools 0.12.1", "nom", "nom-supreme", "parity-scale-codec", - "primitive-types 0.13.1", + "primitive-types", "scale-info", "serde", "serde_json", @@ -2213,144 +1583,36 @@ dependencies = [ name = "cpp_demangle" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "cpufeatures" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" -dependencies = [ - "libc", -] - -[[package]] -name = "cranelift-bforest" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" -dependencies = [ - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" -dependencies = [ - "bumpalo", - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "cranelift-isle", - "gimli 0.27.3", - "hashbrown 0.13.2", - "log", - "regalloc2 0.6.1", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-codegen-meta" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" -dependencies = [ - "cranelift-codegen-shared", -] - -[[package]] -name = "cranelift-codegen-shared" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" - -[[package]] -name = "cranelift-entity" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" -dependencies = [ - "serde", -] - -[[package]] -name = "cranelift-frontend" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cranelift-isle" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" - -[[package]] -name = "cranelift-native" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" -dependencies = [ - "cranelift-codegen", - "libc", - "target-lexicon", -] - -[[package]] -name = "cranelift-wasm" -version = "0.95.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "itertools 0.10.5", - "log", - "smallvec", - "wasmparser 0.102.0", - "wasmtime-types", +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +dependencies = [ + "cfg-if", ] [[package]] -name = "crc32fast" -version = "1.4.2" +name = "cpufeatures" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ - "cfg-if", + "libc", ] [[package]] -name = "crossbeam-deque" -version = "0.8.5" +name = "cranelift-entity" +version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "serde", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "crc32fast" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "crossbeam-utils", + "cfg-if", ] [[package]] @@ -2370,13 +1632,14 @@ checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" -version = "0.28.1" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "mio", + "libc", + "mio 0.8.11", "parking_lot", "rustix 0.38.42", "signal-hook", @@ -2770,7 +2033,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version 0.4.1", + "rustc_version", "subtle", "zeroize", ] @@ -2796,7 +2059,6 @@ dependencies = [ "cxxbridge-cmd", "cxxbridge-flags", "cxxbridge-macro", - "foldhash", "link-cplusplus", ] @@ -2808,6 +2070,7 @@ checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" dependencies = [ "cc", "codespan-reporting", + "once_cell", "proc-macro2", "quote", "scratch", @@ -2996,9 +2259,9 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", @@ -3078,16 +2341,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs" version = "5.0.1" @@ -3109,17 +2362,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[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", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -3139,18 +2381,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.9" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" +checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.9" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" +checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" dependencies = [ "common-path", "derive-syn-parse", @@ -3182,12 +2424,6 @@ dependencies = [ "shared_child", ] -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - [[package]] name = "dyn-clonable" version = "0.9.0" @@ -3318,9 +2554,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.35" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -3366,19 +2602,6 @@ dependencies = [ "regex", ] -[[package]] -name = "env_logger" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - [[package]] name = "env_logger" version = "0.11.5" @@ -3420,47 +2643,6 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" -[[package]] -name = "ethabi-decode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" -dependencies = [ - "ethereum-types", - "tiny-keccak", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "primitive-types 0.12.2", - "scale-info", - "uint 0.9.5", -] - [[package]] name = "event-listener" version = "5.3.1" @@ -3503,12 +2685,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - [[package]] name = "fastrand" version = "2.3.0" @@ -3552,16 +2728,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "file-per-thread-logger" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" -dependencies = [ - "env_logger 0.10.2", - "log", -] - [[package]] name = "filetime" version = "0.2.25" @@ -3604,9 +2770,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "miniz_oxide", @@ -3627,12 +2793,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - [[package]] name = "foreign-types" version = "0.3.2" @@ -3961,9 +3121,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -3976,9 +3136,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -3986,15 +3146,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -4004,15 +3164,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" -version = "2.5.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ "fastrand", "futures-core", @@ -4023,9 +3183,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", @@ -4034,15 +3194,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -4052,9 +3212,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -4068,15 +3228,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -4109,42 +3260,22 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "ghash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" -dependencies = [ - "opaque-debug", - "polyval", -] - [[package]] name = "gimli" version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator 0.2.0", + "fallible-iterator", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" -dependencies = [ - "fallible-iterator 0.3.0", - "stable_deref_trait", -] - -[[package]] -name = "gimli" -version = "0.31.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "git2" @@ -4219,9 +3350,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -4280,17 +3411,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - [[package]] name = "heck" version = "0.4.1" @@ -4327,21 +3447,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" -[[package]] -name = "hex-conservative" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" -dependencies = [ - "arrayvec 0.7.6", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hkdf" version = "0.12.4" @@ -4462,7 +3567,7 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" name = "httparse" version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -4487,9 +3592,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -4511,9 +3616,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -4537,7 +3642,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -4553,7 +3658,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.30", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -4571,7 +3676,7 @@ dependencies = [ "http 1.2.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.13", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -4584,7 +3689,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.31", + "hyper 0.14.30", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -4597,7 +3702,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.31", + "hyper 0.14.30", "native-tls", "tokio", "tokio-native-tls", @@ -4611,7 +3716,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "native-tls", "tokio", @@ -4621,16 +3726,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.4.1", "pin-project-lite", "socket2", "tokio", @@ -4639,14 +3744,14 @@ dependencies = [ ] [[package]] -name = "hyperlocal" -version = "0.9.1" +name = "hyperlocal-next" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" +checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" dependencies = [ "hex", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "pin-project-lite", "tokio", @@ -4655,9 +3760,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4802,23 +3907,12 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "icu_normalizer", - "icu_properties", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -4830,24 +3924,6 @@ dependencies = [ "parity-scale-codec", ] -[[package]] -name = "impl-codec" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67aa010c1e3da95bf151bd8b4c059b2ed7e75387cdb969b4f8f2723a43f9941" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - [[package]] name = "impl-serde" version = "0.4.0" @@ -4857,18 +3933,9 @@ dependencies = [ "serde", ] -[[package]] -name = "impl-serde" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" -dependencies = [ - "serde", -] - [[package]] name = "impl-trait-for-tuples" -version = "0.2.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ @@ -4894,6 +3961,7 @@ checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", + "syn 1.0.109", ] [[package]] @@ -4920,7 +3988,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.14.5", "serde", ] @@ -4932,15 +4000,15 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", + "instant", "number_prefix", "portable-atomic", - "unicode-width 0.2.0", - "web-time", + "unicode-width", ] [[package]] @@ -4959,11 +4027,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273f2aa983d04a6476d3c5ac76ddbef07555664b88f923996e7465e261dda48" dependencies = [ "blake2", - "derive_more 1.0.0", + "derive_more", "ink_primitives", - "pallet-contracts-uapi 9.0.0", + "pallet-contracts-uapi-next", "parity-scale-codec", - "secp256k1 0.28.2", + "secp256k1", "sha2 0.10.8", "sha3", ] @@ -4977,25 +4045,24 @@ dependencies = [ "blake2", "cfg-if", "const_env", - "derive_more 1.0.0", + "derive_more", "ink_allocator", "ink_engine", "ink_prelude", "ink_primitives", "ink_storage_traits", "num-traits", - "pallet-contracts-uapi 9.0.0", + "pallet-contracts-uapi-next", "parity-scale-codec", "paste", "rlibc", - "scale-decode 0.11.1", - "scale-encode 0.6.0", + "scale-decode 0.10.0", + "scale-encode 0.5.0", "scale-info", "schnorrkel", - "secp256k1 0.28.2", + "secp256k1", "sha2 0.10.8", "sha3", - "staging-xcm 11.0.0", "static_assertions", ] @@ -5005,8 +4072,8 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27135c651274087ba0578d2c07866c31d8dd481ae8de5bb7295fe3931491aa80" dependencies = [ - "derive_more 1.0.0", - "impl-serde 0.4.0", + "derive_more", + "impl-serde", "ink_prelude", "ink_primitives", "linkme", @@ -5031,11 +4098,11 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a530c1b352a53176ea718f3a65f15003e54e0474ec12353ea0e0e5bb60b25741" dependencies = [ - "derive_more 1.0.0", + "derive_more", "ink_prelude", "parity-scale-codec", - "scale-decode 0.11.1", - "scale-encode 0.6.0", + "scale-decode 0.10.0", + "scale-encode 0.5.0", "scale-info", "xxhash-rust", ] @@ -5093,20 +4160,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" - -[[package]] -name = "is-terminal" -version = "0.4.13" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" -dependencies = [ - "hermit-abi 0.4.0", - "libc", - "windows-sys 0.52.0", -] +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is_terminal_polyfill" @@ -5143,9 +4199,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni" @@ -5157,7 +4213,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror 1.0.69", + "thiserror", "walkdir", ] @@ -5200,7 +4256,7 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5213,7 +4269,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5298,9 +4354,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.4" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", @@ -5333,16 +4389,6 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "keccak-hash" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" -dependencies = [ - "primitive-types 0.13.1", - "tiny-keccak", -] - [[package]] name = "kube" version = "0.87.2" @@ -5369,7 +4415,7 @@ dependencies = [ "home", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.30", "hyper-rustls 0.24.2", "hyper-timeout", "jsonpath-rust", @@ -5380,11 +4426,11 @@ dependencies = [ "rand", "rustls 0.21.12", "rustls-pemfile 1.0.4", - "secrecy 0.8.0", + "secrecy", "serde", "serde_json", "serde_yaml", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-tungstenite", "tokio-util", @@ -5407,7 +4453,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5430,7 +4476,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-util", "tracing", @@ -5470,9 +4516,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.11" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libp2p" @@ -5494,7 +4540,7 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5544,16 +4590,16 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror 1.0.69", - "unsigned-varint 0.7.2", + "thiserror", + "unsigned-varint", "void", ] [[package]] name = "libp2p-identity" -version = "0.2.10" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" +checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" dependencies = [ "bs58", "ed25519-dalek", @@ -5562,7 +4608,7 @@ dependencies = [ "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror 1.0.69", + "thiserror", "tracing", "zeroize", ] @@ -5684,18 +4730,18 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.31" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566336154b9e58a4f055f6dd4cbab62c7dc0826ce3c0a04e63b2d2ecd784cdae" +checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.31" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9" +checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" dependencies = [ "proc-macro2", "quote", @@ -5723,12 +4769,6 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - [[package]] name = "lock_api" version = "0.4.12" @@ -5747,20 +4787,11 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" -dependencies = [ - "hashbrown 0.12.3", -] - -[[package]] -name = "lru" -version = "0.12.5" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.14.5", ] [[package]] @@ -5937,16 +4968,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "log", "wasi", "windows-sys 0.52.0", ] [[package]] name = "mockito" -version = "1.6.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" +checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" dependencies = [ "assert-json-diff", "bytes", @@ -5955,7 +4985,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-util", "log", "rand", @@ -5966,17 +4996,11 @@ dependencies = [ "tokio", ] -[[package]] -name = "multi-stash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" - [[package]] name = "multiaddr" -version = "0.18.2" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" dependencies = [ "arrayref", "byteorder", @@ -5987,7 +5011,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint 0.8.0", + "unsigned-varint", "url", ] @@ -6009,7 +5033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint 0.8.0", + "unsigned-varint", ] [[package]] @@ -6023,22 +5047,7 @@ dependencies = [ "log", "pin-project", "smallvec", - "unsigned-varint 0.7.2", -] - -[[package]] -name = "nalgebra" -version = "0.33.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" -dependencies = [ - "approx", - "matrixmultiply", - "num-complex", - "num-rational", - "num-traits", - "simba", - "typenum", + "unsigned-varint", ] [[package]] @@ -6110,16 +5119,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -6130,15 +5129,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -6193,7 +5183,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -6226,27 +5215,18 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.2" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" @@ -6256,9 +5236,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -6288,18 +5268,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.4.1+3.4.0" +version = "300.3.2+3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -8388,12 +7368,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "parity-bytes" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" - [[package]] name = "parity-scale-codec" version = "3.6.12" @@ -8404,7 +7378,7 @@ checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" name = "parity-scale-codec" version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be4817d39f3272f69c59fe05d0535ae6456c2dc2fa1ba02910296c7e0a5c590" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec 0.7.6", "bitvec", @@ -8412,57 +7386,21 @@ dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", - "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.7.0" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.89", -] - -[[package]] -name = "parity-util-mem" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" -dependencies = [ - "cfg-if", - "ethereum-types", - "hashbrown 0.12.3", - "impl-trait-for-tuples", - "lru 0.8.1", - "parity-util-mem-derive", - "parking_lot", - "primitive-types 0.12.2", - "smallvec", - "winapi", -] - -[[package]] -name = "parity-util-mem-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" -dependencies = [ - "proc-macro2", "syn 1.0.109", - "synstructure 0.12.6", ] -[[package]] -name = "parity-wasm" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" - [[package]] name = "parking" version = "2.2.1" @@ -8516,7 +7454,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", - "hmac 0.12.1", "password-hash", ] @@ -8583,18 +7520,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", @@ -8603,9 +7540,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -8636,7 +7573,7 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" @@ -9171,19 +8108,6 @@ name = "polkavm-common" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" -dependencies = [ - "log", -] - -[[package]] -name = "polkavm-common" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" -dependencies = [ - "log", - "polkavm-assembler 0.10.0", -] [[package]] name = "polkavm-derive" @@ -9213,15 +8137,6 @@ dependencies = [ "polkavm-derive-impl-macro 0.9.0", ] -[[package]] -name = "polkavm-derive" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" -dependencies = [ - "polkavm-derive-impl-macro 0.10.0", -] - [[package]] name = "polkavm-derive-impl" version = "0.5.0" @@ -9344,9 +8259,9 @@ checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" [[package]] name = "polling" -version = "3.7.4" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", @@ -9368,18 +8283,6 @@ dependencies = [ "universal-hash", ] -[[package]] -name = "polyval" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", -] - [[package]] name = "pop-cli" version = "0.5.0" @@ -9392,7 +8295,7 @@ dependencies = [ "console", "dirs", "duct", - "env_logger 0.11.5", + "env_logger", "git2", "os_info", "pop-common", @@ -9440,7 +8343,7 @@ dependencies = [ "subxt-signer", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", "toml 0.5.11", "toml_edit 0.22.22", @@ -9468,11 +8371,11 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-test", "url", @@ -9502,10 +8405,10 @@ dependencies = [ "symlink", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-test", - "toml_edit 0.22.22", + "toml_edit 0.22.20", "url", "walkdir", "zombienet-sdk", @@ -9516,14 +8419,14 @@ name = "pop-telemetry" version = "0.5.0" dependencies = [ "dirs", - "env_logger 0.11.5", + "env_logger", "log", "mockito", - "reqwest 0.12.9", + "reqwest 0.12.7", "serde", "serde_json", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -9540,9 +8443,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -9591,9 +8494,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", "syn 2.0.90", @@ -9606,24 +8509,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", - "impl-codec 0.6.0", - "impl-rlp", - "impl-serde 0.4.0", - "scale-info", - "uint 0.9.5", -] - -[[package]] -name = "primitive-types" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" -dependencies = [ - "fixed-hash", - "impl-codec 0.7.0", - "impl-serde 0.5.0", + "impl-codec", + "impl-serde", "scale-info", - "uint 0.10.0", + "uint", ] [[package]] @@ -9642,7 +8531,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.22", + "toml_edit 0.22.20", ] [[package]] @@ -9704,38 +8593,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.6.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax 0.8.5", - "rusty-fork", - "tempfile", - "unarray", -] - [[package]] name = "psm" -version = "0.1.24" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] @@ -9760,12 +8629,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quick-protobuf" version = "0.8.1" @@ -9863,9 +8726,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] @@ -9878,7 +8741,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -9928,14 +8791,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -9949,13 +8812,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax 0.8.4", ] [[package]] @@ -9966,9 +8829,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rend" @@ -9993,7 +8856,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.30", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -10021,9 +8884,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", @@ -10034,7 +8897,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.4.1", "hyper-rustls 0.27.3", "hyper-tls 0.6.0", "hyper-util", @@ -10046,11 +8909,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.2.0", + "rustls-pemfile 2.1.3", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper 1.0.1", "system-configuration 0.6.1", "tokio", "tokio-native-tls", @@ -10219,31 +9082,13 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver", ] [[package]] @@ -10289,7 +9134,7 @@ dependencies = [ name = "rustls" version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "log", "once_cell", @@ -10319,7 +9164,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.2.0", + "rustls-pemfile 2.1.3", "rustls-pki-types", "schannel", "security-framework", @@ -10336,18 +9181,19 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.2.0" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ + "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-platform-verifier" @@ -10360,7 +9206,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.19", + "rustls 0.23.13", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -10378,205 +9224,75 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", -] - -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", -] - -[[package]] -name = "rw-stream-sink" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" -dependencies = [ - "futures", - "pin-project", - "static_assertions", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "safe-mix" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" -dependencies = [ - "rustc_version 0.2.3", -] - -[[package]] -name = "safe_arch" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "salsa20" -version = "0.10.2" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "cipher", + "ring", + "untrusted", ] [[package]] -name = "same-file" -version = "1.0.6" +name = "rustls-webpki" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "winapi-util", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] -name = "sc-allocator" -version = "29.0.0" +name = "rustversion" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b975ee3a95eaacb611e7b415737a7fa2db4d8ad7b880cc1b97371b04e95c7903" -dependencies = [ - "log", - "sp-core 34.0.0", - "sp-wasm-interface 21.0.1", - "thiserror 1.0.69", -] +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] -name = "sc-executor" -version = "0.40.1" +name = "ruzstd" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0cc0a3728fd033589183460c5a49b2e7545d09dc89a098216ef9e9aadcd9dc" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" dependencies = [ - "parity-scale-codec", - "parking_lot", - "sc-executor-common", - "sc-executor-polkavm", - "sc-executor-wasmtime", - "schnellru", - "sp-api", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "sp-io 38.0.0", - "sp-panic-handler", - "sp-runtime-interface 28.0.0", - "sp-trie 37.0.0", - "sp-version", - "sp-wasm-interface 21.0.1", - "tracing", + "byteorder", + "derive_more 0.99.18", ] [[package]] -name = "sc-executor-common" -version = "0.35.0" +name = "rw-stream-sink" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3b703a33dcb7cddf19176fdf12294b9a6408125836b0f4afee3e6969e7f190" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" dependencies = [ - "polkavm 0.9.3", - "sc-allocator", - "sp-maybe-compressed-blob", - "sp-wasm-interface 21.0.1", - "thiserror 1.0.69", - "wasm-instrument", + "futures", + "pin-project", + "static_assertions", ] [[package]] -name = "sc-executor-polkavm" -version = "0.32.0" +name = "ryu" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fe58d9cacfab73e5595fa84b80f7bd03efebe54a0574daaeb221a1d1f7ab80" -dependencies = [ - "log", - "polkavm 0.9.3", - "sc-executor-common", - "sp-wasm-interface 21.0.1", -] +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] -name = "sc-executor-wasmtime" -version = "0.35.0" +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd498f2f77ec1f861c30804f5bfd796d4afcc8ce44ea1f11bfbe2847551d161" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "anyhow", - "cfg-if", - "libc", - "log", - "parking_lot", - "rustix 0.36.17", - "sc-allocator", - "sc-executor-common", - "sp-runtime-interface 28.0.0", - "sp-wasm-interface 21.0.1", - "wasmtime", + "winapi-util", ] [[package]] name = "scale-bits" -version = "0.5.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" +checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" dependencies = [ "parity-scale-codec", - "scale-type-resolver 0.1.1", + "scale-info", ] [[package]] @@ -10587,21 +9303,21 @@ checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" dependencies = [ "parity-scale-codec", "scale-info", - "scale-type-resolver 0.2.0", + "scale-type-resolver", "serde", ] [[package]] name = "scale-decode" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" +checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" dependencies = [ - "derive_more 0.99.18", + "derive_more", "parity-scale-codec", - "scale-bits 0.5.0", - "scale-decode-derive 0.11.1", - "scale-type-resolver 0.1.1", + "scale-bits 0.4.0", + "scale-decode-derive 0.10.0", + "scale-info", "smallvec", ] @@ -10622,11 +9338,12 @@ dependencies = [ [[package]] name = "scale-decode-derive" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" +checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" dependencies = [ "darling 0.14.4", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -10646,14 +9363,14 @@ dependencies = [ [[package]] name = "scale-encode" -version = "0.6.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" +checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" dependencies = [ - "derive_more 0.99.18", + "derive_more", "parity-scale-codec", - "scale-encode-derive 0.6.0", - "scale-type-resolver 0.1.1", + "scale-encode-derive 0.5.0", + "scale-info", "smallvec", ] @@ -10674,9 +9391,9 @@ dependencies = [ [[package]] name = "scale-encode-derive" -version = "0.6.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" +checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" dependencies = [ "darling 0.14.4", "proc-macro-crate 1.3.1", @@ -10700,13 +9417,13 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.6" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" dependencies = [ "bitvec", "cfg-if", - "derive_more 1.0.0", + "derive_more", "parity-scale-codec", "scale-info-derive", "schemars", @@ -10715,9 +9432,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.6" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -10779,9 +9496,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ "windows-sys 0.59.0", ] @@ -10852,18 +9569,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" -[[package]] -name = "scrypt" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" -dependencies = [ - "password-hash", - "pbkdf2", - "salsa20", - "sha2 0.10.8", -] - [[package]] name = "sct" version = "0.7.1" @@ -10901,18 +9606,7 @@ version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "secp256k1-sys 0.9.2", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes 0.14.0", - "rand", - "secp256k1-sys 0.10.1", + "secp256k1-sys", ] [[package]] @@ -10924,15 +9618,6 @@ dependencies = [ "cc", ] -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - [[package]] name = "secrecy" version = "0.8.0" @@ -10943,15 +9628,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secrecy" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" -dependencies = [ - "zeroize", -] - [[package]] name = "security-framework" version = "2.11.1" @@ -10968,41 +9644,14 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", ] -[[package]] -name = "semver" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser 0.7.0", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.3", -] - [[package]] name = "semver" version = "1.0.23" @@ -11012,21 +9661,6 @@ dependencies = [ "serde", ] -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - [[package]] name = "serde" version = "1.0.216" @@ -11036,15 +9670,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-big-array" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" -dependencies = [ - "serde", -] - [[package]] name = "serde-value" version = "0.7.0" @@ -11088,9 +9713,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "indexmap 2.7.0", "itoa", @@ -11122,9 +9747,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -11143,9 +9768,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.11.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64 0.22.1", "chrono", @@ -11274,7 +9899,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.11", "signal-hook", ] @@ -11297,24 +9922,11 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "simba" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" -dependencies = [ - "approx", - "num-complex", - "num-traits", - "paste", - "wide", -] - [[package]] name = "simdutf8" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "similar" @@ -11343,24 +9955,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "slice-group-by" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" - -[[package]] -name = "slot-range-helper" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e34f1146a457a5c554dedeae6c7273aa54c3b031f3e9eb0abd037b5511e2ce9" -dependencies = [ - "enumn", - "parity-scale-codec", - "paste", - "sp-runtime 39.0.2", -] - [[package]] name = "smallvec" version = "1.13.2" @@ -11405,7 +9999,7 @@ dependencies = [ "bs58", "chacha20", "crossbeam-queue", - "derive_more 0.99.18", + "derive_more", "ed25519-zebra 4.0.3", "either", "event-listener", @@ -11428,7 +10022,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd 0.5.0", + "ruzstd", "schnorrkel", "serde", "serde_json", @@ -11439,61 +10033,7 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi 0.31.2", - "x25519-dalek", - "zeroize", -] - -[[package]] -name = "smoldot" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" -dependencies = [ - "arrayvec 0.7.6", - "async-lock", - "atomic-take", - "base64 0.22.1", - "bip39", - "blake2-rfc", - "bs58", - "chacha20", - "crossbeam-queue", - "derive_more 0.99.18", - "ed25519-zebra 4.0.3", - "either", - "event-listener 5.3.1", - "fnv", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "hmac 0.12.1", - "itertools 0.13.0", - "libm", - "libsecp256k1", - "merlin", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", - "pin-project", - "poly1305", - "rand", - "rand_chacha", - "ruzstd 0.6.0", - "schnorrkel", - "serde", - "serde_json", - "sha2 0.10.8", - "sha3", - "siphasher", - "slab", - "smallvec", - "soketto 0.8.0", - "twox-hash", - "wasmi 0.32.3", + "wasmi", "x25519-dalek", "zeroize", ] @@ -11923,29 +10463,16 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505fad69251900048ddddc6387265e1545d1a366e3b4dcd57b76a03f0a65ae7" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 32.0.0", - "sp-io 34.0.0", - "sp-std", -] - -[[package]] -name = "sp-application-crypto" -version = "38.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" +checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 34.0.0", - "sp-io 38.0.0", + "sp-core", + "sp-io", + "sp-std", ] [[package]] @@ -12104,54 +10631,7 @@ dependencies = [ "futures", "hash-db", "hash256-std-hasher", - "impl-serde 0.4.0", - "itertools 0.10.5", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types 0.12.2", - "rand", - "scale-info", - "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.27.0", - "sp-runtime-interface 26.0.0", - "sp-std", - "sp-storage 20.0.0", - "ss58-registry", - "substrate-bip39 0.5.0", - "thiserror 1.0.69", - "tracing", - "w3f-bls", - "zeroize", -] - -[[package]] -name = "sp-core" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2dac7e47c7ddbb61efe196d5cce99f6ea88926c961fa39909bfeae46fc5a7b" -dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra 3.1.0", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde 0.4.0", + "impl-serde", "itertools 0.10.5", "k256", "libsecp256k1", @@ -12161,104 +10641,27 @@ dependencies = [ "parity-scale-codec", "parking_lot", "paste", - "primitive-types 0.12.2", - "rand", - "scale-info", - "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", - "serde", - "sp-crypto-hashing", - "sp-debug-derive", - "sp-externalities 0.28.0", - "sp-runtime-interface 27.0.0", - "sp-std", - "sp-storage 21.0.0", - "ss58-registry", - "substrate-bip39 0.6.0", - "thiserror 1.0.69", - "tracing", - "w3f-bls", - "zeroize", -] - -[[package]] -name = "sp-core" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" -dependencies = [ - "array-bytes", - "bitflags 1.3.2", - "blake2", - "bounded-collections", - "bs58", - "dyn-clonable", - "ed25519-zebra 4.0.3", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde 0.4.0", - "itertools 0.11.0", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot", - "paste", - "primitive-types 0.12.2", + "primitive-types", "rand", "scale-info", "schnorrkel", - "secp256k1 0.28.2", - "secrecy 0.8.0", + "secp256k1", + "secrecy", "serde", "sp-crypto-hashing", "sp-debug-derive", - "sp-externalities 0.29.0", - "sp-runtime-interface 28.0.0", + "sp-externalities", + "sp-runtime-interface", "sp-std", - "sp-storage 21.0.0", + "sp-storage", "ss58-registry", - "substrate-bip39 0.6.0", - "thiserror 1.0.69", + "substrate-bip39", + "thiserror", "tracing", "w3f-bls", "zeroize", ] -[[package]] -name = "sp-core-hashing" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f812cb2dff962eb378c507612a50f1c59f52d92eb97b710f35be3c2346a3cd7" -dependencies = [ - "sp-crypto-hashing", -] - -[[package]] -name = "sp-crypto-ec-utils" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acb24f8a607a48a87f0ee4c090fc5d577eee49ff39ced6a3c491e06eca03c37" -dependencies = [ - "ark-bls12-377", - "ark-bls12-377-ext", - "ark-bls12-381", - "ark-bls12-381-ext", - "ark-bw6-761", - "ark-bw6-761-ext", - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ed-on-bls12-377-ext", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ed-on-bls12-381-bandersnatch-ext", - "ark-scale", - "sp-runtime-interface 28.0.0", -] - [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -12304,63 +10707,14 @@ dependencies = [ "environmental", "parity-scale-codec", "sp-std", - "sp-storage 20.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-storage 21.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a904407d61cb94228c71b55a9d3708e9d6558991f9e83bd42bd91df37a159d30" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-storage 21.0.0", -] - -[[package]] -name = "sp-genesis-builder" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a646ed222fd86d5680faa4a8967980eb32f644cae6c8523e1c689a6deda3e8" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde_json", - "sp-api", - "sp-runtime 39.0.2", -] - -[[package]] -name = "sp-inherents" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afffbddc380d99a90c459ba1554bbbc01d62e892de9f1485af6940b89c4c0d57" -dependencies = [ - "async-trait", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-runtime 39.0.2", - "thiserror 1.0.69", + "sp-storage", ] [[package]] name = "sp-io" -version = "34.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44ed47247b6eee76ff703f9fa9f04f99c4104ac1faf629e6d1128e09066b57b" +checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" dependencies = [ "bytes", "ed25519-dalek", @@ -12369,63 +10723,25 @@ dependencies = [ "parity-scale-codec", "polkavm-derive 0.9.1", "rustversion", - "secp256k1 0.28.2", - "sp-core 32.0.0", + "secp256k1", + "sp-core", "sp-crypto-hashing", - "sp-externalities 0.28.0", - "sp-keystore 0.38.0", - "sp-runtime-interface 27.0.0", - "sp-state-machine 0.39.0", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", "sp-std", - "sp-tracing 17.0.1", - "sp-trie 33.0.0", - "tracing", - "tracing-core", -] - -[[package]] -name = "sp-io" -version = "38.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" -dependencies = [ - "bytes", - "docify", - "ed25519-dalek", - "libsecp256k1", - "log", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "rustversion", - "secp256k1 0.28.2", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-externalities 0.29.0", - "sp-keystore 0.40.0", - "sp-runtime-interface 28.0.0", - "sp-state-machine 0.43.0", - "sp-tracing 17.0.1", - "sp-trie 37.0.0", + "sp-tracing", + "sp-trie", "tracing", "tracing-core", ] -[[package]] -name = "sp-keyring" -version = "39.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" -dependencies = [ - "sp-core 34.0.0", - "sp-runtime 39.0.2", - "strum 0.26.3", -] - [[package]] name = "sp-keystore" -version = "0.38.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" +checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" dependencies = [ "parity-scale-codec", "parking_lot", @@ -12534,9 +10850,9 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "35.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ce931b7fbfdeeca1340801dbd4a1cae54ad4c97a1e3dcfcc79709bc800dd46" +checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" dependencies = [ "docify", "either", @@ -12554,34 +10870,7 @@ dependencies = [ "sp-core 32.0.0", "sp-io 34.0.0", "sp-std", - "sp-weights 31.0.0", -] - -[[package]] -name = "sp-runtime" -version = "39.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "num-traits", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "sp-weights 31.0.0", - "tracing", + "sp-weights", ] [[package]] @@ -12600,74 +10889,34 @@ dependencies = [ "paste", "rand", "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "sp-weights", - "tracing", -] - -[[package]] -name = "sp-runtime-interface" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.8.0", - "primitive-types 0.12.2", - "sp-externalities 0.27.0", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage 20.0.0", - "sp-tracing 16.0.0", - "sp-wasm-interface 20.0.0", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "647db5e1dc481686628b41554e832df6ab400c4b43a6a54e54d3b0a71ca404aa" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types 0.12.2", - "sp-externalities 0.28.0", - "sp-runtime-interface-proc-macro", + "serde", + "simple-mermaid", + "sp-application-crypto 38.0.0", + "sp-arithmetic", + "sp-core 34.0.0", + "sp-io 38.0.0", "sp-std", - "sp-storage 21.0.0", - "sp-tracing 17.0.1", - "sp-wasm-interface 21.0.1", - "static_assertions", + "sp-weights", + "tracing", ] [[package]] name = "sp-runtime-interface" -version = "28.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +checksum = "e48a675ea4858333d4d755899ed5ed780174aa34fec15953428d516af5452295" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types 0.12.2", - "sp-externalities 0.29.0", + "polkavm-derive 0.8.0", + "primitive-types", + "sp-externalities", "sp-runtime-interface-proc-macro", "sp-std", - "sp-storage 21.0.0", - "sp-tracing 17.0.1", - "sp-wasm-interface 21.0.1", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", "static_assertions", ] @@ -12730,30 +10979,9 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21d9078306c3066f1824e41153e1ceec34231d39d9a7e7956b101eadf7b9fd3a" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot", - "rand", - "smallvec", - "sp-core 32.0.0", - "sp-externalities 0.28.0", - "sp-panic-handler", - "sp-trie 33.0.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.28.0", -] - -[[package]] -name = "sp-state-machine" -version = "0.43.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930104d6ae882626e8880d9b1578da9300655d337a3ffb45e130c608b6c89660" +checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" dependencies = [ "hash-db", "log", @@ -12761,38 +10989,14 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 34.0.0", - "sp-externalities 0.29.0", + "sp-core", + "sp-externalities", "sp-panic-handler", - "sp-trie 37.0.0", - "thiserror 1.0.69", + "sp-std", + "sp-trie", + "thiserror", "tracing", - "trie-db 0.29.1", -] - -[[package]] -name = "sp-statement-store" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c219bc34ef4d1f9835f3ed881f965643c32034fcc030eb33b759dadbc802c1c2" -dependencies = [ - "aes-gcm", - "curve25519-dalek 4.1.3", - "ed25519-dalek", - "hkdf", - "parity-scale-codec", - "rand", - "scale-info", - "sha2 0.10.8", - "sp-api", - "sp-application-crypto 38.0.0", - "sp-core 34.0.0", - "sp-crypto-hashing", - "sp-externalities 0.29.0", - "sp-runtime 39.0.2", - "sp-runtime-interface 28.0.0", - "thiserror 1.0.69", - "x25519-dalek", + "trie-db", ] [[package]] @@ -12807,7 +11011,7 @@ version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" dependencies = [ - "impl-serde 0.4.0", + "impl-serde", "parity-scale-codec", "ref-cast", "serde", @@ -12815,32 +11019,6 @@ dependencies = [ "sp-std", ] -[[package]] -name = "sp-storage" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c82989b3a4979a7e1ad848aad9f5d0b4388f1f454cc131766526601ab9e8f8" -dependencies = [ - "impl-serde 0.4.0", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive", -] - -[[package]] -name = "sp-timestamp" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a1cb4df653d62ccc0dbce1db45d1c9443ec60247ee9576962d24da4c9c6f07" -dependencies = [ - "async-trait", - "parity-scale-codec", - "sp-inherents", - "sp-runtime 39.0.2", - "thiserror 1.0.69", -] - [[package]] name = "sp-tracing" version = "16.0.0" @@ -12893,33 +11071,9 @@ dependencies = [ [[package]] name = "sp-trie" -version = "33.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f5b3620a1c87c265a83d85d7519c6b60c47acf7f77593966afe313d086f00e" -dependencies = [ - "ahash 0.8.11", - "hash-db", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot", - "rand", - "scale-info", - "schnellru", - "sp-core 32.0.0", - "sp-externalities 0.28.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.28.0", - "trie-root", -] - -[[package]] -name = "sp-trie" -version = "37.0.0" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6282aef9f4b6ecd95a67a45bcdb67a71f4a4155c09a53c10add4ffe823db18cd" +checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" dependencies = [ "ahash 0.8.11", "hash-db", @@ -12931,27 +11085,8 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 34.0.0", - "sp-externalities 0.29.0", - "thiserror 1.0.69", - "tracing", - "trie-db 0.29.1", - "trie-root", -] - -[[package]] -name = "sp-version" -version = "37.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d521a405707b5be561367cd3d442ff67588993de24062ce3adefcf8437ee9fe1" -dependencies = [ - "impl-serde 0.4.0", - "parity-scale-codec", - "parity-wasm", - "scale-info", - "serde", - "sp-crypto-hashing-proc-macro", - "sp-runtime 39.0.2", + "sp-core", + "sp-externalities", "sp-std", "sp-version-proc-macro", "thiserror 1.0.69", @@ -12983,34 +11118,6 @@ dependencies = [ "wasmtime", ] -[[package]] -name = "sp-wasm-interface" -version = "21.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "wasmtime", -] - -[[package]] -name = "sp-weights" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" -dependencies = [ - "bounded-collections", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 25.0.0", - "sp-debug-derive", -] - [[package]] name = "sp-weights" version = "31.0.0" @@ -13022,7 +11129,7 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-debug-derive", ] @@ -13044,9 +11151,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.51.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" +checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" dependencies = [ "Inflector", "num-format", @@ -13057,29 +11164,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "ssz_rs" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" -dependencies = [ - "bitvec", - "num-bigint", - "sha2 0.9.9", - "ssz_rs_derive", -] - -[[package]] -name = "ssz_rs_derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -13189,17 +11273,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "string-interner" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" -dependencies = [ - "cfg-if", - "hashbrown 0.14.5", - "serde", -] - [[package]] name = "strsim" version = "0.10.0" @@ -13261,88 +11334,17 @@ checksum = "a2b564c293e6194e8b222e52436bcb99f60de72043c7f845cf6c4406db4df121" dependencies = [ "hmac 0.12.1", "pbkdf2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - -[[package]] -name = "substrate-bip39" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" -dependencies = [ - "hmac 0.12.1", - "pbkdf2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - -[[package]] -name = "substrate-wasm-builder" -version = "24.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf035ffe7335fb24053edfe4d0a5780250eda772082a1b80ae25835dd4c09265" -dependencies = [ - "build-helper", - "cargo_metadata 0.15.4", - "console", - "filetime", - "jobserver", - "parity-wasm", - "polkavm-linker 0.9.2", - "sp-maybe-compressed-blob", - "strum 0.26.3", - "tempfile", - "toml 0.8.19", - "walkdir", - "wasm-opt", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "subxt" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" -dependencies = [ - "async-trait", - "derive-where", - "either", - "frame-metadata 17.0.0", - "futures", - "hex", - "impl-serde 0.5.0", - "jsonrpsee", - "parity-scale-codec", - "polkadot-sdk", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", - "scale-value 0.16.3", - "serde", - "serde_json", - "subxt-core", - "subxt-lightclient", - "subxt-macro", - "subxt-metadata", - "thiserror 1.0.69", - "tokio", - "tokio-util", - "tracing", - "url", - "wasm-bindgen-futures", - "web-time", + "schnorrkel", + "sha2 0.10.8", + "zeroize", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "subxt" version = "0.38.0" @@ -13356,7 +11358,7 @@ dependencies = [ "futures", "hex", "impl-serde 0.5.0", - "jsonrpsee 0.24.7", + "jsonrpsee", "parity-scale-codec", "polkadot-sdk", "primitive-types 0.13.1", @@ -13364,13 +11366,13 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.17.0", + "scale-value", "serde", "serde_json", - "subxt-core 0.38.0", - "subxt-lightclient 0.38.0", - "subxt-macro 0.38.0", - "subxt-metadata 0.38.0", + "subxt-core", + "subxt-lightclient", + "subxt-macro", + "subxt-metadata", "thiserror 1.0.69", "tokio", "tokio-util", @@ -13554,12 +11556,12 @@ dependencies = [ ] [[package]] -name = "syn-solidity" -version = "0.4.2" +name = "syn_derive" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" dependencies = [ - "paste", + "proc-macro-error", "proc-macro2", "quote", "syn 2.0.90", @@ -13573,9 +11575,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" dependencies = [ "futures-core", ] @@ -13653,9 +11655,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.43" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" dependencies = [ "filetime", "libc", @@ -13670,9 +11672,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", @@ -13706,22 +11708,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" -[[package]] -name = "testnet-parachains-constants" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bceae6f7c89d47daff6c7e05f712551a01379f61b07d494661941144878589" -dependencies = [ - "cumulus-primitives-core", - "frame-support", - "polkadot-core-primitives", - "rococo-runtime-constants", - "smallvec", - "sp-runtime 39.0.2", - "staging-xcm 14.2.0", - "westend-runtime-constants", -] - [[package]] name = "textwrap" version = "0.16.1" @@ -13730,14 +11716,14 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] name = "thiserror" -version = "1.0.69" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl 1.0.69", ] @@ -13753,9 +11739,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.69" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -13814,25 +11800,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" version = "1.8.0" @@ -13857,7 +11824,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio", + "mio 1.0.2", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -13968,15 +11935,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -13998,7 +11956,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.22", + "toml_edit 0.22.20", ] [[package]] @@ -14025,15 +11983,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.20", + "winnow 0.6.18", ] [[package]] @@ -14129,9 +12087,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", @@ -14141,9 +12099,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", @@ -14152,9 +12110,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -14171,17 +12129,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-serde" version = "0.1.3" @@ -14201,7 +12148,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers 0.0.1", + "matchers", "regex", "serde", "serde_json", @@ -14210,7 +12157,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.1.4", + "tracing-log", "tracing-serde", ] @@ -14246,18 +12193,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "trie-db" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" -dependencies = [ - "hash-db", - "log", - "rustc-hex", - "smallvec", -] - [[package]] name = "trie-root" version = "0.18.0" @@ -14273,12 +12208,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tt-call" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" - [[package]] name = "tungstenite" version = "0.20.1" @@ -14293,17 +12222,11 @@ dependencies = [ "log", "rand", "sha1", - "thiserror 1.0.69", + "thiserror", "url", "utf-8", ] -[[package]] -name = "tuplex" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" - [[package]] name = "twox-hash" version = "1.6.3" @@ -14324,9 +12247,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -14341,34 +12264,25 @@ dependencies = [ ] [[package]] -name = "uint" -version = "0.10.0" +name = "unicase" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", + "version_check", ] [[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicase" -version = "2.8.0" +name = "unicode-bidi" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-linebreak" @@ -14387,21 +12301,15 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-width" -version = "0.2.0" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.6" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "universal-hash" @@ -14425,12 +12333,6 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" -[[package]] -name = "unsigned-varint" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" - [[package]] name = "untrusted" version = "0.9.0" @@ -14439,9 +12341,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -14455,18 +12357,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -14475,9 +12365,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom", ] @@ -14518,15 +12408,15 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.8" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" +checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff 0.4.2", - "ark-serialize 0.4.2", + "ark-ff", + "ark-serialize", "ark-serialize-derive", "arrayref", "constcat", @@ -14536,7 +12426,7 @@ dependencies = [ "rand_core 0.6.4", "sha2 0.10.8", "sha3", - "thiserror 1.0.69", + "thiserror", "zeroize", ] @@ -14643,21 +12533,12 @@ checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-encoder" -version = "0.220.0" +version = "0.207.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" +checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17" dependencies = [ "leb128", - "wasmparser 0.220.0", -] - -[[package]] -name = "wasm-instrument" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" -dependencies = [ - "parity-wasm", + "wasmparser 0.207.0", ] [[package]] @@ -14671,7 +12552,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror 1.0.69", + "thiserror", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -14728,29 +12609,6 @@ dependencies = [ "string-interner", ] -[[package]] -name = "wasmi_collections" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" -dependencies = [ - "ahash 0.8.11", - "hashbrown 0.14.5", - "string-interner", -] - -[[package]] -name = "wasmi_core" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" -dependencies = [ - "downcast-rs", - "libm", - "num-traits", - "paste", -] - [[package]] name = "wasmi_core" version = "0.32.3" @@ -14775,9 +12633,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.220.0" +version = "0.207.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" +checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", @@ -14812,12 +12670,9 @@ dependencies = [ "once_cell", "paste", "psm", - "rayon", "serde", "target-lexicon", "wasmparser 0.102.0", - "wasmtime-cache", - "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -14833,63 +12688,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "wasmtime-cache" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" -dependencies = [ - "anyhow", - "base64 0.21.7", - "bincode", - "directories-next", - "file-per-thread-logger", - "log", - "rustix 0.36.17", - "serde", - "sha2 0.10.8", - "toml 0.5.11", - "windows-sys 0.45.0", - "zstd 0.11.2+zstd.1.5.2", -] - -[[package]] -name = "wasmtime-cranelift" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "cranelift-native", - "cranelift-wasm", - "gimli 0.27.3", - "log", - "object 0.30.4", - "target-lexicon", - "thiserror 1.0.69", - "wasmparser 0.102.0", - "wasmtime-cranelift-shared", - "wasmtime-environ", -] - -[[package]] -name = "wasmtime-cranelift-shared" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-native", - "gimli 0.27.3", - "object 0.30.4", - "target-lexicon", - "wasmtime-environ", -] - [[package]] name = "wasmtime-environ" version = "8.0.1" @@ -14904,7 +12702,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror 1.0.69", + "thiserror", "wasmparser 0.102.0", "wasmtime-types", ] @@ -14927,7 +12725,6 @@ dependencies = [ "serde", "target-lexicon", "wasmtime-environ", - "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-runtime", "windows-sys 0.45.0", @@ -14939,9 +12736,7 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" dependencies = [ - "object 0.30.4", "once_cell", - "rustix 0.36.17", ] [[package]] @@ -14987,7 +12782,7 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror 1.0.69", + "thiserror", "wasmparser 0.102.0", ] @@ -15013,9 +12808,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" dependencies = [ "rustls-pki-types", ] @@ -15039,9 +12834,9 @@ dependencies = [ [[package]] name = "which" -version = "7.0.0" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", @@ -15049,16 +12844,6 @@ dependencies = [ "winsafe", ] -[[package]] -name = "wide" -version = "0.7.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" -dependencies = [ - "bytemuck", - "safe_arch", -] - [[package]] name = "winapi" version = "0.3.9" @@ -15354,9 +13139,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -15377,18 +13162,6 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "wyz" version = "0.5.1" @@ -15605,9 +13378,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" +checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" dependencies = [ "arbitrary", "crc32fast", @@ -15631,7 +13404,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror 1.0.69", + "thiserror", "tokio", "toml 0.7.8", "url", @@ -15679,7 +13452,7 @@ checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" dependencies = [ "pest", "pest_derive", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -15703,7 +13476,7 @@ dependencies = [ "serde_yaml", "sha2 0.10.8", "tar", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-util", "tracing", @@ -15744,56 +13517,8 @@ dependencies = [ "rand", "regex", "reqwest 0.11.27", - "thiserror 1.0.69", + "thiserror", "tokio", "tracing", "uuid", ] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", -] - -[[package]] -name = "zstd" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" -dependencies = [ - "zstd-safe 6.0.6", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-safe" -version = "6.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 9a970fcd..8a450937 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -8,14 +8,14 @@ use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; /// Data to be sent to frontend for signing. -#[derive(Serialize)] +#[derive(Serialize, Debug)] pub struct Data { chain_rpc: String, data_type: DataType, } /// The type of transaction with specific data for signing (contract or parachain). -#[derive(Serialize)] +#[derive(Serialize, Debug, PartialEq)] pub enum DataType { /// Parachain call, where Vec is the encoded call data. Parachain(Vec), @@ -25,7 +25,7 @@ pub enum DataType { /// Contract specific data variations. pub mod contracts { use super::Serialize; - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct ContractArgs { call_type: ContractCallType, storage_deposit_limit: Option, @@ -33,7 +33,7 @@ pub mod contracts { code: Option>, } - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub enum ContractCallType { // no unique fields. Upload, @@ -42,7 +42,7 @@ pub mod contracts { } /// Arguments for instantiating a contract. - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct InstantiateArgs { constructor: String, args: Vec, @@ -53,7 +53,7 @@ pub mod contracts { } /// Arguments for calling a contract. - #[derive(Serialize)] + #[derive(Serialize, Debug, PartialEq)] pub struct CallArgs { address: String, message: String, @@ -62,6 +62,50 @@ pub mod contracts { gas_limit: Option, proof_size: Option, } + + #[cfg(test)] + mod tests { + use super::*; + use crate::*; + use serde_json::json; + + #[test] + fn json_serialize_parachain_data_works() { + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Parachain(vec![0, 1, 2, 3]), + }; + let json_data = serde_json::to_value(&data).unwrap(); + + assert_eq!( + json_data, + json!({"chain_rpc": "localhost:9944", "data_type": {"Parachain": [0,1,2,3]}}) + ); + } + #[test] + fn json_serialize_contract_upload_data_works() { + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Contract(ContractArgs { + call_type: ContractCallType::Upload, + storage_deposit_limit: Some("1234".to_string()), + code: Some(vec![0, 1, 2]), + }), + }; + let json_data = serde_json::to_value(&data).unwrap(); + + assert_eq!( + json_data, + json!({"chain_rpc": "localhost:9944", "data_type": {"Contract": { + "call_type": "Upload", + "storage_deposit_limit": "1234", + "code": [0,1,2] + }}}) + ); + } + + // TODO: after high level review, complete serialization tests. + } } use crate::contracts::ContractArgs; @@ -146,16 +190,20 @@ mod routes { #[cfg(test)] mod tests { use super::*; + use serde_json::json; - #[tokio::test] - async fn wallet_integration_manager() { - let path = PathBuf::from("/Users/peter/dev/r0gue/react-teleport-example/dist"); - let data = - Data { chain_rpc: "chain_rpc".to_string(), data_type: DataType::Parachain(vec![]) }; - let mut wim = WalletIntegrationManager::new(path, data); - - wim.run().await; - - println!("{:?}", wim.signed_payload); + #[test] + fn new_works() { + let path = PathBuf::from("/path/to/frontend"); + let data = Data { + chain_rpc: "localhost:9944".to_string(), + data_type: DataType::Parachain(vec![]), + }; + let wim = WalletIntegrationManager::new(path.clone(), data); + + assert_eq!(wim.frontend_path, path); + assert_eq!(wim.data.chain_rpc, "localhost:9944"); + assert_eq!(wim.data.data_type, DataType::Parachain(vec![])); + assert_eq!(wim.signed_payload, None); } } From 251162a84e2657f74fc288f7a205fed0f018ec4a Mon Sep 17 00:00:00 2001 From: Peter White Date: Wed, 4 Dec 2024 21:52:31 -0700 Subject: [PATCH 101/143] refactor(wallet-integration): just use call_data, remove data types --- crates/pop-wallet-integration/src/lib.rs | 128 +++-------------------- 1 file changed, 15 insertions(+), 113 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 8a450937..7d18a605 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -7,108 +7,13 @@ use std::{path::PathBuf, sync::Arc}; use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; -/// Data to be sent to frontend for signing. +/// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -pub struct Data { +pub struct TransactionData { chain_rpc: String, - data_type: DataType, + call_data: Vec, } -/// The type of transaction with specific data for signing (contract or parachain). -#[derive(Serialize, Debug, PartialEq)] -pub enum DataType { - /// Parachain call, where Vec is the encoded call data. - Parachain(Vec), - Contract(ContractArgs), -} - -/// Contract specific data variations. -pub mod contracts { - use super::Serialize; - #[derive(Serialize, Debug, PartialEq)] - pub struct ContractArgs { - call_type: ContractCallType, - storage_deposit_limit: Option, - /// The binary (wasm, polkavm) of the contract. - code: Option>, - } - - #[derive(Serialize, Debug, PartialEq)] - pub enum ContractCallType { - // no unique fields. - Upload, - Instantiate(InstantiateArgs), - Call(CallArgs), - } - - /// Arguments for instantiating a contract. - #[derive(Serialize, Debug, PartialEq)] - pub struct InstantiateArgs { - constructor: String, - args: Vec, - value: String, - gas_limit: Option, - proof_size: Option, - salt: Option>, - } - - /// Arguments for calling a contract. - #[derive(Serialize, Debug, PartialEq)] - pub struct CallArgs { - address: String, - message: String, - args: Vec, - value: String, - gas_limit: Option, - proof_size: Option, - } - - #[cfg(test)] - mod tests { - use super::*; - use crate::*; - use serde_json::json; - - #[test] - fn json_serialize_parachain_data_works() { - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Parachain(vec![0, 1, 2, 3]), - }; - let json_data = serde_json::to_value(&data).unwrap(); - - assert_eq!( - json_data, - json!({"chain_rpc": "localhost:9944", "data_type": {"Parachain": [0,1,2,3]}}) - ); - } - #[test] - fn json_serialize_contract_upload_data_works() { - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Contract(ContractArgs { - call_type: ContractCallType::Upload, - storage_deposit_limit: Some("1234".to_string()), - code: Some(vec![0, 1, 2]), - }), - }; - let json_data = serde_json::to_value(&data).unwrap(); - - assert_eq!( - json_data, - json!({"chain_rpc": "localhost:9944", "data_type": {"Contract": { - "call_type": "Upload", - "storage_deposit_limit": "1234", - "code": [0,1,2] - }}}) - ); - } - - // TODO: after high level review, complete serialization tests. - } -} -use crate::contracts::ContractArgs; - struct StateHandler { shutdown_tx: Option>, signed_payload: Option, @@ -117,16 +22,16 @@ struct StateHandler { /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { frontend_path: PathBuf, - // cloning can be expensive (e.g. contract code stored in-memory) - data: Arc, + // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. + payload: Arc, signed_payload: Option, } impl WalletIntegrationManager { /// - frontend_path: Path to the wallet-integration frontend. /// - data: Data to be sent to the frontend for signing. - pub fn new(frontend_path: PathBuf, data: Data) -> Self { - Self { frontend_path, data: Arc::new(data), signed_payload: Default::default() } + pub fn new(frontend_path: PathBuf, payload: TransactionData) -> Self { + Self { frontend_path, payload: Arc::new(payload), signed_payload: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -142,7 +47,7 @@ impl WalletIntegrationManager { // will shutdown when the signed payload is received let app = Router::new() // cloning Arcs is cheap - .route("/data", get(routes::get_data_handler).with_state(self.data.clone())) + .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) .route("/submit", post(routes::handle_submit).with_state(state.clone())) .nest_service("/", ServeDir::new(self.frontend_path.clone())); @@ -159,13 +64,15 @@ impl WalletIntegrationManager { } mod routes { - use super::{Arc, Data, Mutex, StateHandler}; + use super::{Arc, Mutex, StateHandler, TransactionData}; use axum::{extract::State, Json}; use serde_json::json; /// Responds with the serialized JSON data for signing. - pub(super) async fn get_data_handler(State(data): State>) -> Json { - Json(serde_json::to_value(&*data).unwrap()) + pub(super) async fn get_payload_handler( + State(payload): State>, + ) -> Json { + Json(serde_json::to_value(&*payload).unwrap()) } /// Receives the signed payload from the wallet. @@ -190,20 +97,15 @@ mod routes { #[cfg(test)] mod tests { use super::*; - use serde_json::json; #[test] fn new_works() { let path = PathBuf::from("/path/to/frontend"); - let data = Data { - chain_rpc: "localhost:9944".to_string(), - data_type: DataType::Parachain(vec![]), - }; + let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; let wim = WalletIntegrationManager::new(path.clone(), data); assert_eq!(wim.frontend_path, path); - assert_eq!(wim.data.chain_rpc, "localhost:9944"); - assert_eq!(wim.data.data_type, DataType::Parachain(vec![])); + assert_eq!(wim.payload.chain_rpc, "localhost:9944"); assert_eq!(wim.signed_payload, None); } } From 5a3bbde43468d679428360c102e89f74843123cc Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 13:27:05 -0700 Subject: [PATCH 102/143] feat(wallet-integration): add frontend type for flexible serving --- crates/pop-wallet-integration/src/lib.rs | 51 +++++++++++++++++++----- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 7d18a605..61b5348f 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -1,4 +1,5 @@ use axum::{ + response::Html, routing::{get, post}, Router, }; @@ -7,6 +8,13 @@ use std::{path::PathBuf, sync::Arc}; use tokio::sync::{oneshot, Mutex}; use tower_http::services::ServeDir; +/// Make frontend sourcing more flexible by allowing a custom route +/// to be defined. For example, sourcing frontend from a cached directory, +/// or simply an HTML string built-in to the binary. +pub trait Frontend { + fn serve_content(&self) -> Router; +} + /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] pub struct TransactionData { @@ -14,24 +22,28 @@ pub struct TransactionData { call_data: Vec, } +// Shared state between routes. Serves two purposes: +// - Maintains a channel to signal shutdown to the main app. +// - Stores the signed payload received from the wallet. struct StateHandler { shutdown_tx: Option>, signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend_path: PathBuf, +pub struct WalletIntegrationManager { + frontend: F, // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. payload: Arc, + // The final payload signed by the wallet. Updated after server closure. signed_payload: Option, } -impl WalletIntegrationManager { - /// - frontend_path: Path to the wallet-integration frontend. - /// - data: Data to be sent to the frontend for signing. - pub fn new(frontend_path: PathBuf, payload: TransactionData) -> Self { - Self { frontend_path, payload: Arc::new(payload), signed_payload: Default::default() } +impl WalletIntegrationManager { + /// - frontend: A frontend with custom route to serve content. + /// - payload: Payload to be sent to the frontend for signing. + pub fn new(frontend: F, payload: TransactionData) -> Self { + Self { frontend, payload: Arc::new(payload), signed_payload: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -49,7 +61,7 @@ impl WalletIntegrationManager { // cloning Arcs is cheap .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) .route("/submit", post(routes::handle_submit).with_state(state.clone())) - .nest_service("/", ServeDir::new(self.frontend_path.clone())); + .merge(self.frontend.serve_content()); // custom route for serving frontend let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); axum::serve(listener, app) @@ -90,7 +102,23 @@ mod routes { } // graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success", "payload": payload})) + Json(json!({"status": "success"})) + } +} + +/// Default frontend. Current implementation serves static files from a directory. +pub struct DefaultFrontend { + content: PathBuf, +} +impl DefaultFrontend { + pub fn new(content: PathBuf) -> Self { + Self { content } + } +} + +impl Frontend for DefaultFrontend { + fn serve_content(&self) -> Router { + Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } @@ -101,10 +129,11 @@ mod tests { #[test] fn new_works() { let path = PathBuf::from("/path/to/frontend"); + let default_frontend = DefaultFrontend::new(path.clone()); let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(path.clone(), data); + let wim = WalletIntegrationManager::new(default_frontend, data); - assert_eq!(wim.frontend_path, path); + assert_eq!(wim.frontend.content, path); assert_eq!(wim.payload.chain_rpc, "localhost:9944"); assert_eq!(wim.signed_payload, None); } From 254952ff10683328142057932313ca5bf19eefee Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:09:14 -0700 Subject: [PATCH 103/143] feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method --- crates/pop-wallet-integration/src/lib.rs | 29 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs index 61b5348f..c76e4a53 100644 --- a/crates/pop-wallet-integration/src/lib.rs +++ b/crates/pop-wallet-integration/src/lib.rs @@ -1,5 +1,4 @@ use axum::{ - response::Html, routing::{get, post}, Router, }; @@ -25,6 +24,7 @@ pub struct TransactionData { // Shared state between routes. Serves two purposes: // - Maintains a channel to signal shutdown to the main app. // - Stores the signed payload received from the wallet. +#[derive(Default)] struct StateHandler { shutdown_tx: Option>, signed_payload: Option, @@ -35,15 +35,14 @@ pub struct WalletIntegrationManager { frontend: F, // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. payload: Arc, - // The final payload signed by the wallet. Updated after server closure. - signed_payload: Option, + state: Arc>, } impl WalletIntegrationManager { /// - frontend: A frontend with custom route to serve content. /// - payload: Payload to be sent to the frontend for signing. pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), signed_payload: Default::default() } + Self { frontend, payload: Arc::new(payload), state: Default::default() } } /// Serves the wallet-integration frontend and an API for the wallet to get @@ -55,8 +54,9 @@ impl WalletIntegrationManager { // shared state between routes. Will be used to store the signed payload. let state = Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + self.state = state.clone(); - // will shutdown when the signed payload is received + // will shut down when the signed payload is received let app = Router::new() // cloning Arcs is cheap .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) @@ -70,8 +70,13 @@ impl WalletIntegrationManager { }) .await .unwrap(); + } - self.signed_payload = state.lock().await.signed_payload.take(); + pub async fn terminate(&mut self) { + // signal shutdown + if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } } } @@ -96,7 +101,9 @@ mod routes { let mut state = state.lock().await; state.signed_payload = Some(payload.clone()); - // signal shutdown + // signal shutdown. + // TODO: decide if we want to shutdown on submit, or at some other time. + // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. if let Some(shutdown_tx) = state.shutdown_tx.take() { let _ = shutdown_tx.send(()); } @@ -126,8 +133,8 @@ impl Frontend for DefaultFrontend { mod tests { use super::*; - #[test] - fn new_works() { + #[tokio::test] + async fn new_works() { let path = PathBuf::from("/path/to/frontend"); let default_frontend = DefaultFrontend::new(path.clone()); let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; @@ -135,6 +142,8 @@ mod tests { assert_eq!(wim.frontend.content, path); assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.signed_payload, None); + assert_eq!(wim.payload.call_data, vec![] as Vec); + assert!(wim.state.lock().await.shutdown_tx.is_none()); + assert!(wim.state.lock().await.signed_payload.is_none()); } } From c054efda6597515fbb775d8e677a53884025fe33 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:27:06 -0700 Subject: [PATCH 104/143] refactor(wallet-integration): move to module with pop-cli crate --- Cargo.lock | 11 - crates/pop-cli/src/wallet_integration.rs | 502 +++-------------------- crates/pop-wallet-integration/Cargo.toml | 14 - crates/pop-wallet-integration/src/lib.rs | 149 ------- 4 files changed, 61 insertions(+), 615 deletions(-) delete mode 100644 crates/pop-wallet-integration/Cargo.toml delete mode 100644 crates/pop-wallet-integration/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 36a943aa..fee5cc17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8430,17 +8430,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "pop-wallet-integration" -version = "0.5.0" -dependencies = [ - "axum", - "serde", - "serde_json", - "tokio", - "tower-http 0.6.2", -] - [[package]] name = "portable-atomic" version = "1.7.0" diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 3d688e7a..291954db 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -13,14 +13,14 @@ use tokio::{ use tower_http::{cors::Any, services::ServeDir}; /// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. +/// to be defined. For example, sourcing frontend from a cached directory, +/// or simply an HTML string built-in to the binary. pub trait Frontend { fn serve_content(&self) -> Router; } /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(serde::Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -40,52 +40,36 @@ impl TransactionData { /// - Maintains a channel to signal shutdown to the main app. /// - Stores the signed payload received from the wallet. #[derive(Default)] -pub struct StateHandler { - /// Channel to signal shutdown to the main app. +struct StateHandler { shutdown_tx: Option>, - /// Received from UI. - pub signed_payload: Option, - /// Holds a single error message. - /// Only method for consuming error removes (takes) it from state. - error: Option, + signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - /// Shared state between routes. - pub state: Arc>, - /// Node rpc address. - pub rpc_url: String, - /// Web server task handle. - pub task_handle: JoinHandle>, +pub struct WalletIntegrationManager { + frontend: F, + // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. + payload: Arc, + state: Arc>, } -impl WalletIntegrationManager { - /// Launches a server for hosting the wallet integration. Server launched in separate task. - /// Uses default address of 127.0.0.1:9090. - /// # Arguments - /// * `frontend`: A frontend with custom route to serve content. - /// * `payload`: Payload to be sent to the frontend for signing. - /// - /// # Returns - /// A `WalletIntegrationManager` instance, with access to the state and task handle for the - /// server. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self::new_with_address(frontend, payload, "127.0.0.1:9090") +impl WalletIntegrationManager { + /// - frontend: A frontend with custom route to serve content. + /// - payload: Payload to be sent to the frontend for signing. + pub fn new(frontend: F, payload: TransactionData) -> Self { + Self { frontend, payload: Arc::new(payload), state: Default::default() } } - /// Same as `new`, but allows specifying the address to bind to. - pub fn new_with_address(frontend: F, payload: TransactionData, rpc: &str) -> Self { - // Channel to signal shutdown. + /// Serves the wallet-integration frontend and an API for the wallet to get + /// the necessary data and submit the signed payload. + pub async fn run(&mut self) { + // used to signal shutdown. let (tx, rx) = oneshot::channel(); - let state = Arc::new(Mutex::new(StateHandler { - shutdown_tx: Some(tx), - signed_payload: None, - error: None, - })); - - let payload = Arc::new(payload); + // shared state between routes. Will be used to store the signed payload. + let state = + Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + self.state = state.clone(); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -102,449 +86,85 @@ impl WalletIntegrationManager { .merge(frontend.serve_content()) // Custom route for serving frontend. .layer(cors); - let rpc_owned = rpc.to_string(); - - // Will shut down when the signed payload is received. - let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(&rpc_owned) - .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", rpc_owned, e))?; - - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; - Ok(()) - }); - - Self { state, rpc_url: rpc.to_string(), task_handle } - } - - /// Signals the wallet integration server to shut down. - #[allow(dead_code)] - pub async fn terminate(&mut self) -> anyhow::Result<()> { - terminate_helper(&self.state).await - } - - /// Checks if the server task is still running. - pub fn is_running(&self) -> bool { - !self.task_handle.is_finished() + let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .unwrap(); } - /// Takes the error from the state if it exists. - pub async fn take_error(&mut self) -> Option { - self.state.lock().await.error.take() + pub async fn terminate(&mut self) { + // signal shutdown + if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } } } mod routes { - use super::{terminate_helper, Arc, Mutex, StateHandler, TransactionData}; - use anyhow::Error; - use axum::{ - extract::State, - http::StatusCode, - response::{IntoResponse, Response}, - Json, - }; + use super::{Arc, Mutex, StateHandler, TransactionData}; + use axum::{extract::State, Json}; use serde_json::json; - pub(super) struct ApiError(Error); - - impl From for ApiError { - fn from(err: Error) -> Self { - ApiError(err) - } - } - - // Implementing IntoResponse for ApiError allows us to return it directly from a route handler. - impl IntoResponse for ApiError { - fn into_response(self) -> Response { - let body = json!({ - "error": self.0.to_string(), - }); - (StatusCode::INTERNAL_SERVER_ERROR, Json(body)).into_response() - } - } - /// Responds with the serialized JSON data for signing. pub(super) async fn get_payload_handler( State(payload): State>, - ) -> Result, ApiError> { - // Error should never occur. - let json_payload = serde_json::to_value(&*payload) - .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; - Ok(Json(json_payload)) + ) -> Json { + Json(serde_json::to_value(&*payload).unwrap()) } /// Receives the signed payload from the wallet. /// Will signal for shutdown on success. - pub(super) async fn submit_handler( + pub(super) async fn handle_submit( State(state): State>>, Json(payload): Json, - ) -> Result, ApiError> { - // Signal shutdown. - let res = terminate_helper(&state).await; - - let mut state_locked = state.lock().await; - state_locked.signed_payload = Some(payload); - - res?; - - // Graceful shutdown ensures response is sent before shutdown. - Ok(Json(json!({"status": "success"}))) - } - - /// Receives an error message from the wallet. - pub(super) async fn error_handler( - State(state): State>>, - Json(error): Json, - ) { + ) -> Json { let mut state = state.lock().await; - state.error = Some(error); - } + state.signed_payload = Some(payload.clone()); - /// Allows the server to be terminated from the frontend. - pub(super) async fn terminate_handler( - State(state): State>>, - ) -> Result<(), ApiError> { - Ok(terminate_helper(&state).await?) - } -} + // signal shutdown. + // TODO: decide if we want to shutdown on submit, or at some other time. + // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } -async fn terminate_helper(handle: &Arc>) -> anyhow::Result<()> { - if let Some(shutdown_tx) = handle.lock().await.shutdown_tx.take() { - shutdown_tx - .send(()) - .map_err(|_| anyhow::anyhow!("Failed to send shutdown signal"))?; + // graceful shutdown ensures response is sent before shutdown. + Json(json!({"status": "success"})) } - Ok(()) } -/// Serves static files from a directory. -pub struct FrontendFromDir { +/// Default frontend. Current implementation serves static files from a directory. +pub struct DefaultFrontend { content: PathBuf, } #[allow(dead_code)] impl FrontendFromDir {} -impl Frontend for FrontendFromDir { +impl Frontend for DefaultFrontend { fn serve_content(&self) -> Router { Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } -/// Serves a hard-coded HTML string as the frontend. -pub struct FrontendFromString { - content: String, -} - -#[allow(dead_code)] -impl FrontendFromString { - pub fn new(content: String) -> Self { - Self { content } - } -} - -impl Frontend for FrontendFromString { - fn serve_content(&self) -> Router { - let content = self.content.clone(); - Router::new().route("/", get(move || async { Html(content) })) - } -} - #[cfg(test)] mod tests { use super::*; - use serde_json::json; - - const TEST_HTML: &str = "Hello, world!"; - - // Wait for server to launch. - async fn wait() { - tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; - } - - fn default_payload() -> TransactionData { - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] } - } #[tokio::test] async fn new_works() { - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - - assert_eq!(wim.rpc_url, "127.0.0.1:9090"); - assert_eq!(wim.is_running(), true); - assert!(wim.state.lock().await.shutdown_tx.is_some()); + let path = PathBuf::from("/path/to/frontend"); + let default_frontend = DefaultFrontend::new(path.clone()); + let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; + let wim = WalletIntegrationManager::new(default_frontend, data); + + assert_eq!(wim.frontend.content, path); + assert_eq!(wim.payload.chain_rpc, "localhost:9944"); + assert_eq!(wim.payload.call_data, vec![] as Vec); + assert!(wim.state.lock().await.shutdown_tx.is_none()); assert!(wim.state.lock().await.signed_payload.is_none()); - - // Terminate the server and make sure result is ok. - wim.terminate().await.expect("Termination should not fail."); - assert!(wim.task_handle.await.is_ok()); - } - - #[test] - fn new_transaction_data_works() { - let chain_rpc = "localhost:9944".to_string(); - let call_data = vec![1, 2, 3]; - let transaction_data = TransactionData::new(chain_rpc.clone(), call_data.clone()); - - assert_eq!(transaction_data.chain_rpc, chain_rpc); - assert_eq!(transaction_data.call_data, call_data); - } - - #[tokio::test] - async fn take_error_works() { - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - - assert_eq!(wim.take_error().await, None); - - let error = "An error occurred".to_string(); - wim.state.lock().await.error = Some(error.clone()); - - let taken_error = wim.take_error().await; - assert_eq!(taken_error, Some(error)); - } - - #[tokio::test] - async fn payload_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9091"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = - WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let actual_payload = reqwest::get(&format!("{}/payload", addr)) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); - assert_eq!(actual_payload.call_data, expected_payload.call_data); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn submit_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9092"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/submit", addr)) - .json(&"0xDEADBEEF") - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse response"); - - assert_eq!(response, json!({"status": "success"})); - assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn error_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9093"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/error", addr)) - .json(&"an error occurred") - .send() - .await - .expect("Failed to submit error") - .text() - .await - .expect("Failed to parse response"); - - // no response expected - assert_eq!(response.len(), 0); - assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); - assert_eq!(wim.is_running(), true); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn terminate_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9094"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/terminate", addr)) - .send() - .await - .expect("Failed to terminate") - .text() - .await - .expect("Failed to parse response"); - - // No response expected. - assert_eq!(response.len(), 0); - assert_eq!(wim.is_running(), false); - - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn wallet_terminate_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9095"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - - assert_eq!(wim.is_running(), true); - wim.terminate().await.expect("Termination should not fail"); - wait().await; - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn frontend_from_string_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9096"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let actual_content = reqwest::get(&format!("http://{}", addr)) - .await - .expect("Failed to get web page") - .text() - .await - .expect("Failed to parse page"); - - assert_eq!(actual_content, TEST_HTML); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn frontend_from_dir_works() { - use std::fs; - use tempfile::tempdir; - - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9097"; - - let temp_dir = tempdir().expect("Failed to create temp directory"); - let index_file_path = temp_dir.path().join("index.html"); - - let test_html = "Hello, world from Directory!"; - fs::write(&index_file_path, test_html).expect("Failed to write index.html"); - - let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let actual_content = reqwest::get(&format!("http://{}", addr)) - .await - .expect("Failed to get web page") - .text() - .await - .expect("Failed to parse page"); - - assert_eq!(actual_content, test_html); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn large_payload_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9098"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; - - let expected_payload = TransactionData { - chain_rpc: "localhost:9944".to_string(), - call_data: call_data_5mb.clone(), - }; - let mut wim = - WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let actual_payload = reqwest::get(&format!("{}/payload", addr)) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); - assert_eq!(actual_payload.call_data, call_data_5mb); - - wim.terminate().await.expect("Termination should not fail."); - assert!(wim.task_handle.await.is_ok()); - } - - #[tokio::test] - async fn new_with_conflicting_address_fails() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9099"; - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - assert_eq!(wim.is_running(), true); - - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let wim_conflict = - WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - assert_eq!(wim_conflict.is_running(), false); - let task_result = wim_conflict.task_handle.await.unwrap(); - match task_result { - Err(e) => assert!(e - .to_string() - .starts_with(&format!("Failed to bind to {}: Address already in use", addr))), - Ok(_) => panic!("Expected error, but task succeeded"), - } } } diff --git a/crates/pop-wallet-integration/Cargo.toml b/crates/pop-wallet-integration/Cargo.toml deleted file mode 100644 index 02339d3b..00000000 --- a/crates/pop-wallet-integration/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "pop-wallet-integration" -edition.workspace = true -documentation.workspace = true -license.workspace = true -repository.workspace = true -version.workspace = true - -[dependencies] -axum.workspace = true -tokio.workspace = true -tower-http = { workspace = true, features = ["fs"] } -serde_json.workspace = true -serde = { workspace = true, features = ["derive"] } diff --git a/crates/pop-wallet-integration/src/lib.rs b/crates/pop-wallet-integration/src/lib.rs deleted file mode 100644 index c76e4a53..00000000 --- a/crates/pop-wallet-integration/src/lib.rs +++ /dev/null @@ -1,149 +0,0 @@ -use axum::{ - routing::{get, post}, - Router, -}; -use serde::Serialize; -use std::{path::PathBuf, sync::Arc}; -use tokio::sync::{oneshot, Mutex}; -use tower_http::services::ServeDir; - -/// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. For example, sourcing frontend from a cached directory, -/// or simply an HTML string built-in to the binary. -pub trait Frontend { - fn serve_content(&self) -> Router; -} - -/// Transaction payload to be sent to frontend for signing. -#[derive(Serialize, Debug)] -pub struct TransactionData { - chain_rpc: String, - call_data: Vec, -} - -// Shared state between routes. Serves two purposes: -// - Maintains a channel to signal shutdown to the main app. -// - Stores the signed payload received from the wallet. -#[derive(Default)] -struct StateHandler { - shutdown_tx: Option>, - signed_payload: Option, -} - -/// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend: F, - // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. - payload: Arc, - state: Arc>, -} - -impl WalletIntegrationManager { - /// - frontend: A frontend with custom route to serve content. - /// - payload: Payload to be sent to the frontend for signing. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), state: Default::default() } - } - - /// Serves the wallet-integration frontend and an API for the wallet to get - /// the necessary data and submit the signed payload. - pub async fn run(&mut self) { - // used to signal shutdown. - let (tx, rx) = oneshot::channel(); - - // shared state between routes. Will be used to store the signed payload. - let state = - Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); - self.state = state.clone(); - - // will shut down when the signed payload is received - let app = Router::new() - // cloning Arcs is cheap - .route("/payload", get(routes::get_payload_handler).with_state(self.payload.clone())) - .route("/submit", post(routes::handle_submit).with_state(state.clone())) - .merge(self.frontend.serve_content()); // custom route for serving frontend - - let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .unwrap(); - } - - pub async fn terminate(&mut self) { - // signal shutdown - if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } - } -} - -mod routes { - use super::{Arc, Mutex, StateHandler, TransactionData}; - use axum::{extract::State, Json}; - use serde_json::json; - - /// Responds with the serialized JSON data for signing. - pub(super) async fn get_payload_handler( - State(payload): State>, - ) -> Json { - Json(serde_json::to_value(&*payload).unwrap()) - } - - /// Receives the signed payload from the wallet. - /// Will signal for shutdown on success. - pub(super) async fn handle_submit( - State(state): State>>, - Json(payload): Json, - ) -> Json { - let mut state = state.lock().await; - state.signed_payload = Some(payload.clone()); - - // signal shutdown. - // TODO: decide if we want to shutdown on submit, or at some other time. - // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } - - // graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success"})) - } -} - -/// Default frontend. Current implementation serves static files from a directory. -pub struct DefaultFrontend { - content: PathBuf, -} -impl DefaultFrontend { - pub fn new(content: PathBuf) -> Self { - Self { content } - } -} - -impl Frontend for DefaultFrontend { - fn serve_content(&self) -> Router { - Router::new().nest_service("/", ServeDir::new(self.content.clone())) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[tokio::test] - async fn new_works() { - let path = PathBuf::from("/path/to/frontend"); - let default_frontend = DefaultFrontend::new(path.clone()); - let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(default_frontend, data); - - assert_eq!(wim.frontend.content, path); - assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.payload.call_data, vec![] as Vec); - assert!(wim.state.lock().await.shutdown_tx.is_none()); - assert!(wim.state.lock().await.signed_payload.is_none()); - } -} From 73e312d8061df5eeed6c91f74113663ab7b119e4 Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 5 Dec 2024 14:50:28 -0700 Subject: [PATCH 105/143] feat(wallet-integration): server-side error handling, update port to 9090 --- crates/pop-cli/src/wallet_integration.rs | 43 ++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 291954db..941006a0 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -62,7 +62,7 @@ impl WalletIntegrationManager { /// Serves the wallet-integration frontend and an API for the wallet to get /// the necessary data and submit the signed payload. - pub async fn run(&mut self) { + pub async fn run(&mut self) -> anyhow::Result<()> { // used to signal shutdown. let (tx, rx) = oneshot::channel(); @@ -86,13 +86,18 @@ impl WalletIntegrationManager { .merge(frontend.serve_content()) // Custom route for serving frontend. .layer(cors); - let listener = tokio::net::TcpListener::bind("127.0.0.1:3000").await.unwrap(); + let addr = "127.0.0.1:9090"; + let listener = tokio::net::TcpListener::bind(addr) + .await + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + axum::serve(listener, app) .with_graceful_shutdown(async move { let _ = rx.await.ok(); }) .await - .unwrap(); + .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; + Ok(()) } pub async fn terminate(&mut self) { @@ -105,14 +110,40 @@ impl WalletIntegrationManager { mod routes { use super::{Arc, Mutex, StateHandler, TransactionData}; - use axum::{extract::State, Json}; + use anyhow::Error; + use axum::{ + extract::State, + http::StatusCode, + response::{IntoResponse, Response}, + Json, + }; use serde_json::json; + pub struct ApiError(Error); + + impl From for ApiError { + fn from(err: Error) -> Self { + ApiError(err) + } + } + + // Implementing IntoResponse for ApiError allows us to return it directly from a route handler. + impl IntoResponse for ApiError { + fn into_response(self) -> Response { + let body = json!({ + "error": self.0.to_string(), + }); + (StatusCode::INTERNAL_SERVER_ERROR, Json(body)).into_response() + } + } + /// Responds with the serialized JSON data for signing. pub(super) async fn get_payload_handler( State(payload): State>, - ) -> Json { - Json(serde_json::to_value(&*payload).unwrap()) + ) -> Result, ApiError> { + let json_payload = serde_json::to_value(&*payload) + .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; + Ok(Json(json_payload)) } /// Receives the signed payload from the wallet. From a5a55e99bcea9d4a18852540d53532c5837bfbc4 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 19:16:12 -0700 Subject: [PATCH 106/143] refactor(wallet-integration): restructure server for easier use in thread --- crates/pop-cli/src/wallet_integration.rs | 63 +++++++++++++----------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 941006a0..c2b72e7c 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -40,36 +40,27 @@ impl TransactionData { /// - Maintains a channel to signal shutdown to the main app. /// - Stores the signed payload received from the wallet. #[derive(Default)] -struct StateHandler { +pub struct StateHandler { shutdown_tx: Option>, - signed_payload: Option, + pub signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. -pub struct WalletIntegrationManager { - frontend: F, - // Cloning can be expensive (e.g. contract code in payload). Better to use Arc to avoid this. - payload: Arc, - state: Arc>, +pub struct WalletIntegrationManager { + pub state: Arc>, + pub addr: String, + pub task_handle: tokio::task::JoinHandle>, } -impl WalletIntegrationManager { +impl WalletIntegrationManager { /// - frontend: A frontend with custom route to serve content. /// - payload: Payload to be sent to the frontend for signing. - pub fn new(frontend: F, payload: TransactionData) -> Self { - Self { frontend, payload: Arc::new(payload), state: Default::default() } - } - - /// Serves the wallet-integration frontend and an API for the wallet to get - /// the necessary data and submit the signed payload. - pub async fn run(&mut self) -> anyhow::Result<()> { - // used to signal shutdown. + pub fn new(frontend: F, payload: TransactionData) -> Self { + // Self { frontend, payload: Arc::new(payload), state: Default::default() } let (tx, rx) = oneshot::channel(); - // shared state between routes. Will be used to store the signed payload. let state = Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); - self.state = state.clone(); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -87,17 +78,23 @@ impl WalletIntegrationManager { .layer(cors); let addr = "127.0.0.1:9090"; - let listener = tokio::net::TcpListener::bind(addr) - .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; - - axum::serve(listener, app) - .with_graceful_shutdown(async move { - let _ = rx.await.ok(); - }) - .await - .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; - Ok(()) + + // will shut down when the signed payload is received + let task_handle = tokio::spawn(async move { + let listener = tokio::net::TcpListener::bind(addr) + .await + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + + axum::serve(listener, app) + .with_graceful_shutdown(async move { + let _ = rx.await.ok(); + }) + .await + .map_err(|e| anyhow::anyhow!("Server encountered an error: {}", e))?; + Ok(()) + }); + + Self { state, addr: addr.to_string(), task_handle } } pub async fn terminate(&mut self) { @@ -106,6 +103,14 @@ impl WalletIntegrationManager { let _ = shutdown_tx.send(()); } } + + pub fn is_running(&self) -> bool { + !self.task_handle.is_finished() + } + + pub async fn finish(self) -> anyhow::Result<()> { + self.task_handle.await? + } } mod routes { From 6b5f29aa0fe6fab5620af503088c938f72f41bfa Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 21:33:20 -0700 Subject: [PATCH 107/143] fix(wallet-integration): remove invalid fn `finish` --- crates/pop-cli/src/wallet_integration.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index c2b72e7c..4f1deb37 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -107,10 +107,6 @@ impl WalletIntegrationManager { pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } - - pub async fn finish(self) -> anyhow::Result<()> { - self.task_handle.await? - } } mod routes { From de3599309882905df8410487a22251e1d22f09ab Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 15:00:33 -0700 Subject: [PATCH 108/143] docs(wallet-integration): inline comments --- crates/pop-cli/src/wallet_integration.rs | 28 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 4f1deb37..e0e678c1 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -13,8 +13,7 @@ use tokio::{ use tower_http::{cors::Any, services::ServeDir}; /// Make frontend sourcing more flexible by allowing a custom route -/// to be defined. For example, sourcing frontend from a cached directory, -/// or simply an HTML string built-in to the binary. +/// to be defined. pub trait Frontend { fn serve_content(&self) -> Router; } @@ -42,21 +41,31 @@ impl TransactionData { #[derive(Default)] pub struct StateHandler { shutdown_tx: Option>, + // signed payload received from UI. pub signed_payload: Option, } /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { + // shared state between routes. pub state: Arc>, + // node rpc address pub addr: String, + // axum server task handle pub task_handle: tokio::task::JoinHandle>, } impl WalletIntegrationManager { - /// - frontend: A frontend with custom route to serve content. - /// - payload: Payload to be sent to the frontend for signing. + /// Launches a server for hosting the wallet integration. Server launched in separate task. + /// # Arguments + /// * `frontend`: A frontend with custom route to serve content. + /// * `payload`: Payload to be sent to the frontend for signing. + /// + /// # Returns + /// A `WalletIntegrationManager` instance, with access to the state and task handle for the + /// server. pub fn new(frontend: F, payload: TransactionData) -> Self { - // Self { frontend, payload: Arc::new(payload), state: Default::default() } + // channel to signal shutdown let (tx, rx) = oneshot::channel(); let state = @@ -97,6 +106,7 @@ impl WalletIntegrationManager { Self { state, addr: addr.to_string(), task_handle } } + /// Signals the wallet integration server to shut down. pub async fn terminate(&mut self) { // signal shutdown if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { @@ -104,6 +114,7 @@ impl WalletIntegrationManager { } } + /// Checks if the server task is still running. pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } @@ -120,7 +131,7 @@ mod routes { }; use serde_json::json; - pub struct ApiError(Error); + struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -156,9 +167,8 @@ mod routes { let mut state = state.lock().await; state.signed_payload = Some(payload.clone()); - // signal shutdown. - // TODO: decide if we want to shutdown on submit, or at some other time. - // Using WalletIntegrationManager::terminate() introduces complexity unnecessary for a TODO. + // Signal shutdown. + // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. if let Some(shutdown_tx) = state.shutdown_tx.take() { let _ = shutdown_tx.send(()); } From 15e91d4897c3a90628e26f17ecd8b7bb71318cab Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 17:04:54 -0700 Subject: [PATCH 109/143] test(wallet-integration): unit tests for wallet-integration server. Add new frontend type --- crates/pop-cli/src/wallet_integration.rs | 267 +++++++++++++++++++++-- 1 file changed, 251 insertions(+), 16 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index e0e678c1..bdf910aa 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -4,7 +4,7 @@ use axum::{ routing::{get, post}, Router, }; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use std::{path::PathBuf, sync::Arc}; use tokio::{ sync::{oneshot, Mutex}, @@ -20,6 +20,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] +#[cfg_attr(test, derive(Deserialize))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -57,6 +58,7 @@ pub struct WalletIntegrationManager { impl WalletIntegrationManager { /// Launches a server for hosting the wallet integration. Server launched in separate task. + /// Uses default address of 127.0.0.1:9090. /// # Arguments /// * `frontend`: A frontend with custom route to serve content. /// * `payload`: Payload to be sent to the frontend for signing. @@ -65,6 +67,15 @@ impl WalletIntegrationManager { /// A `WalletIntegrationManager` instance, with access to the state and task handle for the /// server. pub fn new(frontend: F, payload: TransactionData) -> Self { + Self::new_with_address(frontend, payload, "127.0.0.1:9090") + } + + /// Same as `new`, but allows specifying the address to bind to. + pub fn new_with_address( + frontend: F, + payload: TransactionData, + addr: &str, + ) -> Self { // channel to signal shutdown let (tx, rx) = oneshot::channel(); @@ -90,9 +101,9 @@ impl WalletIntegrationManager { // will shut down when the signed payload is received let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(addr) + let listener = tokio::net::TcpListener::bind(&addr_owned) .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr, e))?; + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr_owned, e))?; axum::serve(listener, app) .with_graceful_shutdown(async move { @@ -131,7 +142,8 @@ mod routes { }; use serde_json::json; - struct ApiError(Error); + // must be public for axum + pub struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -153,6 +165,7 @@ mod routes { pub(super) async fn get_payload_handler( State(payload): State>, ) -> Result, ApiError> { + // error should never occur. let json_payload = serde_json::to_value(&*payload) .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; Ok(Json(json_payload)) @@ -178,35 +191,257 @@ mod routes { } } -/// Default frontend. Current implementation serves static files from a directory. -pub struct DefaultFrontend { +/// Serves static files from a directory. +pub struct FrontendFromDir { content: PathBuf, } #[allow(dead_code)] impl FrontendFromDir {} -impl Frontend for DefaultFrontend { +impl Frontend for FrontendFromDir { fn serve_content(&self) -> Router { Router::new().nest_service("/", ServeDir::new(self.content.clone())) } } +/// Serves a hard-coded HTML string as the frontend. +pub struct FrontendFromString { + content: String, +} + +impl FrontendFromString { + pub fn new(content: String) -> Self { + Self { content } + } +} + +impl Frontend for FrontendFromString { + fn serve_content(&self) -> Router { + let content = self.content.clone(); + Router::new().route("/", get(move || async { Html(content) })) + } +} + #[cfg(test)] mod tests { use super::*; + use serde_json::json; + + const TEST_HTML: &str = "Hello, world!"; + + // wait for server to launch + async fn wait() { + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + } #[tokio::test] async fn new_works() { - let path = PathBuf::from("/path/to/frontend"); - let default_frontend = DefaultFrontend::new(path.clone()); - let data = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let wim = WalletIntegrationManager::new(default_frontend, data); - - assert_eq!(wim.frontend.content, path); - assert_eq!(wim.payload.chain_rpc, "localhost:9944"); - assert_eq!(wim.payload.call_data, vec![] as Vec); - assert!(wim.state.lock().await.shutdown_tx.is_none()); + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; + let mut wim = WalletIntegrationManager::new(frontend, payload); + + assert_eq!(wim.addr, "127.0.0.1:9090"); + assert_eq!(wim.is_running(), true); + assert!(wim.state.lock().await.shutdown_tx.is_some()); assert!(wim.state.lock().await.signed_payload.is_none()); + + // terminate the server and make sure result is ok + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn payload_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9091"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.call_data, vec![1, 2, 3]); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn submit_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9092"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/submit", addr)) + .json(&"0xDEADBEEF") + .send() + .await + .expect("Failed to submit payload") + .json::() + .await + .expect("Failed to parse JSON response"); + + assert_eq!(response, json!({"status": "success"})); + assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn terminate_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9093"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + + assert_eq!(wim.is_running(), true); + wim.terminate().await; + wait().await; + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_string_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9094"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let actual_payload = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_payload, TEST_HTML); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn frontend_from_dir_works() { + use std::fs; + use tempfile::tempdir; + + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9095"; + + let temp_dir = tempdir().expect("Failed to create temp directory"); + let index_file_path = temp_dir.path().join("index.html"); + + let test_html = "Hello, world from Directory!"; + fs::write(&index_file_path, test_html).expect("Failed to write index.html"); + + let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let actual_payload = reqwest::get(&format!("http://{}", addr)) + .await + .expect("Failed to get web page") + .text() + .await + .expect("Failed to parse page"); + + assert_eq!(actual_payload, test_html); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn large_payload_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9096"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; + + let expected_payload = TransactionData { + chain_rpc: "localhost:9944".to_string(), + call_data: call_data_5mb.clone(), + }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let actual_payload = reqwest::get(&format!("{}/payload", addr)) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.call_data, call_data_5mb); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn new_fails_on_conflicting_address() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9097"; + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + assert_eq!(wim.is_running(), true); + + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let wim_conflict = + WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + assert_eq!(wim_conflict.is_running(), false); + let task_result = wim_conflict.task_handle.await.unwrap(); + match task_result { + Err(e) => assert!(e + .to_string() + .starts_with(&format!("Failed to bind to {}: Address already in use", addr))), + Ok(_) => panic!("Expected error, but task succeeded"), + } } } From 523cdc84f81d85f2a9b990fc0403983b8d466068 Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 7 Dec 2024 18:09:28 -0700 Subject: [PATCH 110/143] feat(wallet-integration): two new routes: error and terminate --- crates/pop-cli/src/wallet_integration.rs | 103 ++++++++++++++++++++--- 1 file changed, 92 insertions(+), 11 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index bdf910aa..fa980ae7 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -44,6 +44,7 @@ pub struct StateHandler { shutdown_tx: Option>, // signed payload received from UI. pub signed_payload: Option, + pub error: Option, } /// Manages the wallet integration for secure signing of transactions. @@ -79,8 +80,11 @@ impl WalletIntegrationManager { // channel to signal shutdown let (tx, rx) = oneshot::channel(); - let state = - Arc::new(Mutex::new(StateHandler { shutdown_tx: Some(tx), signed_payload: None })); + let state = Arc::new(Mutex::new(StateHandler { + shutdown_tx: Some(tx), + signed_payload: None, + error: None, + })); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -173,7 +177,7 @@ mod routes { /// Receives the signed payload from the wallet. /// Will signal for shutdown on success. - pub(super) async fn handle_submit( + pub(super) async fn submit_handler( State(state): State>>, Json(payload): Json, ) -> Json { @@ -189,6 +193,23 @@ mod routes { // graceful shutdown ensures response is sent before shutdown. Json(json!({"status": "success"})) } + + /// Receives an error message from the wallet. + pub(super) async fn error_handler( + State(state): State>>, + Json(error): Json, + ) { + let mut state = state.lock().await; + state.error = Some(error); + } + + /// Allows the server to be terminated from the frontend. + pub(super) async fn terminate_handler(State(state): State>>) { + let mut state = state.lock().await; + if let Some(shutdown_tx) = state.shutdown_tx.take() { + let _ = shutdown_tx.send(()); + } + } } /// Serves static files from a directory. @@ -253,7 +274,7 @@ mod tests { } #[tokio::test] - async fn payload_works() { + async fn payload_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9091"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -279,7 +300,7 @@ mod tests { } #[tokio::test] - async fn submit_works() { + async fn submit_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9092"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -309,9 +330,69 @@ mod tests { } #[tokio::test] - async fn terminate_works() { + async fn error_handler_works() { // offset port per test to avoid conflicts let addr = "127.0.0.1:9093"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/error", addr)) + .json(&"an error occurred") + .send() + .await + .expect("Failed to submit error") + .text() + .await + .expect("Failed to parse response"); + + // no response expected + assert_eq!(response.len(), 0); + assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); + assert_eq!(wim.is_running(), true); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn terminate_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9094"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let expected_payload = + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; + let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + wait().await; + + let addr = format!("http://{}", wim.addr); + let response = reqwest::Client::new() + .post(&format!("{}/terminate", addr)) + .send() + .await + .expect("Failed to terminate") + .text() + .await + .expect("Failed to parse response"); + + // no response expected + assert_eq!(response.len(), 0); + assert_eq!(wim.is_running(), false); + + wim.terminate().await; + assert!(wim.task_handle.await.is_ok()); + } + + #[tokio::test] + async fn wallet_terminate_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9095"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); @@ -331,7 +412,7 @@ mod tests { #[tokio::test] async fn frontend_from_string_works() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9094"; + let addr = "127.0.0.1:9096"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let expected_payload = @@ -358,7 +439,7 @@ mod tests { use tempfile::tempdir; // offset port per test to avoid conflicts - let addr = "127.0.0.1:9095"; + let addr = "127.0.0.1:9097"; let temp_dir = tempdir().expect("Failed to create temp directory"); let index_file_path = temp_dir.path().join("index.html"); @@ -388,7 +469,7 @@ mod tests { #[tokio::test] async fn large_payload_works() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9096"; + let addr = "127.0.0.1:9098"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let call_data_5mb = vec![99u8; 5 * 1024 * 1024]; @@ -416,9 +497,9 @@ mod tests { } #[tokio::test] - async fn new_fails_on_conflicting_address() { + async fn new_with_conflicting_address_fails() { // offset port per test to avoid conflicts - let addr = "127.0.0.1:9097"; + let addr = "127.0.0.1:9099"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); let expected_payload = From 0cbd8de90c21858469e6b7d0183acd8575af83da Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 14:51:56 -0700 Subject: [PATCH 111/143] refactor(wallet-integration): consistent comments, remove unnecessary code in tests --- crates/pop-cli/src/wallet_integration.rs | 128 +++++++++++------------ 1 file changed, 59 insertions(+), 69 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index fa980ae7..fc2d7597 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -20,7 +20,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(Deserialize))] +#[cfg_attr(test, derive(Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -41,20 +41,23 @@ impl TransactionData { /// - Stores the signed payload received from the wallet. #[derive(Default)] pub struct StateHandler { + /// Channel to signal shutdown to the main app. shutdown_tx: Option>, - // signed payload received from UI. + /// Received from UI. pub signed_payload: Option, - pub error: Option, + /// Holds a single error message. + /// Only method for consuming error removes (takes) it from state. + error: Option, } /// Manages the wallet integration for secure signing of transactions. pub struct WalletIntegrationManager { - // shared state between routes. + /// Shared state between routes. pub state: Arc>, - // node rpc address - pub addr: String, - // axum server task handle - pub task_handle: tokio::task::JoinHandle>, + /// Node rpc address. + pub rpc_url: String, + /// Web server task handle. + pub task_handle: JoinHandle>, } impl WalletIntegrationManager { @@ -72,12 +75,8 @@ impl WalletIntegrationManager { } /// Same as `new`, but allows specifying the address to bind to. - pub fn new_with_address( - frontend: F, - payload: TransactionData, - addr: &str, - ) -> Self { - // channel to signal shutdown + pub fn new_with_address(frontend: F, payload: TransactionData, rpc: &str) -> Self { + // Channel to signal shutdown. let (tx, rx) = oneshot::channel(); let state = Arc::new(Mutex::new(StateHandler { @@ -103,11 +102,11 @@ impl WalletIntegrationManager { let addr = "127.0.0.1:9090"; - // will shut down when the signed payload is received + // Will shut down when the signed payload is received. let task_handle = tokio::spawn(async move { - let listener = tokio::net::TcpListener::bind(&addr_owned) + let listener = tokio::net::TcpListener::bind(&rpc_owned) .await - .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", addr_owned, e))?; + .map_err(|e| anyhow::anyhow!("Failed to bind to {}: {}", rpc_owned, e))?; axum::serve(listener, app) .with_graceful_shutdown(async move { @@ -118,12 +117,11 @@ impl WalletIntegrationManager { Ok(()) }); - Self { state, addr: addr.to_string(), task_handle } + Self { state, rpc_url: rpc.to_string(), task_handle } } /// Signals the wallet integration server to shut down. pub async fn terminate(&mut self) { - // signal shutdown if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { let _ = shutdown_tx.send(()); } @@ -133,6 +131,11 @@ impl WalletIntegrationManager { pub fn is_running(&self) -> bool { !self.task_handle.is_finished() } + + /// Takes the error from the state if it exists. + pub async fn take_error(&mut self) -> Option { + self.state.lock().await.error.take() + } } mod routes { @@ -146,8 +149,7 @@ mod routes { }; use serde_json::json; - // must be public for axum - pub struct ApiError(Error); + pub(super) struct ApiError(Error); impl From for ApiError { fn from(err: Error) -> Self { @@ -169,7 +171,7 @@ mod routes { pub(super) async fn get_payload_handler( State(payload): State>, ) -> Result, ApiError> { - // error should never occur. + // Error should never occur. let json_payload = serde_json::to_value(&*payload) .map_err(|e| anyhow::anyhow!("Failed to serialize payload: {}", e))?; Ok(Json(json_payload)) @@ -182,7 +184,7 @@ mod routes { Json(payload): Json, ) -> Json { let mut state = state.lock().await; - state.signed_payload = Some(payload.clone()); + state.signed_payload = Some(payload); // Signal shutdown. // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. @@ -190,7 +192,7 @@ mod routes { let _ = shutdown_tx.send(()); } - // graceful shutdown ensures response is sent before shutdown. + // Graceful shutdown ensures response is sent before shutdown. Json(json!({"status": "success"})) } @@ -251,24 +253,26 @@ mod tests { const TEST_HTML: &str = "Hello, world!"; - // wait for server to launch + // Wait for server to launch. async fn wait() { tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; } + fn default_payload() -> TransactionData { + TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] } + } + #[tokio::test] async fn new_works() { let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![] }; - let mut wim = WalletIntegrationManager::new(frontend, payload); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); - assert_eq!(wim.addr, "127.0.0.1:9090"); + assert_eq!(wim.rpc_url, "127.0.0.1:9090"); assert_eq!(wim.is_running(), true); assert!(wim.state.lock().await.shutdown_tx.is_some()); assert!(wim.state.lock().await.signed_payload.is_none()); - // terminate the server and make sure result is ok + // Terminate the server and make sure result is ok. wim.terminate().await; assert!(wim.task_handle.await.is_ok()); } @@ -281,10 +285,11 @@ mod tests { let expected_payload = TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let actual_payload = reqwest::get(&format!("{}/payload", addr)) .await .expect("Failed to get payload") @@ -292,8 +297,8 @@ mod tests { .await .expect("Failed to parse payload"); - assert_eq!(actual_payload.chain_rpc, "localhost:9944"); - assert_eq!(actual_payload.call_data, vec![1, 2, 3]); + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); + assert_eq!(actual_payload.call_data, expected_payload.call_data); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -305,12 +310,10 @@ mod tests { let addr = "127.0.0.1:9092"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/submit", addr)) .json(&"0xDEADBEEF") @@ -335,12 +338,10 @@ mod tests { let addr = "127.0.0.1:9093"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/error", addr)) .json(&"an error occurred") @@ -366,12 +367,10 @@ mod tests { let addr = "127.0.0.1:9094"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let response = reqwest::Client::new() .post(&format!("{}/terminate", addr)) .send() @@ -381,7 +380,7 @@ mod tests { .await .expect("Failed to parse response"); - // no response expected + // No response expected. assert_eq!(response.len(), 0); assert_eq!(wim.is_running(), false); @@ -396,9 +395,7 @@ mod tests { let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); assert_eq!(wim.is_running(), true); wim.terminate().await; @@ -415,19 +412,17 @@ mod tests { let addr = "127.0.0.1:9096"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let actual_payload = reqwest::get(&format!("http://{}", addr)) + let actual_content = reqwest::get(&format!("http://{}", addr)) .await .expect("Failed to get web page") .text() .await .expect("Failed to parse page"); - assert_eq!(actual_payload, TEST_HTML); + assert_eq!(actual_content, TEST_HTML); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -448,19 +443,17 @@ mod tests { fs::write(&index_file_path, test_html).expect("Failed to write index.html"); let frontend = FrontendFromDir::new(temp_dir.path().to_path_buf()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; - let actual_payload = reqwest::get(&format!("http://{}", addr)) + let actual_content = reqwest::get(&format!("http://{}", addr)) .await .expect("Failed to get web page") .text() .await .expect("Failed to parse page"); - assert_eq!(actual_payload, test_html); + assert_eq!(actual_content, test_html); wim.terminate().await; assert!(wim.task_handle.await.is_ok()); @@ -478,10 +471,11 @@ mod tests { chain_rpc: "localhost:9944".to_string(), call_data: call_data_5mb.clone(), }; - let mut wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let mut wim = + WalletIntegrationManager::new_with_address(frontend, expected_payload.clone(), addr); wait().await; - let addr = format!("http://{}", wim.addr); + let addr = format!("http://{}", wim.rpc_url); let actual_payload = reqwest::get(&format!("{}/payload", addr)) .await .expect("Failed to get payload") @@ -489,7 +483,7 @@ mod tests { .await .expect("Failed to parse payload"); - assert_eq!(actual_payload.chain_rpc, "localhost:9944"); + assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, call_data_5mb); wim.terminate().await; @@ -502,18 +496,14 @@ mod tests { let addr = "127.0.0.1:9099"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; - let wim = WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; assert_eq!(wim.is_running(), true); let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let expected_payload = - TransactionData { chain_rpc: "localhost:9944".to_string(), call_data: vec![1, 2, 3] }; let wim_conflict = - WalletIntegrationManager::new_with_address(frontend, expected_payload, addr); + WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; assert_eq!(wim_conflict.is_running(), false); From f000225aef655c5a36d837b509f0d3e8a981df2c Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Fri, 29 Nov 2024 15:16:00 +0100 Subject: [PATCH 112/143] feat: guide user to call a contract (#306) * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: parse user inputs for Option arguments (#332) * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> * test: fix unit test * feat: allow users to specify custom contract metadata files (#347) * chore: allow the user specify the metadata file to call a contract * test: unit test to parse metadata from a file * docs: fix docs * refactor: ensure_contract_built after user input path * fix: call contract when metadata file * fix: remove default_input in contract address * docs: rename metadata with artifact * fix: panic at has_contract_been_built * fix: clippy * refactor: keep ensure_contract_built as a CallContractCommand function * fix: ensure_contract_built * docs: improve comments * fix: feedback and include wasm file for testing * fix: clippy * chore: after build contract prompt the user if the contract is already deployed * refactor: ensure_contract_built * refactor: has_contract_been_built function * docs: fix comments and messages * refactor: get_messages and get_constructors * test: fix unit tests call ui --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> --- Cargo.toml | 1 + crates/pop-cli/src/cli.rs | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 3effb7c2..38a3870e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,6 +68,7 @@ walkdir = "2.5" indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" +scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.18" diff --git a/crates/pop-cli/src/cli.rs b/crates/pop-cli/src/cli.rs index 6c6bb3bc..3dae776f 100644 --- a/crates/pop-cli/src/cli.rs +++ b/crates/pop-cli/src/cli.rs @@ -146,6 +146,43 @@ impl traits::Confirm for Confirm { fn interact(&mut self) -> Result { self.0.interact() } + /// Sets the initially selected value. + fn initial_value(mut self, initial_value: bool) -> Self { + self.0 = self.0.initial_value(initial_value); + self + } +} + +/// A input prompt using cliclack. +struct Input(cliclack::Input); +impl traits::Input for Input { + /// Sets the default value for the input. + fn default_input(mut self, value: &str) -> Self { + self.0 = self.0.default_input(value); + self + } + /// Starts the prompt interaction. + fn interact(&mut self) -> Result { + self.0.interact() + } + /// Sets the placeholder (hint) text for the input. + fn placeholder(mut self, placeholder: &str) -> Self { + self.0 = self.0.placeholder(placeholder); + self + } + /// Sets whether the input is required. + fn required(mut self, required: bool) -> Self { + self.0 = self.0.required(required); + self + } + /// Sets a validation callback for the input that is called when the user submits. + fn validate( + mut self, + validator: impl Fn(&String) -> std::result::Result<(), &'static str> + 'static, + ) -> Self { + self.0 = self.0.validate(validator); + self + } } /// A input prompt using cliclack. From 048ed33511cd4229976bdd590a0d8263c3f09c07 Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Tue, 3 Dec 2024 12:35:49 +0100 Subject: [PATCH 113/143] fix: support new substrate-contracts-node structure and stabilize integration tests (#360) * fix: parse new structure substrate-contracts-node * fix: paseo+coretime integration test * fix: sourcing latest version substrate-contracts-node * refactor: set_executable_permission function * fix: clippy * chore: CI configuration * test: specify port in run_contracts_node * fix: use random ports instead of hardcoded ones --- crates/pop-common/src/lib.rs | 10 ++++++---- crates/pop-contracts/src/call.rs | 2 +- crates/pop-contracts/src/lib.rs | 2 +- crates/pop-contracts/src/node/mod.rs | 2 ++ crates/pop-contracts/src/testing.rs | 10 ++++++++++ crates/pop-contracts/src/up.rs | 2 +- crates/pop-parachains/src/build.rs | 4 ++-- 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/crates/pop-common/src/lib.rs b/crates/pop-common/src/lib.rs index 70dbcc8f..8e3022f2 100644 --- a/crates/pop-common/src/lib.rs +++ b/crates/pop-common/src/lib.rs @@ -49,16 +49,18 @@ pub fn target() -> Result<&'static str, Error> { } match ARCH { - "aarch64" => + "aarch64" => { return match OS { "macos" => Ok("aarch64-apple-darwin"), _ => Ok("aarch64-unknown-linux-gnu"), - }, - "x86_64" | "x86" => + } + }, + "x86_64" | "x86" => { return match OS { "macos" => Ok("x86_64-apple-darwin"), _ => Ok("x86_64-unknown-linux-gnu"), - }, + } + }, &_ => {}, } Err(Error::UnsupportedPlatform { arch: ARCH, os: OS }) diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 03effcb0..546415ec 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -179,7 +179,7 @@ mod tests { use crate::{ contracts_node_generator, dry_run_gas_estimate_instantiate, errors::Error, instantiate_smart_contract, mock_build_process, new_environment, run_contracts_node, - set_up_deployment, UpOpts, + set_up_deployment, testing::find_free_port, UpOpts, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 69897be3..e775d7f0 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,7 @@ pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; -pub use testing::{mock_build_process, new_environment}; +pub use testing::{find_free_port, mock_build_process, new_environment}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_contract_signed, diff --git a/crates/pop-contracts/src/node/mod.rs b/crates/pop-contracts/src/node/mod.rs index be5680a0..7818d53d 100644 --- a/crates/pop-contracts/src/node/mod.rs +++ b/crates/pop-contracts/src/node/mod.rs @@ -166,6 +166,8 @@ fn release_directory_by_target(tag: Option<&str>) -> Result<&'static str, Error> #[cfg(test)] mod tests { + use crate::testing::find_free_port; + use super::*; use anyhow::{Error, Result}; use pop_common::find_free_port; diff --git a/crates/pop-contracts/src/testing.rs b/crates/pop-contracts/src/testing.rs index 6a8abfcd..c10bd4e5 100644 --- a/crates/pop-contracts/src/testing.rs +++ b/crates/pop-contracts/src/testing.rs @@ -4,6 +4,7 @@ use crate::{create_smart_contract, Contract}; use anyhow::Result; use std::{ fs::{copy, create_dir}, + net::TcpListener, path::Path, }; @@ -37,3 +38,12 @@ where copy(metadata_file, target_contract_dir.join("ink/testing.json"))?; Ok(()) } + +/// Finds an available port by binding to port 0 and retrieving the assigned port. +pub fn find_free_port() -> u16 { + TcpListener::bind("127.0.0.1:0") + .expect("Failed to bind to an available port") + .local_addr() + .expect("Failed to retrieve local address") + .port() +} diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index b1e4304b..8867cb27 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -381,7 +381,7 @@ mod tests { use super::*; use crate::{ contracts_node_generator, errors::Error, mock_build_process, new_environment, - run_contracts_node, + run_contracts_node, testing::find_free_port, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; diff --git a/crates/pop-parachains/src/build.rs b/crates/pop-parachains/src/build.rs index 1e369f37..1cc869e3 100644 --- a/crates/pop-parachains/src/build.rs +++ b/crates/pop-parachains/src/build.rs @@ -51,8 +51,8 @@ pub fn is_supported(path: Option<&Path>) -> Result { const DEPENDENCIES: [&str; 4] = ["cumulus-client-collator", "cumulus-primitives-core", "parachains-common", "polkadot-sdk"]; Ok(DEPENDENCIES.into_iter().any(|d| { - manifest.dependencies.contains_key(d) || - manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) + manifest.dependencies.contains_key(d) + || manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) })) } From d003d2fe79d72f22c177d2276c8b09ed577c1cf6 Mon Sep 17 00:00:00 2001 From: Alex Bean Date: Tue, 10 Dec 2024 18:28:29 +0100 Subject: [PATCH 114/143] feat: guide user to call a parachain (#316) * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README * feat: pop call parachain prototype * feat: dispaly arguments of extrinsic * refactor: structure similar to pop call contract * feat: parse all values for extrinsic/storage * refactor: signer in common * refactor: improve messages * feat: call parachain ui * fix: calls working * refactor: remove unused code * refactor: remove unused code * refactor: various fixes * refactor: various fixes * feat: add option to include params from command line * refactor: clean docs and refactor code * fix: tests * refactor: parse all the metadata again * refactor: reorganize and clean metadata functions * feat: display specific use cases to the user * refactor: predefined actions * fix: various fixes * fix: error message not supported for complex types * refactor: parse all metadata, including parameters at once * refactor: clean docs and move code * fix: format_type * fix: parse user inputs for Option arguments (#332) * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * fix: logo doesn't show in README --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> * test: fix unit test * refactor: clean the way to parse and prompt parameters * feat: add Purchase on-demand coretime use cases * test: add skip_confirm, move when prompt for the signer and create the integration test * test: call parachain ui unit test * refactor: separate structs * fmt * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * fix: solve conflicts and unit tests (#359) * test: call parachain ui unit test * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * fix: conflicts and unit tests * test: remove test and improve test * feat: guide user for calling a contract * feat: get metadata contract from the contract path * refactor: refactor test and validate address input * fix: apply feedback * feat: prompt to have another call and skip questions for queries * refactor: use Cli module instead of cliclack * test: unit test pop-cli crate * test: unit contracts crate * chore: format * test: refactor and improve test cases * fix: fix todos and refactor * test: fix unit test * feat: parse types of parameters and display it to the user in the placeholder * refactor: error handling for pop call * refactor: display call to be executed after guide and reorder * refactor: when repeat call use same contract values and dont clean screen * test: add dry-run test * test: refactor and add more test coverage * test: more coverage * fix: unit test * feat: dev mode to skip certain user prompts * refactor: test functions, renaming and fix clippy * refactor: improve devex of pop call contract * test: adjust tests to refactor * chore: reset_for_new_call fields * fix: build contract if has not been built * refactor: use command state (#338) Merged set_up_call_config and guide_user_to_call_contract into a single function. Also adds short symbols for arguments. * fix: automatically add some or none to Option argument * test: refactor and tests * refactor: improve code and comments * fix: renaming and clean code * chore: option params not mandatory * fix: parse user inputs for Option arguments in constructor (#335) * fix: automatically add some or none to Option argument * fix: tests * refactor: process_function_args * test: update tests accordingly last changes * fix: issue with delimiter * test: fix unit test * refactor: renaming and fix comments * refactor: format types (#339) Shows the full type representation, making it easier to see the entry format of parameter values. * feat: pop call parachain prototype * feat: dispaly arguments of extrinsic * refactor: structure similar to pop call contract * feat: parse all values for extrinsic/storage * refactor: signer in common * refactor: improve messages * feat: call parachain ui * fix: calls working * refactor: remove unused code * refactor: remove unused code * refactor: various fixes * refactor: various fixes * feat: add option to include params from command line * refactor: clean docs and refactor code * fix: tests * refactor: parse all the metadata again * refactor: reorganize and clean metadata functions * feat: display specific use cases to the user * refactor: predefined actions * fix: various fixes * fix: error message not supported for complex types * refactor: parse all metadata, including parameters at once * refactor: clean docs and move code * fix: format_type * test: fix unit test * refactor: clean the way to parse and prompt parameters * feat: add Purchase on-demand coretime use cases * test: add skip_confirm, move when prompt for the signer and create the integration test * test: call parachain ui unit test * test: pop-cli unit testing * test: pop-common unit tests * test: parse metadata unit tests * test: refactor and test processing parameters * test: comments and unit test in call functions * fix: clippy warnings * chore: fmt * feat: repeat call only if using guide UI * fix: clippy * refactor: various improvements * chore: parser for pallet and extrinsic input names * refactor: only move to pop_common the needed functions * refactor: improve test, docs and errors * test: fix unit tests * fix: reset_for_new_call when extrinisc is not supported * fix: build with parachain features * test: wait before call parachain in integration test * docs: minor improvements * test: migrate find_free_port to pop_common * test: fix increase waiting time * test: remove unnecesary test case * refactor: rename api with client * refactor: naming and docs * docs: improve docs and missing comments * test: remove unnecesary verbose * test: find_free_port * docs: improve parameter documentation * test: add missing test to sign_and_submit_extrinsic * fix: apply feedback from auxiliar PRs, remove unnecesary clones * docs: public modules * refactor: clean unused params * fix: mark all extrinsics that uses calls as parameter as unsupported * test: fix expect_select * docs: improve documentation * feat: submit extrinsic from call_data (#348) * feat: submit extrinsic from call_data * test: unit test for initialize_api_client * test: unit test for send_extrinsic_from_call_data * fix: CallData struct * fix: skip_confirm for send_extrinsic_from_call_data * chore: clippy * chore: fmt * refactor: minor doc and naming changes * refactor: remove unnecesary clones and return early when submit_extrinsic_from_call_data * chore: fmt * refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data * feat: parse files when the argument values are very big (#363) * feat: parse files when the argument values are very big * test: unit test * chore: fmt * feat: file logic using the command line * fix: sequence arguments * test: fix unit test * refactor: remove prompting the user if input is file or value * refactor: parse_extrinsic_arguments * fix: CI deny * refactor: reorder Param derive macros * test: fix decode_call_data_works unit test * refactor: use Default derive macro and define constants for test values (#366) * feat: parse files when the argument values are very big * chore: fmt * feat: file logic using the command line * fix: sequence arguments * refactor: parse_extrinsic_arguments * refactor: use Default in pop_parachain structs * refactor: use Default in CallParachainCommand struct * refactor: use constant in tests * chore: fmt and small refactor * feat: flag sudo to wrap extrinsic (#349) * feat: submit extrinsic from call_data * test: unit test for initialize_api_client * feat: wrap call into a sudo call * test: add unit test to the new logic * fix: skip_confirm for send_extrinsic_from_call_data * chore: clippy * docs: renaming and improve docs * test: use force_transfer for testing * fix: check if sudo exist before prompt the user * chore: fmt * chore: fmt * test: fix wrong assert * docs: improve comments and output messages * refactor: split decode_call_data logic outside sign_and_submit_extrinsic_with_call_data * fix: test construct_sudo_extrinsic_works and formatting * refactor: various fixes and improvements (#367) * refactor: sort pallets/dispatchables * refactor: remove unnecessary async * fix: resolve issue after rebase * fix: more async issues after rebase * refactor: use single constant * refactor: terminology (#368) * refactor: terminology * refactor: simply pallet/function relationship * fix: amend call_data conflicts after refactor * refactor: improvements (#370) * fix: add missing short arg option * refactor: note that extrinsic wait includes finalization * refactor: remove clones * style: formatting * refactor: make file prompt more generic * refactor: add missing license headers * style: formatting * docs: comments * docs: comments * docs: comments * refactor: reuse existing metadata * refactor: minimise clones * docs: comments * refactor: naming * docs: fix parameter doc comments * refactor: address clippy warnings * refactor: rename parachain with chain as the primary command and retain parachain as an alias (#373) * refactor: rename parachain with chain in visible messages * refactor: rename parachain with chain internal code * chore: solve fmt after rebase * refactor: small fix, use alias instead aliases * refactor: rename CallParachain struct into Call --------- Co-authored-by: Frank Bell <60948618+evilrobot-01@users.noreply.github.com> Co-authored-by: Alejandro Martinez Andres <11448715+al3mart@users.noreply.github.com> Co-authored-by: Daanvdplas --- Cargo.lock | 114 +++++++++++++++++++--- Cargo.toml | 1 + crates/pop-cli/src/commands/call/chain.rs | 40 ++++---- crates/pop-contracts/src/call.rs | 2 +- crates/pop-contracts/src/lib.rs | 2 +- crates/pop-contracts/src/node/mod.rs | 2 - crates/pop-contracts/src/testing.rs | 10 -- crates/pop-contracts/src/up.rs | 2 +- 8 files changed, 128 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fee5cc17..02c4e186 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3907,12 +3907,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -4769,6 +4780,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" version = "0.4.12" @@ -7363,7 +7380,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.5.1", + "rand_core 0.6.4", "serde", "unicode-normalization", ] @@ -11789,6 +11806,16 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -12261,12 +12288,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" version = "1.0.13" @@ -12330,9 +12351,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -12346,6 +12367,18 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -13151,6 +13184,18 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -13323,6 +13368,27 @@ dependencies = [ "synstructure 0.13.1", ] +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" @@ -13365,6 +13431,28 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "zip" version = "2.2.0" diff --git a/Cargo.toml b/Cargo.toml index 38a3870e..ffec8bfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,6 +69,7 @@ indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } +scale-value = { version = "0.16.2", default-features = false, features = ["from-string", "parser-ss58"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.18" diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 9751b7dd..0179f1b8 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -100,8 +100,9 @@ impl CallChainCommand { break; } - if !prompt_to_repeat_call || - !cli.confirm("Do you want to perform another call?") + if !prompt_to_repeat_call + || !cli + .confirm("Do you want to perform another call?") .initial_value(false) .interact()? { @@ -200,8 +201,9 @@ impl CallChainCommand { // Resolve who is signing the extrinsic. let suri = match self.suri.as_ref() { Some(suri) => suri.clone(), - None => - cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, + None => { + cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + }, }; return Ok(Call { @@ -228,8 +230,9 @@ impl CallChainCommand { None => &cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, }; cli.info(format!("Encoded call data: {}", call_data))?; - if !self.skip_confirm && - !cli.confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm + && !cli + .confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { @@ -257,7 +260,7 @@ impl CallChainCommand { // execute the call via `sudo`. fn configure_sudo(&mut self, chain: &Chain, cli: &mut impl Cli) -> Result<()> { match find_dispatchable_by_name(&chain.pallets, "Sudo", "sudo") { - Ok(_) => + Ok(_) => { if !self.sudo { self.sudo = cli .confirm( @@ -265,14 +268,16 @@ impl CallChainCommand { ) .initial_value(false) .interact()?; - }, - Err(_) => + } + }, + Err(_) => { if self.sudo { cli.warning( "NOTE: sudo is not supported by the chain. Ignoring `--sudo` flag.", )?; self.sudo = false; - }, + } + }, } Ok(()) } @@ -287,11 +292,11 @@ impl CallChainCommand { // Function to check if all required fields are specified. fn requires_user_input(&self) -> bool { - self.pallet.is_none() || - self.function.is_none() || - self.args.is_empty() || - self.url.is_none() || - self.suri.is_none() + self.pallet.is_none() + || self.function.is_none() + || self.args.is_empty() + || self.url.is_none() + || self.suri.is_none() } /// Replaces file arguments with their contents, leaving other arguments unchanged. @@ -371,8 +376,9 @@ impl Call { tx: DynamicPayload, cli: &mut impl Cli, ) -> Result<()> { - if !self.skip_confirm && - !cli.confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm + && !cli + .confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 546415ec..03effcb0 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -179,7 +179,7 @@ mod tests { use crate::{ contracts_node_generator, dry_run_gas_estimate_instantiate, errors::Error, instantiate_smart_contract, mock_build_process, new_environment, run_contracts_node, - set_up_deployment, testing::find_free_port, UpOpts, + set_up_deployment, UpOpts, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index e775d7f0..69897be3 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -20,7 +20,7 @@ pub use new::{create_smart_contract, is_valid_contract_name}; pub use node::{contracts_node_generator, is_chain_alive, run_contracts_node}; pub use templates::{Contract, ContractType}; pub use test::{test_e2e_smart_contract, test_smart_contract}; -pub use testing::{find_free_port, mock_build_process, new_environment}; +pub use testing::{mock_build_process, new_environment}; pub use up::{ dry_run_gas_estimate_instantiate, dry_run_upload, get_code_hash_from_event, get_contract_code, get_instantiate_payload, get_upload_payload, instantiate_contract_signed, diff --git a/crates/pop-contracts/src/node/mod.rs b/crates/pop-contracts/src/node/mod.rs index 7818d53d..be5680a0 100644 --- a/crates/pop-contracts/src/node/mod.rs +++ b/crates/pop-contracts/src/node/mod.rs @@ -166,8 +166,6 @@ fn release_directory_by_target(tag: Option<&str>) -> Result<&'static str, Error> #[cfg(test)] mod tests { - use crate::testing::find_free_port; - use super::*; use anyhow::{Error, Result}; use pop_common::find_free_port; diff --git a/crates/pop-contracts/src/testing.rs b/crates/pop-contracts/src/testing.rs index c10bd4e5..6a8abfcd 100644 --- a/crates/pop-contracts/src/testing.rs +++ b/crates/pop-contracts/src/testing.rs @@ -4,7 +4,6 @@ use crate::{create_smart_contract, Contract}; use anyhow::Result; use std::{ fs::{copy, create_dir}, - net::TcpListener, path::Path, }; @@ -38,12 +37,3 @@ where copy(metadata_file, target_contract_dir.join("ink/testing.json"))?; Ok(()) } - -/// Finds an available port by binding to port 0 and retrieving the assigned port. -pub fn find_free_port() -> u16 { - TcpListener::bind("127.0.0.1:0") - .expect("Failed to bind to an available port") - .local_addr() - .expect("Failed to retrieve local address") - .port() -} diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 8867cb27..b1e4304b 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -381,7 +381,7 @@ mod tests { use super::*; use crate::{ contracts_node_generator, errors::Error, mock_build_process, new_environment, - run_contracts_node, testing::find_free_port, + run_contracts_node, }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; From 9fc9529963d770a123c9b013551664b35adbe95e Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 16:38:36 -0700 Subject: [PATCH 115/143] feat(wallet-integration): server and API (#362) * feat(wallet-integration): implement server and API * feat(wallet-integration): add a few tests to server. Needs more * refactor(wallet-integration): just use call_data, remove data types * feat(wallet-integration): add frontend type for flexible serving * feat(wallet-integration): StateHandler in WalletIntegrationManager. Add terminate method * refactor(wallet-integration): move to module with pop-cli crate * feat(wallet-integration): server-side error handling, update port to 9090 * refactor(wallet-integration): restructure server for easier use in thread * fix(wallet-integration): remove invalid fn `finish` * docs(wallet-integration): inline comments * test(wallet-integration): unit tests for wallet-integration server. Add new frontend type * feat(wallet-integration): two new routes: error and terminate * refactor(wallet-integration): consistent comments, remove unnecessary code in tests * feat: add TransactionData::new * refactor(wallet-integration: shutdown channel error handling, terminate helper, take_error and TranscationData::new tests * chore: clippy warning --- crates/pop-cli/src/wallet_integration.rs | 90 ++++++++++++++++-------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index fc2d7597..2674ff6b 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -121,10 +121,8 @@ impl WalletIntegrationManager { } /// Signals the wallet integration server to shut down. - pub async fn terminate(&mut self) { - if let Some(shutdown_tx) = self.state.lock().await.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + pub async fn terminate(&mut self) -> anyhow::Result<()> { + terminate_helper(&self.state).await } /// Checks if the server task is still running. @@ -139,7 +137,7 @@ impl WalletIntegrationManager { } mod routes { - use super::{Arc, Mutex, StateHandler, TransactionData}; + use super::{terminate_helper, Arc, Mutex, StateHandler, TransactionData}; use anyhow::Error; use axum::{ extract::State, @@ -182,18 +180,17 @@ mod routes { pub(super) async fn submit_handler( State(state): State>>, Json(payload): Json, - ) -> Json { - let mut state = state.lock().await; - state.signed_payload = Some(payload); - + ) -> Result, ApiError> { // Signal shutdown. - // Using WalletIntegrationManager::terminate() introduces unnecessary complexity. - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + let res = terminate_helper(&state).await; + + let mut state_locked = state.lock().await; + state_locked.signed_payload = Some(payload); + + res?; // Graceful shutdown ensures response is sent before shutdown. - Json(json!({"status": "success"})) + Ok(Json(json!({"status": "success"}))) } /// Receives an error message from the wallet. @@ -206,12 +203,20 @@ mod routes { } /// Allows the server to be terminated from the frontend. - pub(super) async fn terminate_handler(State(state): State>>) { - let mut state = state.lock().await; - if let Some(shutdown_tx) = state.shutdown_tx.take() { - let _ = shutdown_tx.send(()); - } + pub(super) async fn terminate_handler( + State(state): State>>, + ) -> Result<(), ApiError> { + Ok(terminate_helper(&state).await?) + } +} + +async fn terminate_helper(handle: &Arc>) -> anyhow::Result<()> { + if let Some(shutdown_tx) = handle.lock().await.shutdown_tx.take() { + shutdown_tx + .send(()) + .map_err(|_| anyhow::anyhow!("Failed to send shutdown signal"))?; } + Ok(()) } /// Serves static files from a directory. @@ -255,7 +260,7 @@ mod tests { // Wait for server to launch. async fn wait() { - tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; } fn default_payload() -> TransactionData { @@ -273,10 +278,34 @@ mod tests { assert!(wim.state.lock().await.signed_payload.is_none()); // Terminate the server and make sure result is ok. - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail."); assert!(wim.task_handle.await.is_ok()); } + #[test] + fn new_transaction_data_works() { + let chain_rpc = "localhost:9944".to_string(); + let call_data = vec![1, 2, 3]; + let transaction_data = TransactionData::new(chain_rpc.clone(), call_data.clone()); + + assert_eq!(transaction_data.chain_rpc, chain_rpc); + assert_eq!(transaction_data.call_data, call_data); + } + + #[tokio::test] + async fn take_error_works() { + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + let mut wim = WalletIntegrationManager::new(frontend, default_payload()); + + assert_eq!(wim.take_error().await, None); + + let error = "An error occurred".to_string(); + wim.state.lock().await.error = Some(error.clone()); + + let taken_error = wim.take_error().await; + assert_eq!(taken_error, Some(error)); + } + #[tokio::test] async fn payload_handler_works() { // offset port per test to avoid conflicts @@ -300,7 +329,7 @@ mod tests { assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, expected_payload.call_data); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -328,7 +357,7 @@ mod tests { assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); assert_eq!(wim.is_running(), false); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -357,7 +386,7 @@ mod tests { assert_eq!(wim.state.lock().await.error, Some("an error occurred".to_string())); assert_eq!(wim.is_running(), true); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -367,7 +396,7 @@ mod tests { let addr = "127.0.0.1:9094"; let frontend = FrontendFromString::new(TEST_HTML.to_string()); - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + let wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); wait().await; let addr = format!("http://{}", wim.rpc_url); @@ -384,7 +413,6 @@ mod tests { assert_eq!(response.len(), 0); assert_eq!(wim.is_running(), false); - wim.terminate().await; assert!(wim.task_handle.await.is_ok()); } @@ -398,11 +426,11 @@ mod tests { let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); assert_eq!(wim.is_running(), true); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); wait().await; assert_eq!(wim.is_running(), false); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -424,7 +452,7 @@ mod tests { assert_eq!(actual_content, TEST_HTML); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -455,7 +483,7 @@ mod tests { assert_eq!(actual_content, test_html); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail"); assert!(wim.task_handle.await.is_ok()); } @@ -486,7 +514,7 @@ mod tests { assert_eq!(actual_payload.chain_rpc, expected_payload.chain_rpc); assert_eq!(actual_payload.call_data, call_data_5mb); - wim.terminate().await; + wim.terminate().await.expect("Termination should not fail."); assert!(wim.task_handle.await.is_ok()); } From 27102bd74dba332515a3a05bb6bb38194424584a Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 6 Dec 2024 13:36:16 -0700 Subject: [PATCH 116/143] feat(up-contract): get call data for upload-only and pass to wallet integration -- PoC --- crates/pop-contracts/src/up.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index b1e4304b..c09fcbb1 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -385,7 +385,8 @@ mod tests { }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; - use std::{env, process::Command, time::Duration}; + use reqwest::get; + use std::{env, fs, process::Command, time::Duration}; use tokio::time::sleep; use url::Url; From f1dd455045cdff5766f7198225ca77f89430559c Mon Sep 17 00:00:00 2001 From: Peter White Date: Mon, 9 Dec 2024 00:05:06 -0700 Subject: [PATCH 117/143] chore: use git branch for cargo contract --- Cargo.lock | 2 +- Cargo.toml | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 02c4e186..74cd0173 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7380,7 +7380,7 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.6.4", + "rand_core 0.5.1", "serde", "unicode-normalization", ] diff --git a/Cargo.toml b/Cargo.toml index ffec8bfe..3effb7c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,8 +68,6 @@ walkdir = "2.5" indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" -scale-info = { version = "2.11.3", default-features = false, features = ["derive"] } -scale-value = { version = "0.16.2", default-features = false, features = ["from-string", "parser-ss58"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.18" From 725597e0ef83f4c9bc9168340b06bdc6b03f6d9d Mon Sep 17 00:00:00 2001 From: Peter White Date: Tue, 10 Dec 2024 17:11:16 -0700 Subject: [PATCH 118/143] feat(up-contract): handle subxt events better, various improvements --- crates/pop-cli/src/commands/up/contract.rs | 70 ++++++++++++++++------ crates/pop-cli/src/wallet_integration.rs | 54 ++++++++--------- 2 files changed, 79 insertions(+), 45 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 92dbe1d4..9538a877 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -515,24 +515,58 @@ mod tests { Ok(()) } - #[test] - fn has_contract_been_built_works() -> anyhow::Result<()> { - let temp_dir = tempfile::tempdir()?; - let path = temp_dir.path(); - - // Standard rust project - let name = "hello_world"; - cmd("cargo", ["new", name]).dir(&path).run()?; - let contract_path = path.join(name); - assert!(!has_contract_been_built(Some(&contract_path))); - - cmd("cargo", ["build"]).dir(&contract_path).run()?; - // Mock build directory - fs::create_dir(&contract_path.join("target/ink"))?; - assert!(!has_contract_been_built(Some(&path.join(name)))); - // Create a mocked .contract file inside the target directory - File::create(contract_path.join(format!("target/ink/{}.contract", name)))?; - assert!(has_contract_been_built(Some(&path.join(name)))); + // TODO: delete this test. + // This is a helper test for an actual running pop CLI. + // It can serve as the "frontend" to query the payload, sign it + // and submit back to the CLI. + #[ignore] + #[tokio::test] + async fn sign_call_data() -> anyhow::Result<()> { + use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; + // This struct implements the [`Payload`] trait and is used to submit + // pre-encoded SCALE call data directly, without the dynamic construction of transactions. + struct CallData(Vec); + + impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } + } + + use subxt_signer::sr25519::dev; + let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + let url = "ws://localhost:9944"; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = + subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let signer = dev::alice(); + + let payload = CallData(payload.call_data()); + let ext_params = Params::new().build(); + let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; + + let response = reqwest::Client::new() + .post(&format!("{}/submit", "http://localhost:9090")) + .json(&to_hex(signed.encoded())) + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse JSON response"); + Ok(()) } diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 2674ff6b..076aa817 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -333,33 +333,33 @@ mod tests { assert!(wim.task_handle.await.is_ok()); } - #[tokio::test] - async fn submit_handler_works() { - // offset port per test to avoid conflicts - let addr = "127.0.0.1:9092"; - let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - wait().await; - - let addr = format!("http://{}", wim.rpc_url); - let response = reqwest::Client::new() - .post(&format!("{}/submit", addr)) - .json(&"0xDEADBEEF") - .send() - .await - .expect("Failed to submit payload") - .json::() - .await - .expect("Failed to parse JSON response"); - - assert_eq!(response, json!({"status": "success"})); - assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - assert_eq!(wim.is_running(), false); - - wim.terminate().await.expect("Termination should not fail"); - assert!(wim.task_handle.await.is_ok()); - } + // #[tokio::test] + // async fn submit_handler_works() { + // // offset port per test to avoid conflicts + // let addr = "127.0.0.1:9092"; + // let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + // let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + // wait().await; + + // let addr = format!("http://{}", wim.rpc_url); + // let response = reqwest::Client::new() + // .post(&format!("{}/submit", addr)) + // .json(&"0xDEADBEEF") + // .send() + // .await + // .expect("Failed to submit payload") + // .text() + // .await + // .expect("Failed to parse response"); + + // assert_eq!(response, json!({"status": "success"})); + // assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + // assert_eq!(wim.is_running(), false); + + // wim.terminate().await.expect("Termination should not fail"); + // assert!(wim.task_handle.await.is_ok()); + // } #[tokio::test] async fn error_handler_works() { From bbf8b71b423a30049011cfd527e37cdf953eaac6 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 12:02:00 +0100 Subject: [PATCH 119/143] refactor: reuse pop up logic --- crates/pop-cli/src/commands/up/contract.rs | 34 +------ crates/pop-cli/src/common/mod.rs | 1 + crates/pop-cli/src/common/wallet.rs | 101 +++++++++++++++++++++ 3 files changed, 107 insertions(+), 29 deletions(-) create mode 100644 crates/pop-cli/src/common/wallet.rs diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 9538a877..e867b0d9 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -2,7 +2,10 @@ use crate::{ cli::{traits::Cli as _, Cli}, - common::contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + common::{ + contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + wallet::wait_for_signature, + }, style::style, wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; @@ -182,7 +185,7 @@ impl UpContractCommand { }, }; - let maybe_payload = self.wait_for_signature(call_data).await?; + let maybe_payload = wait_for_signature(call_data, self.url.to_string()).await?; if let Some(payload) = maybe_payload { log::success("Signed payload received.")?; let spinner = spinner(); @@ -381,33 +384,6 @@ impl UpContractCommand { Ok((call_data, hash)) } } - - async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); - - let transaction_data = TransactionData::new(self.url.to_string(), call_data); - // starts server - let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; - - log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; - loop { - // Display error, if any. - if let Some(error) = wallet.take_error().await { - log::error(format!("Signing portal error: {error}"))?; - } - - let state = wallet.state.lock().await; - // If the payload is submitted we terminate the frontend. - if !wallet.is_running() || state.signed_payload.is_some() { - wallet.task_handle.await??; - break; - } - } - - let signed_payload = wallet.state.lock().await.signed_payload.clone(); - Ok(signed_payload) - } } impl From for UpOpts { diff --git a/crates/pop-cli/src/common/mod.rs b/crates/pop-cli/src/common/mod.rs index 1cb3ee57..4a89036e 100644 --- a/crates/pop-cli/src/common/mod.rs +++ b/crates/pop-cli/src/common/mod.rs @@ -3,3 +3,4 @@ #[cfg(feature = "contract")] pub mod contracts; pub mod helpers; +pub mod wallet; diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs new file mode 100644 index 00000000..2025bec0 --- /dev/null +++ b/crates/pop-cli/src/common/wallet.rs @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-3.0 + +use crate::{ + cli::{traits::Cli as _, Cli}, + wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, +}; +use cliclack::log; +use sp_core::bytes::to_hex; +use std::path::PathBuf; + +pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { + // TODO: to be addressed in future PR. Should not use FromDir (or local path). + let ui = FrontendFromDir::new(PathBuf::from( + "/Users/alexbean/Documents/react-teleport-example/dist", + )); + + let transaction_data = TransactionData::new(url, call_data); + let call_data_bytes = to_hex(&transaction_data.call_data(), false); + println!("transaction_data: {:?}", call_data_bytes); + // starts server + let mut wallet = WalletIntegrationManager::new(ui, transaction_data); + log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; + + log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; + loop { + // Display error, if any. + if let Some(error) = wallet.take_error().await { + log::error(format!("Signing portal error: {error}"))?; + } + + let state = wallet.state.lock().await; + // If the payload is submitted we terminate the frontend. + if !wallet.is_running() || state.signed_payload.is_some() { + wallet.task_handle.await??; + break; + } + } + + let signed_payload = wallet.state.lock().await.signed_payload.clone(); + Ok(signed_payload) +} + +#[cfg(test)] +mod tests { + use super::*; + use subxt::utils::to_hex; + + // TODO: delete this test. + // This is a helper test for an actual running pop CLI. + // It can serve as the "frontend" to query the payload, sign it + // and submit back to the CLI. + #[tokio::test] + async fn sign_call_data() -> anyhow::Result<()> { + use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; + // This struct implements the [`Payload`] trait and is used to submit + // pre-encoded SCALE call data directly, without the dynamic construction of transactions. + struct CallData(Vec); + + impl Payload for CallData { + fn encode_call_data_to( + &self, + _: &subxt::Metadata, + out: &mut Vec, + ) -> Result<(), subxt::ext::subxt_core::Error> { + out.extend_from_slice(&self.0); + Ok(()) + } + } + + use subxt_signer::sr25519::dev; + let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) + .await + .expect("Failed to get payload") + .json::() + .await + .expect("Failed to parse payload"); + + let url = "ws://localhost:9944"; + let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; + let client = + subxt::OnlineClient::::from_rpc_client(rpc_client).await?; + + let signer = dev::alice(); + + let payload = CallData(payload.call_data()); + let ext_params = Params::new().build(); + let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; + + let response = reqwest::Client::new() + .post(&format!("{}/submit", "http://localhost:9090")) + .json(&to_hex(signed.encoded())) + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse JSON response"); + + Ok(()) + } +} From 5870b9c0d9782fd386b3b0cece996bd63e7aef39 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 14:41:09 +0100 Subject: [PATCH 120/143] chore: rebase fixes --- crates/pop-cli/src/commands/up/contract.rs | 113 --------------------- crates/pop-cli/src/common/wallet.rs | 5 +- crates/pop-cli/src/wallet_integration.rs | 1 - 3 files changed, 1 insertion(+), 118 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index e867b0d9..d68cde19 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -447,9 +447,6 @@ fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Opti #[cfg(test)] mod tests { use super::*; - use duct::cmd; - use std::fs::{self, File}; - use subxt::{client::OfflineClientT, utils::to_hex}; use url::Url; fn default_up_contract_command() -> UpContractCommand { @@ -491,116 +488,6 @@ mod tests { Ok(()) } - // TODO: delete this test. - // This is a helper test for an actual running pop CLI. - // It can serve as the "frontend" to query the payload, sign it - // and submit back to the CLI. - #[ignore] - #[tokio::test] - async fn sign_call_data() -> anyhow::Result<()> { - use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; - // This struct implements the [`Payload`] trait and is used to submit - // pre-encoded SCALE call data directly, without the dynamic construction of transactions. - struct CallData(Vec); - - impl Payload for CallData { - fn encode_call_data_to( - &self, - _: &subxt::Metadata, - out: &mut Vec, - ) -> Result<(), subxt::ext::subxt_core::Error> { - out.extend_from_slice(&self.0); - Ok(()) - } - } - - use subxt_signer::sr25519::dev; - let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - let url = "ws://localhost:9944"; - let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; - let client = - subxt::OnlineClient::::from_rpc_client(rpc_client).await?; - - let signer = dev::alice(); - - let payload = CallData(payload.call_data()); - let ext_params = Params::new().build(); - let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; - - let response = reqwest::Client::new() - .post(&format!("{}/submit", "http://localhost:9090")) - .json(&to_hex(signed.encoded())) - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse JSON response"); - - Ok(()) - } - - // TODO: delete this test. - // This is a helper test for an actual running pop CLI. - // It can serve as the "frontend" to query the payload, sign it - // and submit back to the CLI. - #[tokio::test] - async fn sign_call_data() -> anyhow::Result<()> { - use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; - // This struct implements the [`Payload`] trait and is used to submit - // pre-encoded SCALE call data directly, without the dynamic construction of transactions. - struct CallData(Vec); - - impl Payload for CallData { - fn encode_call_data_to( - &self, - _: &subxt::Metadata, - out: &mut Vec, - ) -> Result<(), subxt::ext::subxt_core::Error> { - out.extend_from_slice(&self.0); - Ok(()) - } - } - - use subxt_signer::sr25519::dev; - let payload = reqwest::get(&format!("{}/payload", "http://127.0.0.1:9090")) - .await - .expect("Failed to get payload") - .json::() - .await - .expect("Failed to parse payload"); - - let url = "ws://localhost:9944"; - let rpc_client = subxt::backend::rpc::RpcClient::from_url(url).await?; - let client = - subxt::OnlineClient::::from_rpc_client(rpc_client).await?; - - let signer = dev::alice(); - - let payload = CallData(payload.call_data()); - let ext_params = Params::new().build(); - let signed = client.tx().create_signed(&payload, &signer, ext_params).await?; - - let response = reqwest::Client::new() - .post(&format!("{}/submit", "http://localhost:9090")) - .json(&to_hex(signed.encoded())) - .send() - .await - .expect("Failed to submit payload") - .text() - .await - .expect("Failed to parse JSON response"); - - Ok(()) - } - - #[tokio::test] async fn get_upload_call_data_works() -> anyhow::Result<()> { todo!() } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 2025bec0..1cbcfbd3 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -1,9 +1,6 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::{ - cli::{traits::Cli as _, Cli}, - wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}, -}; +use crate::wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}; use cliclack::log; use sp_core::bytes::to_hex; use std::path::PathBuf; diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 076aa817..8d8bc02c 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -254,7 +254,6 @@ impl Frontend for FrontendFromString { #[cfg(test)] mod tests { use super::*; - use serde_json::json; const TEST_HTML: &str = "Hello, world!"; From c48def7bb71028d2706b32b8b111508064377500 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 15:03:00 +0100 Subject: [PATCH 121/143] refactor: clean after rebase --- crates/pop-contracts/src/up.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index c09fcbb1..b1e4304b 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -385,8 +385,7 @@ mod tests { }; use anyhow::Result; use pop_common::{find_free_port, set_executable_permission}; - use reqwest::get; - use std::{env, fs, process::Command, time::Duration}; + use std::{env, process::Command, time::Duration}; use tokio::time::sleep; use url::Url; From 1070f2cc34f5b947565d004553cb556cd125be22 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 15:17:05 +0100 Subject: [PATCH 122/143] fix: cargo.lock after rebase --- Cargo.lock | 3240 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 2728 insertions(+), 512 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74cd0173..0e47545b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,11 +23,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli 0.31.0", + "gimli 0.31.1", ] [[package]] @@ -46,6 +46,31 @@ dependencies = [ "generic-array", ] +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "ahash" version = "0.7.8" @@ -170,9 +195,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -185,36 +210,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -248,9 +273,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -262,8 +287,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -273,9 +310,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" +dependencies = [ + "ark-bw6-761", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -284,14 +360,83 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", "zeroize", ] @@ -301,20 +446,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.1", "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -325,6 +480,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -338,19 +505,56 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-models-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-scale" +version = "0.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -358,7 +562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.4.0", "digest 0.10.7", "num-bigint", ] @@ -374,6 +578,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -382,6 +596,7 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", + "rayon", ] [[package]] @@ -392,9 +607,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -481,6 +696,66 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "asset-test-utils" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0324df9ce91a9840632e865dd3272bd20162023856f1b189b7ae58afa5c6b61" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-timestamp", + "pallet-xcm", + "pallet-xcm-bridge-hub-router", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "staging-parachain-info", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + +[[package]] +name = "assets-common" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93438e31a4449fbeab87210931edc8cd156292354f1fc15f17d819ecded6bf25" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "impl-trait-for-tuples", + "log", + "pallet-asset-conversion", + "pallet-assets", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", +] + [[package]] name = "async-channel" version = "2.3.1" @@ -519,9 +794,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", @@ -560,9 +835,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.4" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel", "async-io", @@ -575,7 +850,6 @@ dependencies = [ "futures-lite", "rustix 0.38.42", "tracing", - "windows-sys 0.59.0", ] [[package]] @@ -598,9 +872,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -609,9 +883,9 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", @@ -626,9 +900,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -660,9 +934,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" @@ -677,7 +951,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "itoa", "matchit", @@ -690,7 +964,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tower 0.5.2", "tower-layer", @@ -713,72 +987,17 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", ] [[package]] -name = "axum" -version = "0.7.9" +name = "backoff" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.4.1", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "tokio", - "tower 0.5.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper 1.0.1", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "backoff" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ "getrandom", "instant", @@ -791,11 +1010,11 @@ version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.24.1", + "addr2line 0.24.2", "cfg-if", "libc", "miniz_oxide", - "object 0.36.4", + "object 0.36.5", "rustc-demangle", "windows-targets 0.52.6", ] @@ -861,6 +1080,16 @@ dependencies = [ "log", ] +[[package]] +name = "binary-merkle-tree" +version = "15.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" +dependencies = [ + "hash-db", + "log", +] + [[package]] name = "bincode" version = "1.3.3" @@ -872,15 +1101,30 @@ dependencies = [ [[package]] name = "bip39" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" dependencies = [ - "bitcoin_hashes 0.11.0", + "bitcoin_hashes 0.13.0", "serde", "unicode-normalization", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -888,10 +1132,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" [[package]] -name = "bitcoin_hashes" -version = "0.11.0" +name = "bitcoin-io" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" [[package]] name = "bitcoin_hashes" @@ -900,7 +1144,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals", - "hex-conservative", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", ] [[package]] @@ -923,6 +1177,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -1002,7 +1257,7 @@ dependencies = [ "hex", "http 1.2.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-named-pipe", "hyper-util", "hyperlocal-next", @@ -1034,9 +1289,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ "borsh-derive", "cfg_aliases", @@ -1044,9 +1299,9 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", @@ -1057,9 +1312,9 @@ dependencies = [ [[package]] name = "bounded-collections" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" +checksum = "3d077619e9c237a5d1875166f5e8033e8f6bff0c96f8caf81e1c2d7738c431bf" dependencies = [ "log", "parity-scale-codec", @@ -1067,6 +1322,281 @@ dependencies = [ "serde", ] +[[package]] +name = "bp-header-chain" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "890df97cea17ee61ff982466bb9e90cb6b1462adb45380999019388d05e4b92d" +dependencies = [ + "bp-runtime", + "finality-grandpa", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-messages" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efabf94339950b914ba87249497f1a0e35a73849934d164fecae4b275928cf6" +dependencies = [ + "bp-header-chain", + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", +] + +[[package]] +name = "bp-parachains" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9011e5c12c15caf3c4129a98f4f4916ea9165db8daf6ed85867c3106075f40df" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-polkadot" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa6277dd4333917ecfbcc35e9332a9f11682e0a506e76b617c336224660fce33" +dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", + "frame-support", + "sp-api", + "sp-std", +] + +[[package]] +name = "bp-polkadot-core" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345cf472bac11ef79d403e4846a666b7d22a13cd16d9c85b62cd6b5e16c4a042" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "frame-system", + "parity-scale-codec", + "parity-util-mem", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-relayers" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9465ad727e466d67d64244a1aa7bb19933a297913fdde34b8e9bda0a341bdeb" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-runtime", + "frame-support", + "frame-system", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "sp-std", +] + +[[package]] +name = "bp-runtime" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "746d9464f912b278f8a5e2400f10541f95da7fc6c7d688a2788b9a46296146ee" +dependencies = [ + "frame-support", + "frame-system", + "hash-db", + "impl-trait-for-tuples", + "log", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-state-machine 0.43.0", + "sp-std", + "sp-trie 37.0.0", + "trie-db 0.29.1", +] + +[[package]] +name = "bp-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e659078b54c0b6bd79896738212a305842ad37168976363233516754337826" +dependencies = [ + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "ed25519-dalek", + "finality-grandpa", + "parity-scale-codec", + "sp-application-crypto 38.0.0", + "sp-consensus-grandpa", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", +] + +[[package]] +name = "bp-xcm-bridge-hub" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6909117ca87cb93703742939d5f0c4c93e9646d9cda22262e9709d68c929999b" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bp-xcm-bridge-hub-router" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9284820ca704f5c065563cad77d2e3d069a23cc9cb3a29db9c0de8dd3b173a87" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b53c53d627e2da38f8910807944bf3121e154b5c0ac9e122995af9dfb13ed" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "pallet-message-queue", + "parity-scale-codec", + "scale-info", + "snowbridge-core", + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "sp-std", + "staging-xcm 14.2.0", +] + +[[package]] +name = "bridge-hub-test-utils" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0b3aa5fd8481a06ca16e47fd3d2d9c6abe76b27d922ec8980a853f242173b3" +dependencies = [ + "asset-test-utils", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "bp-xcm-bridge-hub", + "bridge-runtime-common", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-bridge-hub", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", + "sp-core 34.0.0", + "sp-io 38.0.0", + "sp-keyring", + "sp-runtime 39.0.2", + "sp-tracing 17.0.1", + "staging-xcm 14.2.0", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "bridge-runtime-common" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c639aa22de6e904156a3e8b0e6b9e6af790cb27a1299688cc07997e1ffe5b648" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-xcm-bridge-hub", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-transaction-payment", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-io 38.0.0", + "sp-runtime 39.0.2", + "sp-std", + "sp-trie 37.0.0", + "staging-xcm 14.2.0", + "tuplex", +] + [[package]] name = "brownstone" version = "1.1.0" @@ -1087,15 +1617,24 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", - "regex-automata 0.4.7", + "regex-automata 0.4.9", "serde", ] +[[package]] +name = "build-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" +dependencies = [ + "semver 0.6.0", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -1130,6 +1669,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "bytemuck" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" + [[package]] name = "byteorder" version = "1.5.0" @@ -1160,6 +1705,20 @@ dependencies = [ "serde", ] +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "cargo_metadata" version = "0.18.1" @@ -1168,7 +1727,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver", + "semver 1.0.23", "serde", "serde_json", "thiserror 1.0.69", @@ -1190,9 +1749,9 @@ dependencies = [ [[package]] name = "cargo_toml" -version = "0.20.4" +version = "0.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965" +checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0" dependencies = [ "serde", "toml 0.8.19", @@ -1215,6 +1774,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -1259,6 +1827,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -1285,9 +1854,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1303,9 +1872,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cliclack" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c827ccada848b64fba073b64518a7416d605ad70c594b5450b5ed1d97e3b5d4" +checksum = "6a80570d35684e725e9d2d4aaaf32bc0cbfcfb8539898f9afea3da0d2e5189e4" dependencies = [ "console", "indicatif", @@ -1322,14 +1891,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" @@ -1375,7 +1944,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -1398,6 +1967,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + [[package]] name = "const_env" version = "0.1.2" @@ -1444,7 +2033,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata", + "cargo_metadata 0.18.1", "clap", "colored", "contract-metadata", @@ -1452,11 +2041,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", "regex", - "rustc_version", - "semver", + "rustc_version 0.4.1", + "semver 1.0.23", "serde", "serde_json", "strum 0.26.3", @@ -1514,8 +2103,8 @@ version = "5.0.1" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", - "impl-serde", - "semver", + "impl-serde 0.4.0", + "semver 1.0.23", "serde", "serde_json", "url", @@ -1539,7 +2128,7 @@ dependencies = [ "nom", "nom-supreme", "parity-scale-codec", - "primitive-types", + "primitive-types 0.12.2", "scale-info", "serde", "serde_json", @@ -1590,13 +2179,57 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] +[[package]] +name = "cranelift-bforest" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220" +dependencies = [ + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "cranelift-isle", + "gimli 0.27.3", + "hashbrown 0.13.2", + "log", + "regalloc2 0.6.1", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8" + [[package]] name = "cranelift-entity" version = "0.95.1" @@ -1606,6 +2239,51 @@ dependencies = [ "serde", ] +[[package]] +name = "cranelift-frontend" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba" + +[[package]] +name = "cranelift-native" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00" +dependencies = [ + "cranelift-codegen", + "libc", + "target-lexicon", +] + +[[package]] +name = "cranelift-wasm" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3220489a3d928ad91e59dd7aeaa8b3de18afb554a6211213673a71c90737ac" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "itertools 0.10.5", + "log", + "smallvec", + "wasmparser 0.102.0", + "wasmtime-types", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -1615,6 +2293,25 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-queue" version = "0.3.11" @@ -2033,7 +2730,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version", + "rustc_version 0.4.1", "subtle", "zeroize", ] @@ -2059,6 +2756,7 @@ dependencies = [ "cxxbridge-cmd", "cxxbridge-flags", "cxxbridge-macro", + "foldhash", "link-cplusplus", ] @@ -2070,7 +2768,6 @@ checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" dependencies = [ "cc", "codespan-reporting", - "once_cell", "proc-macro2", "quote", "scratch", @@ -2259,9 +2956,9 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", @@ -2341,6 +3038,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs" version = "5.0.1" @@ -2362,6 +3069,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[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", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -2381,18 +3099,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" dependencies = [ "common-path", "derive-syn-parse", @@ -2424,6 +3142,12 @@ dependencies = [ "shared_child", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clonable" version = "0.9.0" @@ -2554,9 +3278,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -2602,6 +3326,19 @@ dependencies = [ "regex", ] +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + [[package]] name = "env_logger" version = "0.11.5" @@ -2643,6 +3380,47 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6" +[[package]] +name = "ethabi-decode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d398648d65820a727d6a81e58b962f874473396a047e4c30bafe3240953417" +dependencies = [ + "ethereum-types", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.2", + "scale-info", + "uint 0.9.5", +] + [[package]] name = "event-listener" version = "5.3.1" @@ -2728,6 +3506,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "file-per-thread-logger" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" +dependencies = [ + "env_logger 0.10.2", + "log", +] + [[package]] name = "filetime" version = "0.2.25" @@ -2770,9 +3558,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -2793,6 +3581,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -3121,9 +3915,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -3136,9 +3930,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -3146,15 +3940,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -3164,15 +3958,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand", "futures-core", @@ -3183,9 +3977,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -3194,15 +3988,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -3212,9 +4006,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -3228,6 +4022,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -3260,22 +4063,42 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator", + "fallible-iterator 0.2.0", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.31.0" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +dependencies = [ + "fallible-iterator 0.3.0", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "git2" @@ -3350,9 +4173,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", @@ -3411,6 +4234,17 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "heck" version = "0.4.1" @@ -3447,6 +4281,21 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec 0.7.6", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + [[package]] name = "hkdf" version = "0.12.4" @@ -3567,7 +4416,7 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" name = "httparse" version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -3592,9 +4441,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -3616,9 +4465,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", @@ -3642,7 +4491,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ "hex", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -3658,7 +4507,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.31", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -3676,7 +4525,7 @@ dependencies = [ "http 1.2.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -3689,7 +4538,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.30", + "hyper 0.14.31", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -3702,7 +4551,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -3716,7 +4565,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "native-tls", "tokio", @@ -3726,16 +4575,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.1", "pin-project-lite", "socket2", "tokio", @@ -3751,7 +4600,7 @@ checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" dependencies = [ "hex", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "pin-project-lite", "tokio", @@ -3760,9 +4609,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3935,6 +4784,24 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67aa010c1e3da95bf151bd8b4c059b2ed7e75387cdb969b4f8f2723a43f9941" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + [[package]] name = "impl-serde" version = "0.4.0" @@ -3945,8 +4812,8 @@ dependencies = [ ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "impl-serde" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ @@ -3972,7 +4839,6 @@ checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", ] [[package]] @@ -3999,7 +4865,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "serde", ] @@ -4011,15 +4877,15 @@ checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] @@ -4038,11 +4904,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d273f2aa983d04a6476d3c5ac76ddbef07555664b88f923996e7465e261dda48" dependencies = [ "blake2", - "derive_more", + "derive_more 1.0.0", "ink_primitives", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", ] @@ -4056,24 +4922,25 @@ dependencies = [ "blake2", "cfg-if", "const_env", - "derive_more", + "derive_more 1.0.0", "ink_allocator", "ink_engine", "ink_prelude", "ink_primitives", "ink_storage_traits", "num-traits", - "pallet-contracts-uapi-next", + "pallet-contracts-uapi 9.0.0", "parity-scale-codec", "paste", "rlibc", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "schnorrkel", - "secp256k1", + "secp256k1 0.28.2", "sha2 0.10.8", "sha3", + "staging-xcm 11.0.0", "static_assertions", ] @@ -4083,8 +4950,8 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27135c651274087ba0578d2c07866c31d8dd481ae8de5bb7295fe3931491aa80" dependencies = [ - "derive_more", - "impl-serde", + "derive_more 1.0.0", + "impl-serde 0.4.0", "ink_prelude", "ink_primitives", "linkme", @@ -4109,11 +4976,11 @@ version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a530c1b352a53176ea718f3a65f15003e54e0474ec12353ea0e0e5bb60b25741" dependencies = [ - "derive_more", + "derive_more 1.0.0", "ink_prelude", "parity-scale-codec", - "scale-decode 0.10.0", - "scale-encode 0.5.0", + "scale-decode 0.11.1", + "scale-encode 0.6.0", "scale-info", "xxhash-rust", ] @@ -4171,9 +5038,20 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-terminal" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] [[package]] name = "is_terminal_polyfill" @@ -4194,7 +5072,16 @@ dependencies = [ name = "itertools" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -4210,9 +5097,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -4224,7 +5111,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", ] @@ -4267,7 +5154,7 @@ checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" dependencies = [ "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4280,7 +5167,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4363,11 +5250,24 @@ dependencies = [ "url", ] +[[package]] +name = "jsonrpsee-ws-client" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" +dependencies = [ + "http 1.2.0", + "jsonrpsee-client-transport 0.24.7", + "jsonrpsee-core 0.24.7", + "jsonrpsee-types 0.24.7", + "url", +] + [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -4400,6 +5300,16 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-hash" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1b8590eb6148af2ea2d75f38e7d29f5ca970d5a4df456b3ef19b8b415d0264" +dependencies = [ + "primitive-types 0.13.1", + "tiny-keccak", +] + [[package]] name = "kube" version = "0.87.2" @@ -4426,7 +5336,7 @@ dependencies = [ "home", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-rustls 0.24.2", "hyper-timeout", "jsonpath-rust", @@ -4437,11 +5347,11 @@ dependencies = [ "rand", "rustls 0.21.12", "rustls-pemfile 1.0.4", - "secrecy", + "secrecy 0.8.0", "serde", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-tungstenite", "tokio-util", @@ -4464,7 +5374,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4487,7 +5397,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -4527,9 +5437,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libp2p" @@ -4551,7 +5461,7 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4601,16 +5511,16 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror", - "unsigned-varint", + "thiserror 1.0.69", + "unsigned-varint 0.7.2", "void", ] [[package]] name = "libp2p-identity" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" +checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" dependencies = [ "bs58", "ed25519-dalek", @@ -4619,7 +5529,7 @@ dependencies = [ "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", "tracing", "zeroize", ] @@ -4741,18 +5651,18 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c943daedff228392b791b33bba32e75737756e80a613e32e246c6ce9cbab20a" +checksum = "566336154b9e58a4f055f6dd4cbab62c7dc0826ce3c0a04e63b2d2ecd784cdae" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb26336e6dc7cc76e7927d2c9e7e3bb376d7af65a6f56a0b16c47d18a9b1abc5" +checksum = "edbe595006d355eaf9ae11db92707d4338cd2384d16866131cc1afdbdd35d8d9" dependencies = [ "proc-macro2", "quote", @@ -4804,11 +5714,20 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.12.3", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", ] [[package]] @@ -4991,9 +5910,9 @@ dependencies = [ [[package]] name = "mockito" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" +checksum = "652cd6d169a36eaf9d1e6bce1a221130439a966d7f27858af66a33a66e9c4ee2" dependencies = [ "assert-json-diff", "bytes", @@ -5002,7 +5921,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-util", "log", "rand", @@ -5013,11 +5932,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "multi-stash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" + [[package]] name = "multiaddr" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" dependencies = [ "arrayref", "byteorder", @@ -5028,7 +5953,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.8.0", "url", ] @@ -5050,7 +5975,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint", + "unsigned-varint 0.8.0", ] [[package]] @@ -5064,7 +5989,22 @@ dependencies = [ "log", "pin-project", "smallvec", - "unsigned-varint", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "nalgebra" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" +dependencies = [ + "approx", + "matrixmultiply", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", ] [[package]] @@ -5136,6 +6076,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -5146,6 +6096,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -5200,6 +6159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -5232,18 +6192,27 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -5253,9 +6222,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -5285,18 +6254,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.2+3.3.2" +version = "300.4.1+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -7380,11 +8349,17 @@ checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes 0.13.0", "rand", - "rand_core 0.5.1", + "rand_core 0.6.4", "serde", "unicode-normalization", ] +[[package]] +name = "parity-bytes" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" + [[package]] name = "parity-scale-codec" version = "3.6.12" @@ -7418,6 +8393,41 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "parity-util-mem" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d32c34f4f5ca7f9196001c0aba5a1f9a5a12382c8944b8b0f90233282d1e8f8" +dependencies = [ + "cfg-if", + "ethereum-types", + "hashbrown 0.12.3", + "impl-trait-for-tuples", + "lru 0.8.1", + "parity-util-mem-derive", + "parking_lot", + "primitive-types 0.12.2", + "smallvec", + "winapi", +] + +[[package]] +name = "parity-util-mem-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" +dependencies = [ + "proc-macro2", + "syn 1.0.109", + "synstructure 0.12.6", +] + +[[package]] +name = "parity-wasm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" + [[package]] name = "parking" version = "2.2.1" @@ -7471,6 +8481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", + "hmac 0.12.1", "password-hash", ] @@ -7537,18 +8548,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", @@ -7557,9 +8568,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -7590,7 +8601,7 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" @@ -8125,6 +9136,19 @@ name = "polkavm-common" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" +dependencies = [ + "log", + "polkavm-assembler 0.10.0", +] [[package]] name = "polkavm-derive" @@ -8154,6 +9178,15 @@ dependencies = [ "polkavm-derive-impl-macro 0.9.0", ] +[[package]] +name = "polkavm-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" +dependencies = [ + "polkavm-derive-impl-macro 0.10.0", +] + [[package]] name = "polkavm-derive-impl" version = "0.5.0" @@ -8278,7 +9311,59 @@ checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" name = "polling" version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" +dependencies = [ + "polkavm-derive-impl 0.10.0", + "syn 2.0.90", +] + +[[package]] +name = "polkavm-linker" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.32.2", + "polkavm-common 0.9.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linker" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.36.5", + "polkavm-common 0.10.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linux-raw" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" + +[[package]] +name = "polkavm-linux-raw" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", @@ -8300,6 +9385,18 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "pop-cli" version = "0.5.0" @@ -8312,7 +9409,7 @@ dependencies = [ "console", "dirs", "duct", - "env_logger", + "env_logger 0.11.5", "git2", "os_info", "pop-common", @@ -8327,8 +9424,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tempfile", "tokio", "tower-http 0.6.2", @@ -8356,11 +9453,11 @@ dependencies = [ "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "toml 0.5.11", "toml_edit 0.22.22", @@ -8388,11 +9485,11 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", - "subxt-signer", + "subxt 0.37.0", + "subxt-signer 0.37.0", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-test", "url", @@ -8414,18 +9511,18 @@ dependencies = [ "pop-common", "reqwest 0.12.9", "scale-info", - "scale-value", + "scale-value 0.16.3", "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "subxt", + "subxt 0.37.0", "symlink", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-test", - "toml_edit 0.22.20", + "toml_edit 0.22.22", "url", "walkdir", "zombienet-sdk", @@ -8436,22 +9533,22 @@ name = "pop-telemetry" version = "0.5.0" dependencies = [ "dirs", - "env_logger", + "env_logger 0.11.5", "log", "mockito", - "reqwest 0.12.7", + "reqwest 0.12.9", "serde", "serde_json", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", ] [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -8500,9 +9597,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", "syn 2.0.90", @@ -8515,10 +9612,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", - "impl-codec", - "impl-serde", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15600a7d856470b7d278b3fe0e311fe28c2526348549f8ef2ff7db3299c87f5" +dependencies = [ + "fixed-hash", + "impl-codec 0.7.0", + "impl-serde 0.5.0", "scale-info", - "uint", + "uint 0.10.0", ] [[package]] @@ -8537,36 +9648,69 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.20", + "toml_edit 0.22.22", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ - "proc-macro-error-attr", + "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", + "syn 2.0.90", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-warning" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" dependencies = [ "proc-macro2", "quote", - "version_check", + "syn 2.0.90", ] [[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" +name = "proc-macro2" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ @@ -8599,18 +9743,38 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + [[package]] name = "psm" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" dependencies = [ "cc", ] @@ -8635,6 +9799,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quick-protobuf" version = "0.8.1" @@ -8732,9 +9902,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] @@ -8747,7 +9917,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8797,14 +9967,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -8818,13 +9988,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -8835,9 +10005,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rend" @@ -8862,7 +10032,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -8890,9 +10060,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.1", "bytes", @@ -8903,7 +10073,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.1", "hyper-rustls 0.27.3", "hyper-tls 0.6.0", "hyper-util", @@ -8915,11 +10085,11 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "system-configuration 0.6.1", "tokio", "tokio-native-tls", @@ -9088,13 +10258,31 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver", + "semver 1.0.23", ] [[package]] @@ -9140,7 +10328,7 @@ dependencies = [ name = "rustls" version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "log", "once_cell", @@ -9170,7 +10358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -9187,19 +10375,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-platform-verifier" @@ -9212,7 +10399,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.13", + "rustls 0.23.19", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -9251,9 +10438,31 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ruzstd" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" +dependencies = [ + "byteorder", + "derive_more 0.99.18", +] [[package]] name = "ruzstd" @@ -9282,6 +10491,33 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "safe-mix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" +dependencies = [ + "rustc_version 0.2.3", +] + +[[package]] +name = "safe_arch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + [[package]] name = "same-file" version = "1.0.6" @@ -9291,14 +10527,95 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "sc-allocator" +version = "29.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b975ee3a95eaacb611e7b415737a7fa2db4d8ad7b880cc1b97371b04e95c7903" +dependencies = [ + "log", + "sp-core 34.0.0", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", +] + +[[package]] +name = "sc-executor" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f0cc0a3728fd033589183460c5a49b2e7545d09dc89a098216ef9e9aadcd9dc" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sc-executor-common", + "sc-executor-polkavm", + "sc-executor-wasmtime", + "schnellru", + "sp-api", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-io 38.0.0", + "sp-panic-handler", + "sp-runtime-interface 28.0.0", + "sp-trie 37.0.0", + "sp-version", + "sp-wasm-interface 21.0.1", + "tracing", +] + +[[package]] +name = "sc-executor-common" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3b703a33dcb7cddf19176fdf12294b9a6408125836b0f4afee3e6969e7f190" +dependencies = [ + "polkavm 0.9.3", + "sc-allocator", + "sp-maybe-compressed-blob", + "sp-wasm-interface 21.0.1", + "thiserror 1.0.69", + "wasm-instrument", +] + +[[package]] +name = "sc-executor-polkavm" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fe58d9cacfab73e5595fa84b80f7bd03efebe54a0574daaeb221a1d1f7ab80" +dependencies = [ + "log", + "polkavm 0.9.3", + "sc-executor-common", + "sp-wasm-interface 21.0.1", +] + +[[package]] +name = "sc-executor-wasmtime" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd498f2f77ec1f861c30804f5bfd796d4afcc8ce44ea1f11bfbe2847551d161" +dependencies = [ + "anyhow", + "cfg-if", + "libc", + "log", + "parking_lot", + "rustix 0.36.17", + "sc-allocator", + "sc-executor-common", + "sp-runtime-interface 28.0.0", + "sp-wasm-interface 21.0.1", + "wasmtime", +] + [[package]] name = "scale-bits" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "036575c29af9b6e4866ffb7fa055dbf623fe7a9cc159b33786de6013a6969d89" +checksum = "662d10dcd57b1c2a3c41c9cf68f71fb09747ada1ea932ad961aca7e2ca28315f" dependencies = [ "parity-scale-codec", - "scale-info", + "scale-type-resolver 0.1.1", ] [[package]] @@ -9309,21 +10626,21 @@ checksum = "e57b1e7f6b65ed1f04e79a85a57d755ad56d76fdf1e9bddcc9ae14f71fcdcf54" dependencies = [ "parity-scale-codec", "scale-info", - "scale-type-resolver", + "scale-type-resolver 0.2.0", "serde", ] [[package]] name = "scale-decode" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7caaf753f8ed1ab4752c6afb20174f03598c664724e0e32628e161c21000ff76" +checksum = "afc79ba56a1c742f5aeeed1f1801f3edf51f7e818f0a54582cac6f131364ea7b" dependencies = [ - "derive_more", + "derive_more 0.99.18", "parity-scale-codec", - "scale-bits 0.4.0", - "scale-decode-derive 0.10.0", - "scale-info", + "scale-bits 0.5.0", + "scale-decode-derive 0.11.1", + "scale-type-resolver 0.1.1", "smallvec", ] @@ -9344,12 +10661,11 @@ dependencies = [ [[package]] name = "scale-decode-derive" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3475108a1b62c7efd1b5c65974f30109a598b2f45f23c9ae030acb9686966db" +checksum = "5398fdb3c7bea3cb419bac4983aadacae93fe1a7b5f693f4ebd98c3821aad7a5" dependencies = [ "darling 0.14.4", - "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -9367,16 +10683,28 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "scale-decode-derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "scale-encode" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d70cb4b29360105483fac1ed567ff95d65224a14dd275b6303ed0a654c78de5" +checksum = "628800925a33794fb5387781b883b5e14d130fece9af5a63613867b8de07c5c7" dependencies = [ - "derive_more", + "derive_more 0.99.18", "parity-scale-codec", - "scale-encode-derive 0.5.0", - "scale-info", + "scale-encode-derive 0.6.0", + "scale-type-resolver 0.1.1", "smallvec", ] @@ -9397,9 +10725,9 @@ dependencies = [ [[package]] name = "scale-encode-derive" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995491f110efdc6bea96d6a746140e32bfceb4ea47510750a5467295a4707a25" +checksum = "7a304e1af7cdfbe7a24e08b012721456cc8cecdedadc14b3d10513eada63233c" dependencies = [ "darling 0.14.4", "proc-macro-crate 1.3.1", @@ -9423,13 +10751,13 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "bitvec", "cfg-if", - "derive_more", + "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", "schemars", @@ -9438,9 +10766,9 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", @@ -9502,9 +10830,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -9575,6 +10903,18 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" +[[package]] +name = "scrypt" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" +dependencies = [ + "password-hash", + "pbkdf2", + "salsa20", + "sha2 0.10.8", +] + [[package]] name = "sct" version = "0.7.1" @@ -9612,7 +10952,18 @@ version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "secp256k1-sys", + "secp256k1-sys 0.9.2", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes 0.14.0", + "rand", + "secp256k1-sys 0.10.1", ] [[package]] @@ -9624,6 +10975,15 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + [[package]] name = "secrecy" version = "0.8.0" @@ -9634,6 +10994,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "secrecy" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" +dependencies = [ + "zeroize", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -9649,13 +11018,40 @@ dependencies = [ ] [[package]] -name = "security-framework-sys" -version = "2.11.1" +name = "security-framework-sys" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ - "core-foundation-sys", - "libc", + "semver-parser 0.10.3", ] [[package]] @@ -9676,6 +11072,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd31f59f6fe2b0c055371bb2f16d7f0aa7d8881676c04a55b1596d1a17cd10a4" +dependencies = [ + "serde", +] + [[package]] name = "serde-value" version = "0.7.0" @@ -9719,9 +11124,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "indexmap 2.7.0", "itoa", @@ -9753,9 +11158,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -9774,9 +11179,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", @@ -9928,11 +11333,24 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simba" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "similar" @@ -9961,6 +11379,24 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "slot-range-helper" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e34f1146a457a5c554dedeae6c7273aa54c3b031f3e9eb0abd037b5511e2ce9" +dependencies = [ + "enumn", + "parity-scale-codec", + "paste", + "sp-runtime 39.0.2", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -10005,7 +11441,7 @@ dependencies = [ "bs58", "chacha20", "crossbeam-queue", - "derive_more", + "derive_more 0.99.18", "ed25519-zebra 4.0.3", "either", "event-listener", @@ -10028,7 +11464,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd", + "ruzstd 0.5.0", "schnorrkel", "serde", "serde_json", @@ -10039,7 +11475,61 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi", + "wasmi 0.31.2", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "smoldot" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +dependencies = [ + "arrayvec 0.7.6", + "async-lock", + "atomic-take", + "base64 0.22.1", + "bip39", + "blake2-rfc", + "bs58", + "chacha20", + "crossbeam-queue", + "derive_more 0.99.18", + "ed25519-zebra 4.0.3", + "either", + "event-listener 5.3.1", + "fnv", + "futures-lite", + "futures-util", + "hashbrown 0.14.5", + "hex", + "hmac 0.12.1", + "itertools 0.13.0", + "libm", + "libsecp256k1", + "merlin", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2", + "pin-project", + "poly1305", + "rand", + "rand_chacha", + "ruzstd 0.6.0", + "schnorrkel", + "serde", + "serde_json", + "sha2 0.10.8", + "sha3", + "siphasher", + "slab", + "smallvec", + "soketto 0.8.1", + "twox-hash", + "wasmi 0.32.3", "x25519-dalek", "zeroize", ] @@ -10476,11 +11966,24 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-io", + "sp-core 31.0.0", + "sp-io 33.0.0", "sp-std", ] +[[package]] +name = "sp-application-crypto" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8133012faa5f75b2f0b1619d9f720c1424ac477152c143e5f7dbde2fe1a958" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 34.0.0", + "sp-io 38.0.0", +] + [[package]] name = "sp-arithmetic" version = "26.0.0" @@ -10637,7 +12140,7 @@ dependencies = [ "futures", "hash-db", "hash256-std-hasher", - "impl-serde", + "impl-serde 0.4.0", "itertools 0.10.5", "k256", "libsecp256k1", @@ -10647,27 +12150,104 @@ dependencies = [ "parity-scale-codec", "parking_lot", "paste", - "primitive-types", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.27.0", + "sp-runtime-interface 26.0.0", + "sp-std", + "sp-storage 20.0.0", + "ss58-registry", + "substrate-bip39 0.5.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c961a5e33fb2962fa775c044ceba43df9c6f917e2c35d63bfe23738468fa76a7" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 4.0.3", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.11.0", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", "rand", "scale-info", "schnorrkel", - "secp256k1", - "secrecy", + "secp256k1 0.28.2", + "secrecy 0.8.0", "serde", "sp-crypto-hashing", "sp-debug-derive", - "sp-externalities", - "sp-runtime-interface", + "sp-externalities 0.29.0", + "sp-runtime-interface 28.0.0", "sp-std", - "sp-storage", + "sp-storage 21.0.0", "ss58-registry", - "substrate-bip39", - "thiserror", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", "tracing", "w3f-bls", "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f812cb2dff962eb378c507612a50f1c59f52d92eb97b710f35be3c2346a3cd7" +dependencies = [ + "sp-crypto-hashing", +] + +[[package]] +name = "sp-crypto-ec-utils" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acb24f8a607a48a87f0ee4c090fc5d577eee49ff39ced6a3c491e06eca03c37" +dependencies = [ + "ark-bls12-377", + "ark-bls12-377-ext", + "ark-bls12-381", + "ark-bls12-381-ext", + "ark-bw6-761", + "ark-bw6-761-ext", + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ed-on-bls12-377-ext", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ed-on-bls12-381-bandersnatch-ext", + "ark-scale", + "sp-runtime-interface 28.0.0", +] + [[package]] name = "sp-crypto-hashing" version = "0.1.0" @@ -10713,7 +12293,45 @@ dependencies = [ "environmental", "parity-scale-codec", "sp-std", - "sp-storage", + "sp-storage 20.0.0", +] + +[[package]] +name = "sp-externalities" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a904407d61cb94228c71b55a9d3708e9d6558991f9e83bd42bd91df37a159d30" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a646ed222fd86d5680faa4a8967980eb32f644cae6c8523e1c689a6deda3e8" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde_json", + "sp-api", + "sp-runtime 39.0.2", +] + +[[package]] +name = "sp-inherents" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afffbddc380d99a90c459ba1554bbbc01d62e892de9f1485af6940b89c4c0d57" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 39.0.2", + "thiserror 1.0.69", ] [[package]] @@ -10729,20 +12347,58 @@ dependencies = [ "parity-scale-codec", "polkavm-derive 0.9.1", "rustversion", - "secp256k1", - "sp-core", + "secp256k1 0.28.2", + "sp-core 31.0.0", "sp-crypto-hashing", - "sp-externalities", - "sp-keystore", - "sp-runtime-interface", - "sp-state-machine", + "sp-externalities 0.27.0", + "sp-keystore 0.37.0", + "sp-runtime-interface 26.0.0", + "sp-state-machine 0.38.0", "sp-std", - "sp-tracing", - "sp-trie", + "sp-tracing 16.0.0", + "sp-trie 32.0.0", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-io" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ef7eb561bb4839cc8424ce58c5ea236cbcca83f26fcc0426d8decfe8aa97d4" +dependencies = [ + "bytes", + "docify", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "rustversion", + "secp256k1 0.28.2", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-externalities 0.29.0", + "sp-keystore 0.40.0", + "sp-runtime-interface 28.0.0", + "sp-state-machine 0.43.0", + "sp-tracing 17.0.1", + "sp-trie 37.0.0", "tracing", "tracing-core", ] +[[package]] +name = "sp-keyring" +version = "39.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" +dependencies = [ + "sp-core 34.0.0", + "sp-runtime 39.0.2", + "strum 0.26.3", +] + [[package]] name = "sp-keystore" version = "0.37.0" @@ -10858,25 +12514,52 @@ dependencies = [ name = "sp-runtime" version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid", + "sp-application-crypto 34.0.0", + "sp-arithmetic", + "sp-core 32.0.0", + "sp-io 34.0.0", + "sp-std", + "sp-weights 30.0.0", +] + +[[package]] +name = "sp-runtime" +version = "39.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" dependencies = [ "docify", "either", "hash256-std-hasher", "impl-trait-for-tuples", "log", + "num-traits", "parity-scale-codec", "paste", "rand", "scale-info", "serde", "simple-mermaid", - "sp-application-crypto 34.0.0", - "sp-arithmetic", - "sp-core 32.0.0", - "sp-io 34.0.0", + "sp-application-crypto 38.0.0", + "sp-arithmetic 26.0.0", + "sp-core 34.0.0", + "sp-io 38.0.0", "sp-std", - "sp-weights", + "sp-weights 31.0.0", + "tracing", ] [[package]] @@ -10916,13 +12599,33 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "polkavm-derive 0.8.0", - "primitive-types", - "sp-externalities", + "primitive-types 0.12.2", + "sp-externalities 0.27.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 20.0.0", + "sp-tracing 16.0.0", + "sp-wasm-interface 20.0.0", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985eb981f40c689c6a0012c937b68ed58dabb4341d06f2dfe4dfd5ed72fa4017" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.29.0", "sp-runtime-interface-proc-macro", "sp-std", - "sp-storage", - "sp-tracing", - "sp-wasm-interface", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", "static_assertions", ] @@ -10995,14 +12698,60 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core", - "sp-externalities", + "sp-core 31.0.0", + "sp-externalities 0.27.0", "sp-panic-handler", "sp-std", - "sp-trie", - "thiserror", + "sp-trie 32.0.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.28.0", +] + +[[package]] +name = "sp-state-machine" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "930104d6ae882626e8880d9b1578da9300655d337a3ffb45e130c608b6c89660" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot", + "rand", + "smallvec", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "sp-panic-handler", + "sp-trie 37.0.0", + "thiserror 1.0.69", "tracing", - "trie-db", + "trie-db 0.29.1", +] + +[[package]] +name = "sp-statement-store" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c219bc34ef4d1f9835f3ed881f965643c32034fcc030eb33b759dadbc802c1c2" +dependencies = [ + "aes-gcm", + "curve25519-dalek 4.1.3", + "ed25519-dalek", + "hkdf", + "parity-scale-codec", + "rand", + "scale-info", + "sha2 0.10.8", + "sp-api", + "sp-application-crypto 38.0.0", + "sp-core 34.0.0", + "sp-crypto-hashing", + "sp-externalities 0.29.0", + "sp-runtime 39.0.2", + "sp-runtime-interface 28.0.0", + "thiserror 1.0.69", + "x25519-dalek", ] [[package]] @@ -11017,7 +12766,7 @@ version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dba5791cb3978e95daf99dad919ecb3ec35565604e88cd38d805d9d4981e8bd" dependencies = [ - "impl-serde", + "impl-serde 0.4.0", "parity-scale-codec", "ref-cast", "serde", @@ -11025,6 +12774,32 @@ dependencies = [ "sp-std", ] +[[package]] +name = "sp-storage" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99c82989b3a4979a7e1ad848aad9f5d0b4388f1f454cc131766526601ab9e8f8" +dependencies = [ + "impl-serde 0.4.0", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive", +] + +[[package]] +name = "sp-timestamp" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a1cb4df653d62ccc0dbce1db45d1c9443ec60247ee9576962d24da4c9c6f07" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime 39.0.2", + "thiserror 1.0.69", +] + [[package]] name = "sp-tracing" version = "16.0.0" @@ -11091,8 +12866,62 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core", - "sp-externalities", + "sp-core 31.0.0", + "sp-externalities 0.27.0", + "sp-std", + "sp-version-proc-macro", + "thiserror 1.0.69", +] + +[[package]] +name = "sp-version-proc-macro" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aee8f6730641a65fcf0c8f9b1e448af4b3bb083d08058b47528188bccc7b7a7" +dependencies = [ + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sp-trie" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6282aef9f4b6ecd95a67a45bcdb67a71f4a4155c09a53c10add4ffe823db18cd" +dependencies = [ + "ahash 0.8.11", + "hash-db", + "lazy_static", + "memory-db", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "rand", + "scale-info", + "schnellru", + "sp-core 34.0.0", + "sp-externalities 0.29.0", + "thiserror 1.0.69", + "tracing", + "trie-db 0.29.1", + "trie-root", +] + +[[package]] +name = "sp-version" +version = "37.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d521a405707b5be561367cd3d442ff67588993de24062ce3adefcf8437ee9fe1" +dependencies = [ + "impl-serde 0.4.0", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime 39.0.2", "sp-std", "sp-version-proc-macro", "thiserror 1.0.69", @@ -11124,6 +12953,19 @@ dependencies = [ "wasmtime", ] +[[package]] +name = "sp-wasm-interface" +version = "21.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b066baa6d57951600b14ffe1243f54c47f9c23dd89c262e17ca00ae8dca58be9" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "wasmtime", +] + [[package]] name = "sp-weights" version = "31.0.0" @@ -11135,7 +12977,22 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic", + "sp-arithmetic 25.0.0", + "sp-debug-derive", +] + +[[package]] +name = "sp-weights" +version = "31.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" +dependencies = [ + "bounded-collections", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 26.0.0", "sp-debug-derive", ] @@ -11157,9 +13014,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.50.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" dependencies = [ "Inflector", "num-format", @@ -11170,6 +13027,29 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "ssz_rs" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057291e5631f280978fa9c8009390663ca4613359fc1318e36a8c24c392f6d1f" +dependencies = [ + "bitvec", + "num-bigint", + "sha2 0.9.9", + "ssz_rs_derive", +] + +[[package]] +name = "ssz_rs_derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -11279,6 +13159,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string-interner" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "serde", +] + [[package]] name = "strsim" version = "0.10.0" @@ -11345,12 +13236,83 @@ dependencies = [ "zeroize", ] -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - +[[package]] +name = "substrate-bip39" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca58ffd742f693dc13d69bdbb2e642ae239e0053f6aab3b104252892f856700a" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "schnorrkel", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "substrate-wasm-builder" +version = "24.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf035ffe7335fb24053edfe4d0a5780250eda772082a1b80ae25835dd4c09265" +dependencies = [ + "build-helper", + "cargo_metadata 0.15.4", + "console", + "filetime", + "jobserver", + "parity-wasm", + "polkavm-linker 0.9.2", + "sp-maybe-compressed-blob", + "strum 0.26.3", + "tempfile", + "toml 0.8.19", + "walkdir", + "wasm-opt", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subxt" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" +dependencies = [ + "async-trait", + "derive-where", + "either", + "frame-metadata 17.0.0", + "futures", + "hex", + "impl-serde 0.5.0", + "jsonrpsee", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types 0.13.1", + "scale-bits 0.6.0", + "scale-decode 0.14.0", + "scale-encode 0.8.0", + "scale-info", + "scale-value 0.16.3", + "serde", + "serde_json", + "subxt-core", + "subxt-lightclient", + "subxt-macro", + "subxt-metadata", + "thiserror 1.0.69", + "tokio", + "tokio-util", + "tracing", + "url", + "wasm-bindgen-futures", + "web-time", +] + [[package]] name = "subxt" version = "0.38.0" @@ -11364,7 +13326,7 @@ dependencies = [ "futures", "hex", "impl-serde 0.5.0", - "jsonrpsee", + "jsonrpsee 0.24.7", "parity-scale-codec", "polkadot-sdk", "primitive-types 0.13.1", @@ -11372,13 +13334,13 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value", + "scale-value 0.17.0", "serde", "serde_json", - "subxt-core", - "subxt-lightclient", - "subxt-macro", - "subxt-metadata", + "subxt-core 0.38.0", + "subxt-lightclient 0.38.0", + "subxt-macro 0.38.0", + "subxt-metadata 0.38.0", "thiserror 1.0.69", "tokio", "tokio-util", @@ -11495,6 +13457,20 @@ dependencies = [ "scale-info", ] +[[package]] +name = "subxt-metadata" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" +dependencies = [ + "frame-decode", + "frame-metadata 17.0.0", + "hashbrown 0.14.5", + "parity-scale-codec", + "polkadot-sdk", + "scale-info", +] + [[package]] name = "subxt-signer" version = "0.38.0" @@ -11562,12 +13538,12 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "syn-solidity" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" dependencies = [ - "proc-macro-error", + "paste", "proc-macro2", "quote", "syn 2.0.90", @@ -11581,9 +13557,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -11661,9 +13637,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.41" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -11678,9 +13654,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -11714,6 +13690,22 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +[[package]] +name = "testnet-parachains-constants" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bceae6f7c89d47daff6c7e05f712551a01379f61b07d494661941144878589" +dependencies = [ + "cumulus-primitives-core", + "frame-support", + "polkadot-core-primitives", + "rococo-runtime-constants", + "smallvec", + "sp-runtime 39.0.2", + "staging-xcm 14.2.0", + "westend-runtime-constants", +] + [[package]] name = "textwrap" version = "0.16.1" @@ -11722,14 +13714,14 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl 1.0.69", ] @@ -11745,9 +13737,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -11806,6 +13798,15 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -11840,7 +13841,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.2", + "mio 1.0.3", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -11972,7 +13973,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -11999,15 +14000,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.20", ] [[package]] @@ -12103,9 +14104,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -12115,9 +14116,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -12126,9 +14127,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -12145,6 +14146,17 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-serde" version = "0.1.3" @@ -12164,7 +14176,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers", + "matchers 0.0.1", "regex", "serde", "serde_json", @@ -12173,7 +14185,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-serde", ] @@ -12209,6 +14221,18 @@ dependencies = [ "smallvec", ] +[[package]] +name = "trie-db" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" +dependencies = [ + "hash-db", + "log", + "rustc-hex", + "smallvec", +] + [[package]] name = "trie-root" version = "0.18.0" @@ -12224,6 +14248,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + [[package]] name = "tungstenite" version = "0.20.1" @@ -12238,11 +14268,17 @@ dependencies = [ "log", "rand", "sha1", - "thiserror", + "thiserror 1.0.69", "url", "utf-8", ] +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + [[package]] name = "twox-hash" version = "1.6.3" @@ -12263,9 +14299,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -12280,19 +14316,34 @@ dependencies = [ ] [[package]] -name = "unicase" -version = "2.7.0" +name = "uint" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" dependencies = [ - "version_check", + "byteorder", + "crunchy", + "hex", + "static_assertions", ] +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicase" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" + [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-linebreak" @@ -12311,15 +14362,21 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -12343,6 +14400,12 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" + [[package]] name = "untrusted" version = "0.9.0" @@ -12387,9 +14450,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] @@ -12430,15 +14493,15 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" +checksum = "70a3028804c8bbae2a97a15b71ffc0e308c4b01a520994aafa77d56e94e19024" dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff", - "ark-serialize", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", "ark-serialize-derive", "arrayref", "constcat", @@ -12448,7 +14511,7 @@ dependencies = [ "rand_core 0.6.4", "sha2 0.10.8", "sha3", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -12563,6 +14626,15 @@ dependencies = [ "wasmparser 0.207.0", ] +[[package]] +name = "wasm-instrument" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a47ecb37b9734d1085eaa5ae1a81e60801fd8c28d4cabdd8aedb982021918bc" +dependencies = [ + "parity-wasm", +] + [[package]] name = "wasm-opt" version = "0.116.1" @@ -12574,7 +14646,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror", + "thiserror 1.0.69", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -12631,6 +14703,29 @@ dependencies = [ "string-interner", ] +[[package]] +name = "wasmi_collections" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" +dependencies = [ + "ahash 0.8.11", + "hashbrown 0.14.5", + "string-interner", +] + +[[package]] +name = "wasmi_core" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmi_core" version = "0.32.3" @@ -12692,9 +14787,12 @@ dependencies = [ "once_cell", "paste", "psm", + "rayon", "serde", "target-lexicon", "wasmparser 0.102.0", + "wasmtime-cache", + "wasmtime-cranelift", "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", @@ -12710,6 +14808,63 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "wasmtime-cache" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86437fa68626fe896e5afc69234bb2b5894949083586535f200385adfd71213" +dependencies = [ + "anyhow", + "base64 0.21.7", + "bincode", + "directories-next", + "file-per-thread-logger", + "log", + "rustix 0.36.17", + "serde", + "sha2 0.10.8", + "toml 0.5.11", + "windows-sys 0.45.0", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "wasmtime-cranelift" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1cefde0cce8cb700b1b21b6298a3837dba46521affd7b8c38a9ee2c869eee04" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "cranelift-native", + "cranelift-wasm", + "gimli 0.27.3", + "log", + "object 0.30.4", + "target-lexicon", + "thiserror 1.0.69", + "wasmparser 0.102.0", + "wasmtime-cranelift-shared", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-cranelift-shared" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd041e382ef5aea1b9fc78442394f1a4f6d676ce457e7076ca4cb3f397882f8b" +dependencies = [ + "anyhow", + "cranelift-codegen", + "cranelift-native", + "gimli 0.27.3", + "object 0.30.4", + "target-lexicon", + "wasmtime-environ", +] + [[package]] name = "wasmtime-environ" version = "8.0.1" @@ -12724,7 +14879,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", "wasmtime-types", ] @@ -12747,6 +14902,7 @@ dependencies = [ "serde", "target-lexicon", "wasmtime-environ", + "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", "wasmtime-runtime", "windows-sys 0.45.0", @@ -12758,7 +14914,9 @@ version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" dependencies = [ + "object 0.30.4", "once_cell", + "rustix 0.36.17", ] [[package]] @@ -12804,7 +14962,7 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror", + "thiserror 1.0.69", "wasmparser 0.102.0", ] @@ -12830,9 +14988,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.5" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -12866,6 +15024,16 @@ dependencies = [ "winsafe", ] +[[package]] +name = "wide" +version = "0.7.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" +dependencies = [ + "bytemuck", + "safe_arch", +] + [[package]] name = "winapi" version = "0.3.9" @@ -13161,9 +15329,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -13385,8 +15553,8 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", - "synstructure", + "syn 2.0.90", + "synstructure 0.13.1", ] [[package]] @@ -13450,14 +15618,14 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "arbitrary", "crc32fast", @@ -13481,7 +15649,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "toml 0.7.8", "url", @@ -13529,7 +15697,7 @@ checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" dependencies = [ "pest", "pest_derive", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -13553,7 +15721,7 @@ dependencies = [ "serde_yaml", "sha2 0.10.8", "tar", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -13594,8 +15762,56 @@ dependencies = [ "rand", "regex", "reqwest 0.11.27", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "uuid", ] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe 6.0.6", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] From 8066e56209c33a254204c1d7c615d24243504362 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 23:20:16 +0100 Subject: [PATCH 123/143] refactor: move terminate node into common::contracts --- crates/pop-cli/src/commands/up/contract.rs | 46 +++++----------------- crates/pop-cli/src/common/contracts.rs | 29 +++++++++++++- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index d68cde19..29392a8f 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -3,7 +3,7 @@ use crate::{ cli::{traits::Cli as _, Cli}, common::{ - contracts::{check_contracts_node_and_prompt, has_contract_been_built}, + contracts::{check_contracts_node_and_prompt, has_contract_been_built, terminate_node}, wallet::wait_for_signature, }, style::style, @@ -21,10 +21,7 @@ use pop_contracts::{ }; use sp_core::Bytes; use sp_weights::Weight; -use std::{ - path::PathBuf, - process::{Child, Command}, -}; +use std::path::PathBuf; use tempfile::NamedTempFile; use url::Url; @@ -179,7 +176,7 @@ impl UpContractCommand { Ok(data) => data, Err(e) => { error(format!("An error occurred getting the call data: {e}"))?; - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -196,7 +193,7 @@ impl UpContractCommand { // TODO: dry (see else below) if let Err(e) = result { spinner.error(format!("An error occurred uploading your contract: {e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); } @@ -215,7 +212,7 @@ impl UpContractCommand { let result = instantiate_contract_signed(self.url.as_str(), payload).await; if let Err(e) = result { spinner.error(format!("An error occurred uploading your contract: {e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); } @@ -238,7 +235,7 @@ impl UpContractCommand { return Ok(()); } - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro(COMPLETE)?; return Ok(()); } @@ -246,7 +243,7 @@ impl UpContractCommand { // Check for upload only. if self.upload_only { let result = self.upload_contract().await; - Self::terminate_node(process)?; + terminate_node(process)?; match result { Ok(_) => { Cli.outro(COMPLETE)?; @@ -263,7 +260,7 @@ impl UpContractCommand { Ok(i) => i, Err(e) => { error(format!("An error occurred instantiating the contract: {e}"))?; - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -281,7 +278,7 @@ impl UpContractCommand { }, Err(e) => { spinner.error(format!("{e}")); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro_cancel(FAILED)?; return Ok(()); }, @@ -299,7 +296,7 @@ impl UpContractCommand { contract_info.code_hash, ); - Self::terminate_node(process)?; + terminate_node(process)?; Cli.outro(COMPLETE)?; } @@ -341,29 +338,6 @@ impl UpContractCommand { Ok(()) } - /// Handles the optional termination of a local running node. - fn terminate_node(process: Option<(Child, NamedTempFile)>) -> anyhow::Result<()> { - // Prompt to close any launched node - let Some((process, log)) = process else { - return Ok(()); - }; - if confirm("Would you like to terminate the local node?") - .initial_value(true) - .interact()? - { - // Stop the process contracts-node - Command::new("kill") - .args(["-s", "TERM", &process.id().to_string()]) - .spawn()? - .wait()?; - } else { - log.keep()?; - log::warning(format!("NOTE: The node is running in the background with process ID {}. Please terminate it manually when done.", process.id()))?; - } - - Ok(()) - } - // get the call data and contract code hash async fn get_contract_data(&self) -> anyhow::Result<(Vec, [u8; 32])> { let contract_code = get_contract_code(self.path.as_ref()).await?; diff --git a/crates/pop-cli/src/common/contracts.rs b/crates/pop-cli/src/common/contracts.rs index 3d0be11f..c353d196 100644 --- a/crates/pop-cli/src/common/contracts.rs +++ b/crates/pop-cli/src/common/contracts.rs @@ -3,7 +3,11 @@ use cliclack::{confirm, log::warning, spinner}; use pop_common::{manifest::from_path, sourcing::set_executable_permission}; use pop_contracts::contracts_node_generator; -use std::path::{Path, PathBuf}; +use std::{ + path::{Path, PathBuf}, + process::{Child, Command}, +}; +use tempfile::NamedTempFile; /// Checks the status of the `substrate-contracts-node` binary, sources it if necessary, and /// prompts the user to update it if the existing binary is not the latest version. @@ -68,6 +72,29 @@ pub async fn check_contracts_node_and_prompt(skip_confirm: bool) -> anyhow::Resu Ok(node_path) } +/// Handles the optional termination of a local running node. +pub fn terminate_node(process: Option<(Child, NamedTempFile)>) -> anyhow::Result<()> { + // Prompt to close any launched node + let Some((process, log)) = process else { + return Ok(()); + }; + if confirm("Would you like to terminate the local node?") + .initial_value(true) + .interact()? + { + // Stop the process contracts-node + Command::new("kill") + .args(["-s", "TERM", &process.id().to_string()]) + .spawn()? + .wait()?; + } else { + log.keep()?; + warning(format!("NOTE: The node is running in the background with process ID {}. Please terminate it manually when done.", process.id()))?; + } + + Ok(()) +} + /// Checks if a contract has been built by verifying the existence of the build directory and the /// .contract file. /// From 257da81ddf2b0eefa43d1771b0a19cf81902fd0b Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Wed, 11 Dec 2024 23:23:32 +0100 Subject: [PATCH 124/143] fix: sp-core not only for contracts --- crates/pop-cli/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/pop-cli/Cargo.toml b/crates/pop-cli/Cargo.toml index 6d2d6ef4..2d511c77 100644 --- a/crates/pop-cli/Cargo.toml +++ b/crates/pop-cli/Cargo.toml @@ -28,12 +28,12 @@ url.workspace = true clap.workspace = true cliclack.workspace = true console.workspace = true +sp-core.workspace = true strum.workspace = true strum_macros.workspace = true # contracts pop-contracts = { path = "../pop-contracts", version = "0.5.0", optional = true } -sp-core = { workspace = true, optional = true } sp-weights = { workspace = true, optional = true } # parachains @@ -59,6 +59,6 @@ subxt-signer.workspace = true [features] default = ["contract", "parachain", "telemetry"] -contract = ["dep:pop-contracts", "dep:sp-core", "dep:sp-weights", "dep:dirs"] +contract = ["dep:pop-contracts", "dep:sp-weights", "dep:dirs"] parachain = ["dep:pop-parachains", "dep:dirs"] telemetry = ["dep:pop-telemetry"] From f3b73cc00a8b6a794f3c9203c2d12b3e3a006f5e Mon Sep 17 00:00:00 2001 From: Peter White Date: Thu, 12 Dec 2024 00:07:04 -0700 Subject: [PATCH 125/143] feat(up-contract): serve HTML from string, fix deployment message on error, cors, and other misc. improvements --- crates/pop-cli/src/commands/up/contract.rs | 27 ++++++++++++++++++++++ crates/pop-cli/src/wallet_integration.rs | 7 ++++++ 2 files changed, 34 insertions(+) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 29392a8f..e20113ff 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -358,6 +358,33 @@ impl UpContractCommand { Ok((call_data, hash)) } } + + async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { + let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); + + let transaction_data = TransactionData::new(self.url.to_string(), call_data); + // starts server + let mut wallet = WalletIntegrationManager::new(ui, transaction_data); + log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; + + log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; + loop { + // Display error, if any. + if let Some(error) = wallet.take_error().await { + log::error(format!("Signing portal error: {error}"))?; + } + + let state = wallet.state.lock().await; + // If the payload is submitted we terminate the frontend. + if !wallet.is_running() || state.signed_payload.is_some() { + wallet.task_handle.await??; + break; + } + } + + let signed_payload = wallet.state.lock().await.signed_payload.clone(); + Ok(signed_payload) + } } impl From for UpOpts { diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 8d8bc02c..339ec0be 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -85,6 +85,13 @@ impl WalletIntegrationManager { error: None, })); + // TODO: temporary until we host from here. + let cors = tower_http::cors::CorsLayer::new() + .allow_origin("http://localhost:9090".parse::().unwrap()) + .allow_origin("http://127.0.0.1:9090".parse::().unwrap()) + .allow_methods(Any) // Allow any HTTP method + .allow_headers(Any); // Allow any headers (like 'Content-Type') + // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() .allow_origin("http://localhost:9090".parse::().unwrap()) From b1e5561cfe9b8bb653ad575b3f3130d5a1b9ec98 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 20:37:48 +0100 Subject: [PATCH 126/143] fix: rebase --- crates/pop-cli/src/commands/up/contract.rs | 3 +-- crates/pop-cli/src/common/wallet.rs | 8 ++------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index e20113ff..27ad0615 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -7,7 +7,6 @@ use crate::{ wallet::wait_for_signature, }, style::style, - wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}, }; use clap::Args; use cliclack::{confirm, log, log::error, spinner, ProgressBar}; @@ -231,7 +230,7 @@ impl UpContractCommand { } } else { Cli.outro_cancel("Signed payload doesn't exist.")?; - Self::terminate_node(process)?; + terminate_node(process)?; return Ok(()); } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 1cbcfbd3..163e8aa9 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -1,15 +1,11 @@ // SPDX-License-Identifier: GPL-3.0 -use crate::wallet_integration::{FrontendFromDir, TransactionData, WalletIntegrationManager}; +use crate::wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}; use cliclack::log; use sp_core::bytes::to_hex; -use std::path::PathBuf; pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { - // TODO: to be addressed in future PR. Should not use FromDir (or local path). - let ui = FrontendFromDir::new(PathBuf::from( - "/Users/alexbean/Documents/react-teleport-example/dist", - )); + let ui = FrontendFromString::new(include_str!("../assets/index.html").to_string()); let transaction_data = TransactionData::new(url, call_data); let call_data_bytes = to_hex(&transaction_data.call_data(), false); From 1e51fe2ebdb0126a5c795f6753817b1422153530 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 14:52:48 +0100 Subject: [PATCH 127/143] feat: secure signing logic for pop call chain --- Cargo.lock | 1 + crates/pop-cli/src/commands/call/chain.rs | 92 ++++++++++++++++++++--- crates/pop-parachains/Cargo.toml | 1 + crates/pop-parachains/src/call/mod.rs | 40 +++++++++- crates/pop-parachains/src/lib.rs | 4 +- 5 files changed, 123 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0e47545b..3f401a58 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9513,6 +9513,7 @@ dependencies = [ "scale-info", "scale-value 0.16.3", "serde_json", + "sp-core 31.0.0", "strum 0.26.3", "strum_macros 0.26.4", "subxt 0.37.0", diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 0179f1b8..8a0e284c 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -2,14 +2,17 @@ use std::path::Path; -use crate::cli::{self, traits::*}; +use crate::{ + cli::{self, traits::*}, + common::wallet::wait_for_signature, +}; use anyhow::{anyhow, Result}; use clap::Args; use pop_parachains::{ - construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, find_dispatchable_by_name, find_pallet_by_name, parse_chain_metadata, set_up_client, - sign_and_submit_extrinsic, supported_actions, Action, CallData, DynamicPayload, Function, - OnlineClient, Pallet, Param, SubstrateConfig, + sign_and_submit_extrinsic, submit_signed_extrinsic, supported_actions, Action, CallData, + DynamicPayload, Function, OnlineClient, Pallet, Param, SubstrateConfig, }; use url::Url; @@ -40,6 +43,9 @@ pub struct CallChainCommand { /// - with a password "//Alice///SECRET_PASSWORD" #[arg(short, long)] suri: Option, + /// Use your browser wallet to sign the extrinsic. + #[clap(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] + use_wallet: bool, /// SCALE encoded bytes representing the call data of the extrinsic. #[arg(name = "call", short, long, conflicts_with_all = ["pallet", "function", "args"])] call_data: Option, @@ -94,10 +100,18 @@ impl CallChainCommand { }, }; - // Sign and submit the extrinsic. - if let Err(e) = call.submit_extrinsic(&chain.client, &chain.url, xt, &mut cli).await { - display_message(&e.to_string(), false, &mut cli)?; - break; + if self.use_wallet { + // Sign and submit the extrinsic. + if let Err(e) = call.submit_extrinsic_secure_signing(&chain, &xt, &mut cli).await { + display_message(&e.to_string(), false, &mut cli)?; + break; + } + } else { + // Sign and submit the extrinsic. + if let Err(e) = call.submit_extrinsic(&chain.client, xt, &mut cli).await { + display_message(&e.to_string(), false, &mut cli)?; + break; + } } if !prompt_to_repeat_call @@ -198,11 +212,24 @@ impl CallChainCommand { // sudo. self.configure_sudo(chain, cli)?; - // Resolve who is signing the extrinsic. + // Resolve who is signing the extrinsic. If a `suri` was provided via the command line, + // skip the prompt. let suri = match self.suri.as_ref() { Some(suri) => suri.clone(), None => { - cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + if !self.use_wallet { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + .initial_value(true) + .interact()? { + self.use_wallet = true; + DEFAULT_URI.to_string() + } + else { + cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + } + } else { + DEFAULT_URI.to_string() + } }, }; @@ -212,6 +239,7 @@ impl CallChainCommand { suri, skip_confirm: self.skip_confirm, sudo: self.sudo, + use_wallet: self.use_wallet, }); } } @@ -225,6 +253,7 @@ impl CallChainCommand { cli: &mut impl Cli, ) -> Result<()> { // Resolve who is signing the extrinsic. + // TODO: HERE TOO let suri = match self.suri.as_ref() { Some(suri) => suri, None => &cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, @@ -288,6 +317,7 @@ impl CallChainCommand { self.function = None; self.args.clear(); self.sudo = false; + self.use_wallet = false; } // Function to check if all required fields are specified. @@ -339,6 +369,8 @@ struct Call { /// - for a dev account "//Alice" /// - with a password "//Alice///SECRET_PASSWORD" suri: String, + /// Whether to use your browser wallet to sign the extrinsic. + use_wallet: bool, /// Whether to automatically sign and submit the extrinsic without prompting for confirmation. skip_confirm: bool, /// Whether to dispatch the function call with `Root` origin. @@ -398,6 +430,31 @@ impl Call { Ok(()) } + // Sign and submit an extrinsic. + async fn submit_extrinsic_secure_signing( + &mut self, + chain: &Chain, + xt: &DynamicPayload, + cli: &mut impl Cli, + ) -> Result<()> { + let call_data = call_data(&chain.client, xt)?; + let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; + if let Some(payload) = maybe_payload { + cli.success("Signed payload received.")?; + let spinner = cliclack::spinner(); + spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); + + let result = submit_signed_extrinsic(chain.client.clone(), payload) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + + spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); + } else { + display_message("Signed payload doesn't exist.", false, cli)?; + } + Ok(()) + } + fn display(&self, chain: &Chain) -> String { let mut full_message = "pop call chain".to_string(); full_message.push_str(&format!(" --pallet {}", self.function.pallet)); @@ -417,7 +474,12 @@ impl Call { .collect(); full_message.push_str(&format!(" --args {}", args.join(" "))); } - full_message.push_str(&format!(" --url {} --suri {}", chain.url, self.suri)); + full_message.push_str(&format!(" --url {}", chain.url)); + if self.use_wallet { + full_message.push_str("--use-wallet"); + } else { + full_message.push_str(&format!(" --suri {}", self.suri)); + } if self.sudo { full_message.push_str(" --sudo"); } @@ -720,6 +782,7 @@ mod tests { }, args: vec!["0x11".to_string()].to_vec(), suri: DEFAULT_URI.to_string(), + use_wallet: false, skip_confirm: false, sudo: false, }; @@ -759,6 +822,7 @@ mod tests { function: find_dispatchable_by_name(&pallets, "System", "remark")?.clone(), args: vec!["0x11".to_string()].to_vec(), suri: DEFAULT_URI.to_string(), + use_wallet: false, skip_confirm: false, sudo: false, }; @@ -782,6 +846,7 @@ mod tests { args: vec![].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), suri: None, + use_wallet: false, skip_confirm: false, call_data: Some("0x00000411".to_string()), sudo: false, @@ -811,6 +876,7 @@ mod tests { args: vec![].to_vec(), url: Some(Url::parse("wss://polkadot-rpc.publicnode.com")?), suri: Some("//Alice".to_string()), + use_wallet: false, skip_confirm: false, call_data: Some("0x00000411".to_string()), sudo: true, @@ -842,6 +908,7 @@ mod tests { function: Some("remark".to_string()), args: vec!["0x11".to_string()].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), + use_wallet: true, suri: Some(DEFAULT_URI.to_string()), skip_confirm: false, call_data: None, @@ -852,6 +919,7 @@ mod tests { assert_eq!(call_config.function, None); assert_eq!(call_config.args.len(), 0); assert!(!call_config.sudo); + assert!(call_config.use_wallet); Ok(()) } @@ -863,6 +931,7 @@ mod tests { args: vec!["0x11".to_string()].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), suri: Some(DEFAULT_URI.to_string()), + use_wallet: false, skip_confirm: false, call_data: None, sudo: false, @@ -881,6 +950,7 @@ mod tests { args: vec!["2000".to_string(), "0x1".to_string(), "0x12".to_string()].to_vec(), url: Some(Url::parse(POP_NETWORK_TESTNET_URL)?), suri: Some(DEFAULT_URI.to_string()), + use_wallet: false, call_data: None, skip_confirm: false, sudo: false, diff --git a/crates/pop-parachains/Cargo.toml b/crates/pop-parachains/Cargo.toml index 64bef2d6..19d8361d 100644 --- a/crates/pop-parachains/Cargo.toml +++ b/crates/pop-parachains/Cargo.toml @@ -29,6 +29,7 @@ indexmap.workspace = true reqwest.workspace = true scale-info.workspace = true scale-value.workspace = true +sp-core.workspace = true subxt.workspace = true symlink.workspace = true toml_edit.workspace = true diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs index 1f7e61b2..dacf17e0 100644 --- a/crates/pop-parachains/src/call/mod.rs +++ b/crates/pop-parachains/src/call/mod.rs @@ -5,12 +5,12 @@ use pop_common::{ call::{DefaultEnvironment, DisplayEvents, TokenMetadata, Verbosity}, create_signer, }; +use sp_core::bytes::from_hex; use subxt::{ dynamic::Value, - tx::{DynamicPayload, Payload}, + tx::{DynamicPayload, Payload, SubmittableExtrinsic}, OnlineClient, SubstrateConfig, }; - pub mod metadata; /// Sets up an [OnlineClient] instance for connecting to a blockchain. @@ -82,6 +82,28 @@ pub async fn sign_and_submit_extrinsic( Ok(format!("Extrinsic Submitted with hash: {:?}\n\n{}", result.extrinsic_hash(), events)) } +/// TODO: Signs and submits a given extrinsic. +/// +/// # Arguments +/// * `client` - The client used to interact with the chain. +/// * `xt` - The extrinsic to be signed and submitted. +/// * `suri` - The secret URI (e.g., mnemonic or private key) for signing the extrinsic. +pub async fn submit_signed_extrinsic( + client: OnlineClient, + payload: String, +) -> Result { + let hex_encoded = + from_hex(&payload).map_err(|e| Error::CallDataDecodingError(e.to_string()))?; + let extrinsic = SubmittableExtrinsic::from_bytes(client, hex_encoded); + let result = extrinsic + .submit_and_watch() + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))? + .wait_for_finalized_success() + .await + .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))?; + Ok(format!("{:?}", result.extrinsic_hash())) +} /// Encodes the call data for a given extrinsic into a hexadecimal string. /// /// # Arguments @@ -97,6 +119,20 @@ pub fn encode_call_data( Ok(format!("0x{}", hex::encode(call_data))) } +/// Encodes the call data for a given extrinsic into a hexadecimal string. +/// +/// # Arguments +/// * `client` - The client used to interact with the chain. +/// * `xt` - The extrinsic whose call data will be encoded and returned. +pub fn call_data( + client: &OnlineClient, + xt: &DynamicPayload, +) -> Result, Error> { + Ok(xt + .encode_call_data(&client.metadata()) + .map_err(|e| Error::CallDataEncodingError(e.to_string()))?) +} + /// Decodes a hex-encoded string into a vector of bytes representing the call data. /// /// # Arguments diff --git a/crates/pop-parachains/src/lib.rs b/crates/pop-parachains/src/lib.rs index 5bba8154..bdb182c2 100644 --- a/crates/pop-parachains/src/lib.rs +++ b/crates/pop-parachains/src/lib.rs @@ -17,14 +17,14 @@ pub use build::{ generate_plain_chain_spec, generate_raw_chain_spec, is_supported, ChainSpec, }; pub use call::{ - construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, metadata::{ action::{supported_actions, Action}, find_dispatchable_by_name, find_pallet_by_name, params::Param, parse_chain_metadata, Function, Pallet, }, - set_up_client, sign_and_submit_extrinsic, CallData, + set_up_client, sign_and_submit_extrinsic, submit_signed_extrinsic, CallData, }; pub use errors::Error; pub use indexmap::IndexSet; From 7f734ad1602ddc66f47e5d9e9497daa9dbdae43e Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 15:00:42 +0100 Subject: [PATCH 128/143] test: unit tests in pop-cli --- crates/pop-cli/src/commands/call/chain.rs | 11 ++++++----- crates/pop-cli/src/common/wallet.rs | 1 + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 8a0e284c..a6aa6b9c 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -476,7 +476,7 @@ impl Call { } full_message.push_str(&format!(" --url {}", chain.url)); if self.use_wallet { - full_message.push_str("--use-wallet"); + full_message.push_str(" --use-wallet"); } else { full_message.push_str(&format!(" --suri {}", self.suri)); } @@ -710,7 +710,7 @@ mod tests { ) .expect_input("The value for `remark` might be too large to enter. You may enter the path to a file instead.", "0x11".into()) .expect_confirm("Would you like to dispatch this function call with `Root` origin?", true) - .expect_input("Signer of the extrinsic:", "//Bob".into()); + .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", true); let chain = call_config.configure_chain(&mut cli).await?; assert_eq!(chain.url, Url::parse(POP_NETWORK_TESTNET_URL)?); @@ -719,9 +719,10 @@ mod tests { assert_eq!(call_chain.function.pallet, "System"); assert_eq!(call_chain.function.name, "remark"); assert_eq!(call_chain.args, ["0x11".to_string()].to_vec()); - assert_eq!(call_chain.suri, "//Bob"); + assert_eq!(call_chain.suri, "//Alice"); // Default value + assert!(call_chain.use_wallet); assert!(call_chain.sudo); - assert_eq!(call_chain.display(&chain), "pop call chain --pallet System --function remark --args \"0x11\" --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Bob --sudo"); + assert_eq!(call_chain.display(&chain), "pop call chain --pallet System --function remark --args \"0x11\" --url wss://rpc1.paseo.popnetwork.xyz/ --use-wallet --sudo"); cli.verify() } @@ -919,7 +920,7 @@ mod tests { assert_eq!(call_config.function, None); assert_eq!(call_config.args.len(), 0); assert!(!call_config.sudo); - assert!(call_config.use_wallet); + assert!(!call_config.use_wallet); Ok(()) } diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 163e8aa9..638b3805 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -33,6 +33,7 @@ pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Resu Ok(signed_payload) } +#[ignore] #[cfg(test)] mod tests { use super::*; From ade77a671dde42eee353f3359c3e40d59beecccf Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Thu, 12 Dec 2024 15:23:26 +0100 Subject: [PATCH 129/143] feat: secure signing for call from call_data --- crates/pop-cli/src/commands/call/chain.rs | 89 +++++++++++++++-------- 1 file changed, 58 insertions(+), 31 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index a6aa6b9c..a50ee66c 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -102,7 +102,8 @@ impl CallChainCommand { if self.use_wallet { // Sign and submit the extrinsic. - if let Err(e) = call.submit_extrinsic_secure_signing(&chain, &xt, &mut cli).await { + let call_data = call_data(&chain.client, &xt)?; + if let Err(e) = submit_extrinsic_secure_signing(&chain, call_data, &mut cli).await { display_message(&e.to_string(), false, &mut cli)?; break; } @@ -252,12 +253,37 @@ impl CallChainCommand { call_data: &str, cli: &mut impl Cli, ) -> Result<()> { - // Resolve who is signing the extrinsic. - // TODO: HERE TOO + // Resolve who is signing the extrinsic. If a `suri` was provided via the command line, + // skip the prompt. + let mut use_wallet = self.use_wallet; let suri = match self.suri.as_ref() { - Some(suri) => suri, - None => &cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()?, + Some(suri) => suri.clone(), + None => { + if !self.use_wallet { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + .initial_value(true) + .interact()? { + use_wallet = true; + DEFAULT_URI.to_string() + } + else { + cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? + } + } else { + DEFAULT_URI.to_string() + } + }, }; + // Return early + if use_wallet { + let call_data_bytes = + decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; + submit_extrinsic_secure_signing(chain, call_data_bytes, cli) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + display_message("Call complete.", true, cli)?; + return Ok(()); + } cli.info(format!("Encoded call data: {}", call_data))?; if !self.skip_confirm && !cli @@ -430,31 +456,6 @@ impl Call { Ok(()) } - // Sign and submit an extrinsic. - async fn submit_extrinsic_secure_signing( - &mut self, - chain: &Chain, - xt: &DynamicPayload, - cli: &mut impl Cli, - ) -> Result<()> { - let call_data = call_data(&chain.client, xt)?; - let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; - if let Some(payload) = maybe_payload { - cli.success("Signed payload received.")?; - let spinner = cliclack::spinner(); - spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); - - let result = submit_signed_extrinsic(chain.client.clone(), payload) - .await - .map_err(|err| anyhow!("{}", format!("{err:?}")))?; - - spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); - } else { - display_message("Signed payload doesn't exist.", false, cli)?; - } - Ok(()) - } - fn display(&self, chain: &Chain) -> String { let mut full_message = "pop call chain".to_string(); full_message.push_str(&format!(" --pallet {}", self.function.pallet)); @@ -487,6 +488,31 @@ impl Call { } } +// Sign and submit an extrinsic. +async fn submit_extrinsic_secure_signing( + chain: &Chain, + call_data: Vec, + cli: &mut impl Cli, +) -> Result<()> { + let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; + if let Some(payload) = maybe_payload { + cli.success("Signed payload received.")?; + let spinner = cliclack::spinner(); + spinner.start( + "Submitting the extrinsic and then waiting for finalization, please be patient...", + ); + + let result = submit_signed_extrinsic(chain.client.clone(), payload) + .await + .map_err(|err| anyhow!("{}", format!("{err:?}")))?; + + spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); + } else { + display_message("Signed payload doesn't exist.", false, cli)?; + } + Ok(()) +} + // Displays a message to the user, with formatting based on the success status. fn display_message(message: &str, success: bool, cli: &mut impl Cli) -> Result<()> { if success { @@ -853,6 +879,7 @@ mod tests { sudo: false, }; let mut cli = MockCli::new() + .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", false) .expect_input("Signer of the extrinsic:", "//Bob".into()) .expect_confirm("Do you want to submit the extrinsic?", false) .expect_outro_cancel("Extrinsic with call data 0x00000411 was not submitted."); @@ -875,7 +902,7 @@ mod tests { pallet: None, function: None, args: vec![].to_vec(), - url: Some(Url::parse("wss://polkadot-rpc.publicnode.com")?), + url: Some(Url::parse(POLKADOT_NETWORK_URL)?), suri: Some("//Alice".to_string()), use_wallet: false, skip_confirm: false, From 90e468e7f52b6798f44e81f3b0ed848c93c6d957 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 09:15:34 +0100 Subject: [PATCH 130/143] refactor: docs and remove unneded functions --- crates/pop-cli/src/commands/call/chain.rs | 27 +++++++++++++---------- crates/pop-parachains/src/call/mod.rs | 20 +++-------------- crates/pop-parachains/src/lib.rs | 7 ++++-- 3 files changed, 23 insertions(+), 31 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index a50ee66c..6226390f 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -9,10 +9,11 @@ use crate::{ use anyhow::{anyhow, Result}; use clap::Args; use pop_parachains::{ - call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, find_dispatchable_by_name, find_pallet_by_name, parse_chain_metadata, set_up_client, - sign_and_submit_extrinsic, submit_signed_extrinsic, supported_actions, Action, CallData, - DynamicPayload, Function, OnlineClient, Pallet, Param, SubstrateConfig, + sign_and_submit_extrinsic, submit_signed_extrinsic, submit_signed_extrinsic, supported_actions, + Action, CallData, DynamicPayload, Function, OnlineClient, Pallet, Param, Payload, + SubstrateConfig, }; use url::Url; @@ -102,8 +103,10 @@ impl CallChainCommand { if self.use_wallet { // Sign and submit the extrinsic. - let call_data = call_data(&chain.client, &xt)?; - if let Err(e) = submit_extrinsic_secure_signing(&chain, call_data, &mut cli).await { + let call_data = xt.encode_call_data(&chain.client.metadata())?; + if let Err(e) = + submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await + { display_message(&e.to_string(), false, &mut cli)?; break; } @@ -223,13 +226,13 @@ impl CallChainCommand { .initial_value(true) .interact()? { self.use_wallet = true; - DEFAULT_URI.to_string() + DEFAULT_URI.to_string() // Default value because the user is using the browser wallet. } else { cli.input("Signer of the extrinsic:").default_input(DEFAULT_URI).interact()? } } else { - DEFAULT_URI.to_string() + DEFAULT_URI.to_string() // Default value because the user is using the browser wallet. } }, }; @@ -274,11 +277,11 @@ impl CallChainCommand { } }, }; - // Return early + // Perform signing steps with wallet integration and return early. if use_wallet { let call_data_bytes = decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; - submit_extrinsic_secure_signing(chain, call_data_bytes, cli) + submit_extrinsic_with_secure_signing(chain, call_data_bytes, cli) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; display_message("Call complete.", true, cli)?; @@ -488,8 +491,8 @@ impl Call { } } -// Sign and submit an extrinsic. -async fn submit_extrinsic_secure_signing( +// Sign and submit an extrinsic using wallet integration. +async fn submit_extrinsic_with_secure_signing( chain: &Chain, call_data: Vec, cli: &mut impl Cli, @@ -508,7 +511,7 @@ async fn submit_extrinsic_secure_signing( spinner.stop(format!("Extrinsic submitted with hash: {:?}", result)); } else { - display_message("Signed payload doesn't exist.", false, cli)?; + display_message("No signed payload received.", false, cli)?; } Ok(()) } diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs index dacf17e0..32b27aee 100644 --- a/crates/pop-parachains/src/call/mod.rs +++ b/crates/pop-parachains/src/call/mod.rs @@ -82,12 +82,11 @@ pub async fn sign_and_submit_extrinsic( Ok(format!("Extrinsic Submitted with hash: {:?}\n\n{}", result.extrinsic_hash(), events)) } -/// TODO: Signs and submits a given extrinsic. +/// Submits a signed extrinsic. /// /// # Arguments /// * `client` - The client used to interact with the chain. -/// * `xt` - The extrinsic to be signed and submitted. -/// * `suri` - The secret URI (e.g., mnemonic or private key) for signing the extrinsic. +/// * `payload` - The signed payload string to be submitted. pub async fn submit_signed_extrinsic( client: OnlineClient, payload: String, @@ -104,6 +103,7 @@ pub async fn submit_signed_extrinsic( .map_err(|e| Error::ExtrinsicSubmissionError(format!("{:?}", e)))?; Ok(format!("{:?}", result.extrinsic_hash())) } + /// Encodes the call data for a given extrinsic into a hexadecimal string. /// /// # Arguments @@ -119,20 +119,6 @@ pub fn encode_call_data( Ok(format!("0x{}", hex::encode(call_data))) } -/// Encodes the call data for a given extrinsic into a hexadecimal string. -/// -/// # Arguments -/// * `client` - The client used to interact with the chain. -/// * `xt` - The extrinsic whose call data will be encoded and returned. -pub fn call_data( - client: &OnlineClient, - xt: &DynamicPayload, -) -> Result, Error> { - Ok(xt - .encode_call_data(&client.metadata()) - .map_err(|e| Error::CallDataEncodingError(e.to_string()))?) -} - /// Decodes a hex-encoded string into a vector of bytes representing the call data. /// /// # Arguments diff --git a/crates/pop-parachains/src/lib.rs b/crates/pop-parachains/src/lib.rs index bdb182c2..7e70c214 100644 --- a/crates/pop-parachains/src/lib.rs +++ b/crates/pop-parachains/src/lib.rs @@ -17,7 +17,7 @@ pub use build::{ generate_plain_chain_spec, generate_raw_chain_spec, is_supported, ChainSpec, }; pub use call::{ - call_data, construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, + construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, metadata::{ action::{supported_actions, Action}, find_dispatchable_by_name, find_pallet_by_name, @@ -31,7 +31,10 @@ pub use indexmap::IndexSet; pub use new_pallet::{create_pallet_template, new_pallet_options::*, TemplatePalletConfig}; pub use new_parachain::instantiate_template_dir; // External export from subxt. -pub use subxt::{tx::DynamicPayload, OnlineClient, SubstrateConfig}; +pub use subxt::{ + tx::{DynamicPayload, Payload}, + OnlineClient, SubstrateConfig, +}; pub use templates::{Config, Parachain, Provider}; pub use up::Zombienet; pub use utils::helpers::is_initial_endowment_valid; From cb215058e05f485980cd67e7403382c281c303a7 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 09:25:43 +0100 Subject: [PATCH 131/143] refactor: replace hex library --- Cargo.lock | 1 - Cargo.toml | 1 - crates/pop-cli/src/commands/call/chain.rs | 21 +++++++------------ crates/pop-parachains/Cargo.toml | 1 - .../pop-parachains/src/call/metadata/mod.rs | 7 ++++--- crates/pop-parachains/src/call/mod.rs | 7 +++---- 6 files changed, 15 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3f401a58..dc13bcc0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9505,7 +9505,6 @@ dependencies = [ "duct", "flate2", "glob", - "hex", "indexmap 2.7.0", "mockito", "pop-common", diff --git a/Cargo.toml b/Cargo.toml index 3effb7c2..c96a1bfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,6 @@ contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branc #contract-transcode = "5.0.0" contract-transcode = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" -hex = { version = "0.4.3", default-features = false } # parachains askama = "0.12" diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 6226390f..420961bf 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -101,21 +101,16 @@ impl CallChainCommand { }, }; - if self.use_wallet { - // Sign and submit the extrinsic. + // Sign and submit the extrinsic. + let result = if self.use_wallet { let call_data = xt.encode_call_data(&chain.client.metadata())?; - if let Err(e) = - submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await - { - display_message(&e.to_string(), false, &mut cli)?; - break; - } + submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await } else { - // Sign and submit the extrinsic. - if let Err(e) = call.submit_extrinsic(&chain.client, xt, &mut cli).await { - display_message(&e.to_string(), false, &mut cli)?; - break; - } + call.submit_extrinsic(&chain.client, xt, &mut cli).await + }; + + if let Err(e) = result { + display_message(&e.to_string(), false, &mut cli)?; } if !prompt_to_repeat_call diff --git a/crates/pop-parachains/Cargo.toml b/crates/pop-parachains/Cargo.toml index 19d8361d..6380fbd1 100644 --- a/crates/pop-parachains/Cargo.toml +++ b/crates/pop-parachains/Cargo.toml @@ -24,7 +24,6 @@ tokio.workspace = true url.workspace = true askama.workspace = true -hex.workspace = true indexmap.workspace = true reqwest.workspace = true scale-info.workspace = true diff --git a/crates/pop-parachains/src/call/metadata/mod.rs b/crates/pop-parachains/src/call/metadata/mod.rs index 1f53f523..5a9a9a2c 100644 --- a/crates/pop-parachains/src/call/metadata/mod.rs +++ b/crates/pop-parachains/src/call/metadata/mod.rs @@ -4,7 +4,7 @@ use crate::errors::Error; use params::Param; use scale_value::stringify::custom_parsers; use std::fmt::{Display, Formatter}; -use subxt::{dynamic::Value, Metadata, OnlineClient, SubstrateConfig}; +use subxt::{dynamic::Value, utils::to_hex, Metadata, OnlineClient, SubstrateConfig}; pub mod action; pub mod params; @@ -179,7 +179,7 @@ pub fn parse_dispatchable_arguments( .map(|(param, raw_param)| { // Convert sequence parameters to hex if is_sequence let processed_param = if param.is_sequence && !raw_param.starts_with("0x") { - format!("0x{}", hex::encode(raw_param)) + to_hex(&raw_param) } else { raw_param }; @@ -199,6 +199,7 @@ mod tests { use crate::{call::tests::POP_NETWORK_TESTNET_URL, set_up_client}; use anyhow::Result; + use sp_core::bytes::from_hex; use subxt::ext::scale_bits; #[tokio::test] @@ -283,7 +284,7 @@ mod tests { ] .to_vec(); let addr: Vec<_> = - hex::decode("8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48") + from_hex("8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48") .unwrap() .into_iter() .map(|b| Value::u128(b as u128)) diff --git a/crates/pop-parachains/src/call/mod.rs b/crates/pop-parachains/src/call/mod.rs index 32b27aee..f5bb05b7 100644 --- a/crates/pop-parachains/src/call/mod.rs +++ b/crates/pop-parachains/src/call/mod.rs @@ -5,7 +5,7 @@ use pop_common::{ call::{DefaultEnvironment, DisplayEvents, TokenMetadata, Verbosity}, create_signer, }; -use sp_core::bytes::from_hex; +use sp_core::bytes::{from_hex, to_hex}; use subxt::{ dynamic::Value, tx::{DynamicPayload, Payload, SubmittableExtrinsic}, @@ -116,7 +116,7 @@ pub fn encode_call_data( let call_data = xt .encode_call_data(&client.metadata()) .map_err(|e| Error::CallDataEncodingError(e.to_string()))?; - Ok(format!("0x{}", hex::encode(call_data))) + Ok(to_hex(&call_data, false)) } /// Decodes a hex-encoded string into a vector of bytes representing the call data. @@ -124,8 +124,7 @@ pub fn encode_call_data( /// # Arguments /// * `call_data` - The hex-encoded string representing call data. pub fn decode_call_data(call_data: &str) -> Result, Error> { - hex::decode(call_data.trim_start_matches("0x")) - .map_err(|e| Error::CallDataDecodingError(e.to_string())) + from_hex(call_data).map_err(|e| Error::CallDataDecodingError(e.to_string())) } /// This struct implements the [`Payload`] trait and is used to submit From 0f0fb1ab3f4f6f64ace6bfb667a6088f5b55be25 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 20:25:44 +0100 Subject: [PATCH 132/143] fix: rebase issues --- Cargo.lock | 1147 ++++++++------------ crates/pop-cli/src/cli.rs | 38 - crates/pop-cli/src/commands/call/chain.rs | 21 +- crates/pop-cli/src/commands/up/contract.rs | 48 - crates/pop-cli/src/common/wallet.rs | 3 - crates/pop-cli/src/wallet_integration.rs | 77 +- 6 files changed, 483 insertions(+), 851 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dc13bcc0..ba7959cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -724,7 +724,7 @@ dependencies = [ "parachains-runtimes-test-utils", "parity-scale-codec", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -749,7 +749,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -1080,16 +1080,6 @@ dependencies = [ "log", ] -[[package]] -name = "binary-merkle-tree" -version = "15.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336bf780dd7526a9a4bc1521720b25c1994dc132cccd59553431923fa4d1a693" -dependencies = [ - "hash-db", - "log", -] - [[package]] name = "bincode" version = "1.3.3" @@ -1245,9 +1235,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.16.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aed08d3adb6ebe0eff737115056652670ae290f177759aac19c30456135f94c" +checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -1260,7 +1250,7 @@ dependencies = [ "hyper 1.5.1", "hyper-named-pipe", "hyper-util", - "hyperlocal-next", + "hyperlocal", "log", "pin-project-lite", "serde", @@ -1278,9 +1268,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.44.0-rc.2" +version = "1.47.1-rc.27.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709d9aa1c37abb89d40f19f5d0ad6f0d88cb1581264e571c9350fc5bb89cf1c5" +checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" dependencies = [ "serde", "serde_repr", @@ -1336,7 +1326,7 @@ dependencies = [ "serde", "sp-consensus-grandpa", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1371,7 +1361,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1404,7 +1394,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1423,7 +1413,7 @@ dependencies = [ "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -1444,7 +1434,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-std", "sp-trie 37.0.0", @@ -1467,7 +1457,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-consensus-grandpa", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", ] @@ -1499,7 +1489,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -1516,7 +1506,7 @@ dependencies = [ "scale-info", "snowbridge-core", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", ] @@ -1558,7 +1548,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -1590,7 +1580,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", "staging-xcm 14.2.0", @@ -1617,9 +1607,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" dependencies = [ "memchr", "regex-automata 0.4.9", @@ -1713,21 +1703,7 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "thiserror 1.0.69", @@ -1741,7 +1717,7 @@ checksum = "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "thiserror 2.0.6", @@ -1759,9 +1735,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" +checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" dependencies = [ "jobserver", "libc", @@ -2033,7 +2009,7 @@ dependencies = [ "anyhow", "blake2", "bollard", - "cargo_metadata 0.18.1", + "cargo_metadata 0.19.1", "clap", "colored", "contract-metadata", @@ -2041,11 +2017,11 @@ dependencies = [ "duct", "heck 0.5.0", "hex", - "impl-serde 0.4.0", + "impl-serde 0.5.0", "parity-scale-codec", "regex", "rustc_version 0.4.1", - "semver 1.0.23", + "semver 1.0.24", "serde", "serde_json", "strum 0.26.3", @@ -2060,7 +2036,7 @@ dependencies = [ "walkdir", "wasm-encoder", "wasm-opt", - "wasmparser 0.207.0", + "wasmparser 0.220.0", "which", "zip", ] @@ -2081,7 +2057,7 @@ dependencies = [ "hex", "ink_env", "ink_metadata", - "itertools 0.12.1", + "itertools 0.13.0", "pallet-contracts-uapi-next", "parity-scale-codec", "rust_decimal", @@ -2103,8 +2079,8 @@ version = "5.0.1" source = "git+https://github.com/use-ink/cargo-contract?branch=peter/chore-make-types-pub#7c8fc481912d7a6f416a0f72e37840123064f90d" dependencies = [ "anyhow", - "impl-serde 0.4.0", - "semver 1.0.23", + "impl-serde 0.5.0", + "semver 1.0.24", "serde", "serde_json", "url", @@ -2124,11 +2100,11 @@ dependencies = [ "indexmap 2.7.0", "ink_env", "ink_metadata", - "itertools 0.12.1", + "itertools 0.13.0", "nom", "nom-supreme", "parity-scale-codec", - "primitive-types 0.12.2", + "primitive-types 0.13.1", "scale-info", "serde", "serde_json", @@ -2329,14 +2305,13 @@ checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "libc", - "mio 0.8.11", + "mio", "parking_lot", "rustix 0.38.42", "signal-hook", @@ -2431,7 +2406,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2448,7 +2423,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2479,7 +2454,7 @@ dependencies = [ "sp-externalities 0.29.0", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-std", "sp-trie 37.0.0", @@ -2512,7 +2487,7 @@ dependencies = [ "frame-system", "pallet-session", "parity-scale-codec", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2528,7 +2503,7 @@ dependencies = [ "parity-scale-codec", "polkadot-primitives 16.0.0", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2543,7 +2518,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2567,7 +2542,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -2585,7 +2560,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", ] @@ -2600,7 +2575,7 @@ dependencies = [ "polkadot-primitives 15.0.0", "sp-api", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2615,7 +2590,7 @@ dependencies = [ "polkadot-primitives 16.0.0", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-trie 37.0.0", "staging-xcm 14.2.0", ] @@ -2660,7 +2635,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -2686,7 +2661,7 @@ dependencies = [ "pallet-asset-conversion", "parity-scale-codec", "polkadot-runtime-common", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -2701,7 +2676,7 @@ dependencies = [ "cumulus-primitives-core", "parity-scale-codec", "polkadot-primitives 16.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", "sp-trie 37.0.0", ] @@ -2748,9 +2723,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e1ec88093d2abd9cf1b09ffd979136b8e922bf31cad966a8fe0d73233112ef" +checksum = "a5a32d755fe20281b46118ee4b507233311fb7a48a0cfd42f554b93640521a2f" dependencies = [ "cc", "cxxbridge-cmd", @@ -2762,9 +2737,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afa390d956ee7ccb41aeed7ed7856ab3ffb4fc587e7216be7e0f83e949b4e6c" +checksum = "11645536ada5d1c8804312cbffc9ab950f2216154de431de930da47ca6955199" dependencies = [ "cc", "codespan-reporting", @@ -2776,9 +2751,9 @@ dependencies = [ [[package]] name = "cxxbridge-cmd" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c23bfff654d6227cbc83de8e059d2f8678ede5fc3a6c5a35d5c379983cc61e6" +checksum = "ebcc9c78e3c7289665aab921a2b394eaffe8bdb369aa18d81ffc0f534fd49385" dependencies = [ "clap", "codespan-reporting", @@ -2789,15 +2764,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c01b36e22051bc6928a78583f1621abaaf7621561c2ada1b00f7878fbe2caa" +checksum = "3a22a87bd9e78d7204d793261470a4c9d585154fddd251828d8aefbb5f74c3bf" [[package]] name = "cxxbridge-macro" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e14013136fac689345d17b9a6df55977251f11d333c0a571e8d963b55e1f95" +checksum = "1dfdb020ff8787c5daf6e0dca743005cc8782868faeadfbabb8824ede5cb1c72" dependencies = [ "proc-macro2", "quote", @@ -3463,6 +3438,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + [[package]] name = "fastrand" version = "2.3.0" @@ -3630,7 +3611,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-storage 21.0.0", "static_assertions", @@ -3648,7 +3629,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3691,7 +3672,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3709,7 +3690,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", ] @@ -3750,7 +3731,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3785,7 +3766,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", "sp-state-machine 0.43.0", "sp-std", @@ -3854,7 +3835,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-version", "sp-weights", @@ -3872,7 +3853,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -3895,7 +3876,7 @@ dependencies = [ "frame-support", "parity-scale-codec", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -4525,7 +4506,7 @@ dependencies = [ "http 1.2.0", "hyper 1.5.1", "hyper-util", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "tokio", "tokio-rustls 0.26.1", @@ -4593,10 +4574,10 @@ dependencies = [ ] [[package]] -name = "hyperlocal-next" -version = "0.9.0" +name = "hyperlocal" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf569d43fa9848e510358c07b80f4adf34084ddc28c6a4a651ee8474c070dcc" +checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ "hex", "http-body-util", @@ -4815,6 +4796,15 @@ dependencies = [ name = "impl-serde" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a143eada6a1ec4aefa5049037a26a6d597bfd64f8c026d07b77133e02b7dd0b" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", @@ -5086,15 +5076,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.14" @@ -5193,7 +5174,7 @@ dependencies = [ "http 1.2.0", "jsonrpsee-core", "pin-project", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-pki-types", "rustls-platform-verifier", "soketto", @@ -5250,19 +5231,6 @@ dependencies = [ "url", ] -[[package]] -name = "jsonrpsee-ws-client" -version = "0.24.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe322e0896d0955a3ebdd5bf813571c53fea29edd713bc315b76620b327e86d" -dependencies = [ - "http 1.2.0", - "jsonrpsee-client-transport 0.24.7", - "jsonrpsee-core 0.24.7", - "jsonrpsee-types 0.24.7", - "url", -] - [[package]] name = "k256" version = "0.13.4" @@ -5904,6 +5872,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", + "log", "wasi", "windows-sys 0.52.0", ] @@ -6332,7 +6301,7 @@ dependencies = [ "sp-core 34.0.0", "sp-crypto-hashing", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6351,7 +6320,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6370,7 +6339,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6385,7 +6354,7 @@ dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6400,7 +6369,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6418,7 +6387,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6435,7 +6404,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6451,7 +6420,7 @@ dependencies = [ "pallet-assets", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6466,7 +6435,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6483,7 +6452,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-consensus-aura", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6499,7 +6468,7 @@ dependencies = [ "scale-info", "sp-application-crypto 38.0.0", "sp-authority-discovery", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6513,7 +6482,7 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6535,7 +6504,7 @@ dependencies = [ "sp-consensus-babe", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -6558,7 +6527,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", ] @@ -6575,7 +6544,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6593,7 +6562,7 @@ dependencies = [ "scale-info", "serde", "sp-consensus-beefy", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -6620,7 +6589,7 @@ dependencies = [ "sp-consensus-beefy", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-state-machine 0.43.0", ] @@ -6639,7 +6608,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6658,7 +6627,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-consensus-grandpa", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -6677,7 +6646,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-trie 37.0.0", ] @@ -6699,7 +6668,7 @@ dependencies = [ "pallet-bridge-grandpa", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -6724,7 +6693,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-arithmetic", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -6744,7 +6713,7 @@ dependencies = [ "sp-api", "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6763,7 +6732,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6782,7 +6751,7 @@ dependencies = [ "parity-scale-codec", "rand", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -6800,7 +6769,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6815,7 +6784,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6843,7 +6812,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -6879,7 +6848,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -6949,7 +6918,7 @@ dependencies = [ "scale-info", "serde", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6968,7 +6937,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -6983,7 +6952,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7002,7 +6971,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7018,7 +6987,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7040,7 +7009,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "strum 0.26.3", ] @@ -7055,7 +7024,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7073,7 +7042,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7092,7 +7061,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7112,7 +7081,7 @@ dependencies = [ "sp-core 34.0.0", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7133,7 +7102,7 @@ dependencies = [ "sp-consensus-grandpa", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", ] @@ -7152,7 +7121,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7171,7 +7140,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7189,7 +7158,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7203,7 +7172,7 @@ dependencies = [ "parity-scale-codec", "safe-mix", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7217,7 +7186,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7234,7 +7203,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7253,7 +7222,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -7272,7 +7241,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7292,7 +7261,7 @@ dependencies = [ "sp-arithmetic", "sp-io 38.0.0", "sp-mixnet", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7310,7 +7279,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-mmr-primitives", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7326,7 +7295,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7343,7 +7312,7 @@ dependencies = [ "pallet-nfts", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7361,7 +7330,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7388,7 +7357,7 @@ dependencies = [ "scale-info", "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7404,7 +7373,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7421,7 +7390,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", "sp-tracing 17.0.1", ] @@ -7442,7 +7411,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-staking 36.0.0", ] @@ -7471,7 +7440,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7495,7 +7464,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7514,7 +7483,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7532,7 +7501,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7549,7 +7518,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7564,7 +7533,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7583,7 +7552,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7598,7 +7567,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7616,7 +7585,7 @@ dependencies = [ "serde", "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7633,7 +7602,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7661,7 +7630,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -7677,7 +7646,7 @@ dependencies = [ "frame-system", "parity-wasm", "polkavm-linker 0.10.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "tempfile", "toml 0.8.19", ] @@ -7709,7 +7678,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -7753,7 +7722,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7769,7 +7738,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7788,7 +7757,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-arithmetic", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7807,7 +7776,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7824,7 +7793,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -7839,7 +7808,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7857,7 +7826,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "sp-state-machine 0.43.0", @@ -7877,7 +7846,7 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "rand", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", ] @@ -7891,7 +7860,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7909,7 +7878,7 @@ dependencies = [ "scale-info", "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7930,7 +7899,7 @@ dependencies = [ "serde", "sp-application-crypto 38.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -7969,7 +7938,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -7986,7 +7955,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-statement-store", ] @@ -8003,7 +7972,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8021,7 +7990,7 @@ dependencies = [ "scale-info", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-storage 21.0.0", "sp-timestamp", ] @@ -8042,7 +8011,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8058,7 +8027,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8070,7 +8039,7 @@ dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -8090,7 +8059,7 @@ dependencies = [ "serde", "sp-inherents", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-transaction-storage-proof", ] @@ -8110,7 +8079,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8128,7 +8097,7 @@ dependencies = [ "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8143,7 +8112,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8159,7 +8128,7 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8174,7 +8143,7 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8189,7 +8158,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8209,7 +8178,7 @@ dependencies = [ "serde", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -8230,7 +8199,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "staging-xcm-builder", "staging-xcm-executor", @@ -8252,7 +8221,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8273,7 +8242,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -8303,7 +8272,7 @@ dependencies = [ "sp-consensus-aura", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -8333,7 +8302,7 @@ dependencies = [ "sp-consensus-aura", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-tracing 17.0.1", "staging-parachain-info", "staging-xcm 14.2.0", @@ -8364,12 +8333,6 @@ checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" name = "parity-scale-codec" version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b56e3a2420138bdb970f84dfb9c774aea80fa0e7371549eedec0d80c209c67" - -[[package]] -name = "parity-scale-codec" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec 0.7.6", @@ -8624,7 +8587,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -8640,7 +8603,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", ] @@ -8667,7 +8630,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 34.0.0", ] @@ -8694,7 +8657,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -8739,7 +8702,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-npos-elections", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "staging-xcm 14.2.0", @@ -8802,7 +8765,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-staking 36.0.0", "sp-std", @@ -9017,7 +8980,7 @@ dependencies = [ "sp-mmr-primitives", "sp-npos-elections", "sp-offchain", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-session", "sp-staking 36.0.0", @@ -9068,7 +9031,7 @@ dependencies = [ "sp-inherents", "sp-io 38.0.0", "sp-offchain", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-session", "sp-storage 21.0.0", "sp-transaction-pool", @@ -9307,58 +9270,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" -[[package]] -name = "polling" -version = "3.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" -dependencies = [ - "polkavm-derive-impl 0.10.0", - "syn 2.0.90", -] - -[[package]] -name = "polkavm-linker" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" -dependencies = [ - "gimli 0.28.1", - "hashbrown 0.14.5", - "log", - "object 0.32.2", - "polkavm-common 0.9.0", - "regalloc2 0.9.3", - "rustc-demangle", -] - -[[package]] -name = "polkavm-linker" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" -dependencies = [ - "gimli 0.28.1", - "hashbrown 0.14.5", - "log", - "object 0.36.5", - "polkavm-common 0.10.0", - "regalloc2 0.9.3", - "rustc-demangle", -] - -[[package]] -name = "polkavm-linux-raw" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" - -[[package]] -name = "polkavm-linux-raw" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" - [[package]] name = "polling" version = "3.7.4" @@ -9424,8 +9335,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tempfile", "tokio", "tower-http 0.6.2", @@ -9453,8 +9364,8 @@ dependencies = [ "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", "thiserror 1.0.69", @@ -9485,8 +9396,8 @@ dependencies = [ "sp-weights", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", - "subxt-signer 0.37.0", + "subxt", + "subxt-signer", "tar", "tempfile", "thiserror 1.0.69", @@ -9510,12 +9421,12 @@ dependencies = [ "pop-common", "reqwest 0.12.9", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde_json", - "sp-core 31.0.0", + "sp-core 32.0.0", "strum 0.26.3", "strum_macros 0.26.4", - "subxt 0.37.0", + "subxt", "symlink", "tar", "tempfile", @@ -9708,39 +9619,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.90", -] - -[[package]] -name = "proc-macro-warning" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "proc-macro2" version = "1.0.92" @@ -9902,9 +9780,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -10182,7 +10060,7 @@ dependencies = [ "polkadot-runtime-common", "smallvec", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -10282,7 +10160,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.24", ] [[package]] @@ -10326,9 +10204,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "log", "once_cell", @@ -10384,9 +10262,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" [[package]] name = "rustls-platform-verifier" @@ -10399,7 +10277,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.19", + "rustls 0.23.20", "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", @@ -10464,16 +10342,6 @@ dependencies = [ "derive_more 0.99.18", ] -[[package]] -name = "ruzstd" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5174a470eeb535a721ae9fdd6e291c2411a906b96592182d05217591d5c5cf7b" -dependencies = [ - "byteorder", - "derive_more 0.99.18", -] - [[package]] name = "rw-stream-sink" version = "0.4.0" @@ -10683,18 +10551,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "scale-decode-derive" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed9401effa946b493f9f84dc03714cca98119b230497df6f3df6b84a2b03648" -dependencies = [ - "darling 0.20.10", - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "scale-encode" version = "0.6.0" @@ -11056,13 +10912,28 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" dependencies = [ "serde", ] +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + [[package]] name = "serde" version = "1.0.216" @@ -11310,7 +11181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio 0.8.11", + "mio", "signal-hook", ] @@ -11394,7 +11265,7 @@ dependencies = [ "enumn", "parity-scale-codec", "paste", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -11464,7 +11335,7 @@ dependencies = [ "poly1305", "rand", "rand_chacha", - "ruzstd 0.5.0", + "ruzstd", "schnorrkel", "serde", "serde_json", @@ -11475,106 +11346,52 @@ dependencies = [ "smallvec", "soketto", "twox-hash", - "wasmi 0.31.2", + "wasmi", "x25519-dalek", "zeroize", ] [[package]] -name = "smoldot" -version = "0.18.0" +name = "smoldot-light" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "966e72d77a3b2171bb7461d0cb91f43670c63558c62d7cf42809cae6c8b6b818" +checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" dependencies = [ - "arrayvec 0.7.6", + "async-channel", "async-lock", - "atomic-take", "base64 0.22.1", - "bip39", "blake2-rfc", "bs58", - "chacha20", - "crossbeam-queue", "derive_more 0.99.18", - "ed25519-zebra 4.0.3", "either", - "event-listener 5.3.1", + "event-listener", "fnv", + "futures-channel", "futures-lite", "futures-util", "hashbrown 0.14.5", "hex", - "hmac 0.12.1", "itertools 0.13.0", - "libm", - "libsecp256k1", - "merlin", - "nom", - "num-bigint", - "num-rational", - "num-traits", - "pbkdf2", + "log", + "lru 0.12.5", + "parking_lot", "pin-project", - "poly1305", "rand", "rand_chacha", - "ruzstd 0.6.0", - "schnorrkel", "serde", "serde_json", - "sha2 0.10.8", - "sha3", "siphasher", "slab", - "smallvec", - "soketto 0.8.1", - "twox-hash", - "wasmi 0.32.3", - "x25519-dalek", + "smol", + "smoldot", "zeroize", ] [[package]] -name = "smoldot-light" -version = "0.16.2" +name = "snowbridge-amcl" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a33b06891f687909632ce6a4e3fd7677b24df930365af3d0bcb078310129f3f" -dependencies = [ - "async-channel", - "async-lock", - "base64 0.22.1", - "blake2-rfc", - "bs58", - "derive_more 0.99.18", - "either", - "event-listener", - "fnv", - "futures-channel", - "futures-lite", - "futures-util", - "hashbrown 0.14.5", - "hex", - "itertools 0.13.0", - "log", - "lru 0.12.5", - "parking_lot", - "pin-project", - "rand", - "rand_chacha", - "serde", - "serde_json", - "siphasher", - "slab", - "smol", - "smoldot 0.16.0", - "zeroize", -] - -[[package]] -name = "snowbridge-amcl" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" dependencies = [ "parity-scale-codec", "scale-info", @@ -11597,7 +11414,7 @@ dependencies = [ "snowbridge-milagro-bls", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "ssz_rs", "ssz_rs_derive", @@ -11621,7 +11438,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -11644,7 +11461,7 @@ dependencies = [ "serde", "serde-big-array", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -11672,7 +11489,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -11709,7 +11526,7 @@ dependencies = [ "snowbridge-pallet-ethereum-client-fixtures", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "static_assertions", ] @@ -11749,7 +11566,7 @@ dependencies = [ "snowbridge-router-primitives", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11787,7 +11604,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", ] @@ -11806,7 +11623,7 @@ dependencies = [ "snowbridge-core", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11826,7 +11643,7 @@ dependencies = [ "snowbridge-core", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11875,7 +11692,7 @@ dependencies = [ "sp-core 34.0.0", "sp-io 38.0.0", "sp-keyring", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-parachain-info", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -11934,7 +11751,7 @@ dependencies = [ "sp-core 34.0.0", "sp-externalities 0.29.0", "sp-metadata-ir", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "sp-state-machine 0.43.0", "sp-trie 37.0.0", @@ -11959,15 +11776,15 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "33.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13ca6121c22c8bd3d1dce1f05c479101fd0d7b159bef2a3e8c834138d839c75c" +checksum = "1505fad69251900048ddddc6387265e1545d1a366e3b4dcd57b76a03f0a65ae7" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 31.0.0", - "sp-io 33.0.0", + "sp-core 32.0.0", + "sp-io 34.0.0", "sp-std", ] @@ -12010,7 +11827,7 @@ dependencies = [ "scale-info", "sp-api", "sp-application-crypto 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12021,7 +11838,7 @@ checksum = "74738809461e3d4bd707b5b94e0e0c064a623a74a6a8fe5c98514417a02858dd" dependencies = [ "sp-api", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12037,7 +11854,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-consensus-slots", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-timestamp", ] @@ -12056,7 +11873,7 @@ dependencies = [ "sp-consensus-slots", "sp-core 34.0.0", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-timestamp", ] @@ -12077,7 +11894,7 @@ dependencies = [ "sp-io 38.0.0", "sp-keystore 0.40.0", "sp-mmr-primitives", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "strum 0.26.3", ] @@ -12097,7 +11914,7 @@ dependencies = [ "sp-application-crypto 38.0.0", "sp-core 34.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12109,7 +11926,7 @@ dependencies = [ "parity-scale-codec", "sp-api", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12171,6 +11988,53 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core" +version = "32.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2dac7e47c7ddbb61efe196d5cce99f6ea88926c961fa39909bfeae46fc5a7b" +dependencies = [ + "array-bytes", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58", + "dyn-clonable", + "ed25519-zebra 3.1.0", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde 0.4.0", + "itertools 0.10.5", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types 0.12.2", + "rand", + "scale-info", + "schnorrkel", + "secp256k1 0.28.2", + "secrecy 0.8.0", + "serde", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities 0.28.0", + "sp-runtime-interface 27.0.0", + "sp-std", + "sp-storage 21.0.0", + "ss58-registry", + "substrate-bip39 0.6.0", + "thiserror 1.0.69", + "tracing", + "w3f-bls", + "zeroize", +] + [[package]] name = "sp-core" version = "34.0.0" @@ -12296,6 +12160,17 @@ dependencies = [ "sp-storage 20.0.0", ] +[[package]] +name = "sp-externalities" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33abaec4be69b1613796bbf430decbbcaaf978756379e2016e683a4d6379cd02" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 21.0.0", +] + [[package]] name = "sp-externalities" version = "0.29.0" @@ -12317,7 +12192,7 @@ dependencies = [ "scale-info", "serde_json", "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12330,15 +12205,15 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] [[package]] name = "sp-io" -version = "33.0.0" +version = "34.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e09bba780b55bd9e67979cd8f654a31e4a6cf45426ff371394a65953d2177f2" +checksum = "c44ed47247b6eee76ff703f9fa9f04f99c4104ac1faf629e6d1128e09066b57b" dependencies = [ "bytes", "ed25519-dalek", @@ -12348,15 +12223,15 @@ dependencies = [ "polkavm-derive 0.9.1", "rustversion", "secp256k1 0.28.2", - "sp-core 31.0.0", + "sp-core 32.0.0", "sp-crypto-hashing", - "sp-externalities 0.27.0", - "sp-keystore 0.37.0", - "sp-runtime-interface 26.0.0", - "sp-state-machine 0.38.0", + "sp-externalities 0.28.0", + "sp-keystore 0.38.0", + "sp-runtime-interface 27.0.0", + "sp-state-machine 0.39.0", "sp-std", - "sp-tracing 16.0.0", - "sp-trie 32.0.0", + "sp-tracing 17.0.1", + "sp-trie 33.0.0", "tracing", "tracing-core", ] @@ -12395,15 +12270,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c0e20624277f578b27f44ecfbe2ebc2e908488511ee2c900c5281599f700ab3" dependencies = [ "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "strum 0.26.3", ] [[package]] name = "sp-keystore" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbab8b61bd61d5f8625a0c75753b5d5a23be55d3445419acd42caf59cf6236b" +checksum = "4e6c7a7abd860a5211a356cf9d5fcabf0eb37d997985e5d722b6b33dcc815528" dependencies = [ "parity-scale-codec", "parking_lot", @@ -12470,7 +12345,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-debug-derive", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] @@ -12485,7 +12360,7 @@ dependencies = [ "serde", "sp-arithmetic", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12496,7 +12371,7 @@ checksum = "2d9de237d72ecffd07f90826eef18360208b16d8de939d54e61591fac0fcbf99" dependencies = [ "sp-api", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12512,9 +12387,9 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "34.0.0" +version = "35.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3cb126971e7db2f0fcf8053dce740684c438c7180cfca1959598230f342c58" +checksum = "42ce931b7fbfdeeca1340801dbd4a1cae54ad4c97a1e3dcfcc79709bc800dd46" dependencies = [ "docify", "either", @@ -12532,41 +12407,14 @@ dependencies = [ "sp-core 32.0.0", "sp-io 34.0.0", "sp-std", - "sp-weights 30.0.0", -] - -[[package]] -name = "sp-runtime" -version = "39.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "num-traits", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid", - "sp-application-crypto 38.0.0", - "sp-arithmetic 26.0.0", - "sp-core 34.0.0", - "sp-io 38.0.0", - "sp-std", - "sp-weights 31.0.0", - "tracing", + "sp-weights", ] [[package]] name = "sp-runtime" -version = "39.0.2" +version = "39.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658f23be7c79a85581029676a73265c107c5469157e3444c8c640fdbaa8bfed0" +checksum = "ef567865c042b9002dfa44b8fc850fe611038acdf1e382e539495015f60f692f" dependencies = [ "docify", "either", @@ -12609,6 +12457,26 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "sp-runtime-interface" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "647db5e1dc481686628b41554e832df6ab400c4b43a6a54e54d3b0a71ca404aa" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types 0.12.2", + "sp-externalities 0.28.0", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage 21.0.0", + "sp-tracing 17.0.1", + "sp-wasm-interface 21.0.1", + "static_assertions", +] + [[package]] name = "sp-runtime-interface" version = "28.0.0" @@ -12654,7 +12522,7 @@ dependencies = [ "sp-api", "sp-core 34.0.0", "sp-keystore 0.40.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-staking 36.0.0", ] @@ -12669,7 +12537,7 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12683,14 +12551,14 @@ dependencies = [ "scale-info", "serde", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] name = "sp-state-machine" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eae0eac8034ba14437e772366336f579398a46d101de13dbb781ab1e35e67c5" +checksum = "21d9078306c3066f1824e41153e1ceec34231d39d9a7e7956b101eadf7b9fd3a" dependencies = [ "hash-db", "log", @@ -12698,11 +12566,10 @@ dependencies = [ "parking_lot", "rand", "smallvec", - "sp-core 31.0.0", - "sp-externalities 0.27.0", + "sp-core 32.0.0", + "sp-externalities 0.28.0", "sp-panic-handler", - "sp-std", - "sp-trie 32.0.0", + "sp-trie 33.0.0", "thiserror 1.0.69", "tracing", "trie-db 0.28.0", @@ -12748,7 +12615,7 @@ dependencies = [ "sp-core 34.0.0", "sp-crypto-hashing", "sp-externalities 0.29.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-runtime-interface 28.0.0", "thiserror 1.0.69", "x25519-dalek", @@ -12796,7 +12663,7 @@ dependencies = [ "async-trait", "parity-scale-codec", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "thiserror 1.0.69", ] @@ -12832,7 +12699,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc4bf251059485a7dd38fe4afeda8792983511cc47f342ff4695e2dcae6b5247" dependencies = [ "sp-api", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -12846,15 +12713,15 @@ dependencies = [ "scale-info", "sp-core 34.0.0", "sp-inherents", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-trie 37.0.0", ] [[package]] name = "sp-trie" -version = "32.0.0" +version = "33.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1aa91ad26c62b93d73e65f9ce7ebd04459c4bad086599348846a81988d6faa4" +checksum = "d1f5b3620a1c87c265a83d85d7519c6b60c47acf7f77593966afe313d086f00e" dependencies = [ "ahash 0.8.11", "hash-db", @@ -12866,23 +12733,12 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 31.0.0", - "sp-externalities 0.27.0", - "sp-std", - "sp-version-proc-macro", + "sp-core 32.0.0", + "sp-externalities 0.28.0", "thiserror 1.0.69", -] - -[[package]] -name = "sp-version-proc-macro" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aee8f6730641a65fcf0c8f9b1e448af4b3bb083d08058b47528188bccc7b7a7" -dependencies = [ - "parity-scale-codec", - "proc-macro2", - "quote", - "syn 2.0.90", + "tracing", + "trie-db 0.28.0", + "trie-root", ] [[package]] @@ -12921,7 +12777,7 @@ dependencies = [ "scale-info", "serde", "sp-crypto-hashing-proc-macro", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "sp-version-proc-macro", "thiserror 1.0.69", @@ -12977,22 +12833,7 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-arithmetic 25.0.0", - "sp-debug-derive", -] - -[[package]] -name = "sp-weights" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93cdaf72a1dad537bbb130ba4d47307ebe5170405280ed1aa31fa712718a400e" -dependencies = [ - "bounded-collections", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 26.0.0", + "sp-arithmetic", "sp-debug-derive", ] @@ -13067,7 +12908,7 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", ] [[package]] @@ -13104,7 +12945,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "xcm-procedural 10.1.0", ] @@ -13126,7 +12967,7 @@ dependencies = [ "scale-info", "sp-arithmetic", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "staging-xcm-executor", @@ -13147,7 +12988,7 @@ dependencies = [ "sp-arithmetic", "sp-core 34.0.0", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "tracing", @@ -13297,7 +13138,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde", "serde_json", "subxt-core", @@ -13313,43 +13154,6 @@ dependencies = [ "web-time", ] -[[package]] -name = "subxt" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53029d133e4e0cb7933f1fe06f2c68804b956de9bb8fa930ffca44e9e5e4230" -dependencies = [ - "async-trait", - "derive-where", - "either", - "frame-metadata 17.0.0", - "futures", - "hex", - "impl-serde 0.5.0", - "jsonrpsee 0.24.7", - "parity-scale-codec", - "polkadot-sdk", - "primitive-types 0.13.1", - "scale-bits 0.6.0", - "scale-decode 0.14.0", - "scale-encode 0.8.0", - "scale-info", - "scale-value 0.17.0", - "serde", - "serde_json", - "subxt-core 0.38.0", - "subxt-lightclient 0.38.0", - "subxt-macro 0.38.0", - "subxt-metadata 0.38.0", - "thiserror 1.0.69", - "tokio", - "tokio-util", - "tracing", - "url", - "wasm-bindgen-futures", - "web-time", -] - [[package]] name = "subxt-codegen" version = "0.38.0" @@ -13389,7 +13193,7 @@ dependencies = [ "scale-decode 0.14.0", "scale-encode 0.8.0", "scale-info", - "scale-value 0.16.3", + "scale-value", "serde", "serde_json", "subxt-metadata", @@ -13443,34 +13247,6 @@ dependencies = [ "scale-info", ] -[[package]] -name = "subxt-metadata" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" -dependencies = [ - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "parity-scale-codec", - "polkadot-sdk", - "scale-info", -] - -[[package]] -name = "subxt-metadata" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee13e6862eda035557d9a2871955306aff540d2b89c06e0a62a1136a700aed28" -dependencies = [ - "frame-decode", - "frame-metadata 17.0.0", - "hashbrown 0.14.5", - "parity-scale-codec", - "polkadot-sdk", - "scale-info", -] - [[package]] name = "subxt-signer" version = "0.38.0" @@ -13701,7 +13477,7 @@ dependencies = [ "polkadot-core-primitives", "rococo-runtime-constants", "smallvec", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "staging-xcm 14.2.0", "westend-runtime-constants", ] @@ -13841,7 +13617,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.3", + "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -13897,7 +13673,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.19", + "rustls 0.23.20", "tokio", ] @@ -13952,6 +13728,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml" version = "0.7.8" @@ -14618,12 +14403,12 @@ checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-encoder" -version = "0.207.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d996306fb3aeaee0d9157adbe2f670df0236caf19f6728b221e92d0f27b3fe17" +checksum = "ebf48234b389415b226a4daef6562933d38c7b28a8b8f64c5c4130dad1561ab7" dependencies = [ "leb128", - "wasmparser 0.207.0", + "wasmparser 0.220.0", ] [[package]] @@ -14703,29 +14488,6 @@ dependencies = [ "string-interner", ] -[[package]] -name = "wasmi_collections" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" -dependencies = [ - "ahash 0.8.11", - "hashbrown 0.14.5", - "string-interner", -] - -[[package]] -name = "wasmi_core" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" -dependencies = [ - "downcast-rs", - "libm", - "num-traits", - "paste", -] - [[package]] name = "wasmi_core" version = "0.32.3" @@ -14750,15 +14512,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.207.0" +version = "0.220.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19bb9f8ab07616da582ef8adb24c54f1424c7ec876720b7da9db8ec0626c92c" +checksum = "e246c2772ce3ebc83f89a2d4487ac5794cad6c309b2071818a88c7db7c36d87b" dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", "hashbrown 0.14.5", "indexmap 2.7.0", - "semver 1.0.23", + "semver 1.0.24", "serde", ] @@ -15006,7 +14768,7 @@ dependencies = [ "polkadot-runtime-common", "smallvec", "sp-core 34.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-weights", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -15014,9 +14776,9 @@ dependencies = [ [[package]] name = "which" -version = "6.0.3" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b" dependencies = [ "either", "home", @@ -15451,7 +15213,7 @@ dependencies = [ "polkadot-runtime-parachains", "scale-info", "sp-io 38.0.0", - "sp-runtime 39.0.2", + "sp-runtime 39.0.3", "sp-std", "staging-xcm 14.2.0", "staging-xcm-builder", @@ -15536,27 +15298,6 @@ dependencies = [ "synstructure 0.13.1", ] -[[package]] -name = "zerofrom" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", - "synstructure 0.13.1", -] - [[package]] name = "zeroize" version = "1.8.1" @@ -15599,28 +15340,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "zip" version = "2.2.1" @@ -15638,9 +15357,9 @@ dependencies = [ [[package]] name = "zombienet-configuration" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22860eef7e651d6e0aa7e37fc3bcba3c2c8b7bd1c140d7ea929caacf2b7fc726" +checksum = "d716b3ff8112d98ced15f53b0c72454f8cde533fe2b68bb04379228961efbd80" dependencies = [ "anyhow", "lazy_static", @@ -15658,9 +15377,9 @@ dependencies = [ [[package]] name = "zombienet-orchestrator" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19b1b2fd2db3153155f21cb84cdd8e5d6faefc3043353b8c90661c44f4660da" +checksum = "4098a7d33b729b59e32c41a87aa4d484bd1b8771a059bbd4edfb4d430b3b2d74" dependencies = [ "anyhow", "async-trait", @@ -15691,9 +15410,9 @@ dependencies = [ [[package]] name = "zombienet-prom-metrics-parser" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61ce9c6b2d43be864ad34328d05794079381807f5d77c737a062486966347f" +checksum = "961e30be45b34f6ebeabf29ee2f47b0cd191ea62e40c064752572207509a6f5c" dependencies = [ "pest", "pest_derive", @@ -15702,9 +15421,9 @@ dependencies = [ [[package]] name = "zombienet-provider" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c99cc7c143f1145bda2b2f5a945b8040a898a85fc029dba51f220395a7188d9d" +checksum = "ab0f7f01780b7c99a6c40539d195d979f234305f32808d547438b50829d44262" dependencies = [ "anyhow", "async-trait", @@ -15733,9 +15452,9 @@ dependencies = [ [[package]] name = "zombienet-sdk" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09e5abdad4ad32c1c06cb8fdc4507db026f65987cb5c46ae4224118cc496097b" +checksum = "99a3c5f2d657235b3ab7dc384677e63cde21983029e99106766ecd49e9f8d7f3" dependencies = [ "async-trait", "futures", @@ -15751,9 +15470,9 @@ dependencies = [ [[package]] name = "zombienet-support" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e3310631948f8bb4d394c160c4b063889a4e0c6beadd6b95f9b62d1616ab93c" +checksum = "296f887ea88e07edd771f8e1d0dec5297a58b422f4b884a6292a21ebe03277cb" dependencies = [ "anyhow", "async-trait", diff --git a/crates/pop-cli/src/cli.rs b/crates/pop-cli/src/cli.rs index 3dae776f..f98c934e 100644 --- a/crates/pop-cli/src/cli.rs +++ b/crates/pop-cli/src/cli.rs @@ -146,48 +146,10 @@ impl traits::Confirm for Confirm { fn interact(&mut self) -> Result { self.0.interact() } - /// Sets the initially selected value. - fn initial_value(mut self, initial_value: bool) -> Self { - self.0 = self.0.initial_value(initial_value); - self - } -} - -/// A input prompt using cliclack. -struct Input(cliclack::Input); -impl traits::Input for Input { - /// Sets the default value for the input. - fn default_input(mut self, value: &str) -> Self { - self.0 = self.0.default_input(value); - self - } - /// Starts the prompt interaction. - fn interact(&mut self) -> Result { - self.0.interact() - } - /// Sets the placeholder (hint) text for the input. - fn placeholder(mut self, placeholder: &str) -> Self { - self.0 = self.0.placeholder(placeholder); - self - } - /// Sets whether the input is required. - fn required(mut self, required: bool) -> Self { - self.0 = self.0.required(required); - self - } - /// Sets a validation callback for the input that is called when the user submits. - fn validate( - mut self, - validator: impl Fn(&String) -> std::result::Result<(), &'static str> + 'static, - ) -> Self { - self.0 = self.0.validate(validator); - self - } } /// A input prompt using cliclack. struct Input(cliclack::Input); - impl traits::Input for Input { /// Sets the default value for the input. fn default_input(mut self, value: &str) -> Self { diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 420961bf..d87d349f 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -11,9 +11,8 @@ use clap::Args; use pop_parachains::{ construct_extrinsic, construct_sudo_extrinsic, decode_call_data, encode_call_data, find_dispatchable_by_name, find_pallet_by_name, parse_chain_metadata, set_up_client, - sign_and_submit_extrinsic, submit_signed_extrinsic, submit_signed_extrinsic, supported_actions, - Action, CallData, DynamicPayload, Function, OnlineClient, Pallet, Param, Payload, - SubstrateConfig, + sign_and_submit_extrinsic, submit_signed_extrinsic, supported_actions, Action, CallData, + DynamicPayload, Function, OnlineClient, Pallet, Param, Payload, SubstrateConfig, }; use url::Url; @@ -104,9 +103,10 @@ impl CallChainCommand { // Sign and submit the extrinsic. let result = if self.use_wallet { let call_data = xt.encode_call_data(&chain.client.metadata())?; - submit_extrinsic_with_secure_signing(&chain, call_data, &mut cli).await + submit_extrinsic_with_secure_signing(&chain.client, &chain.url, call_data, &mut cli) + .await } else { - call.submit_extrinsic(&chain.client, xt, &mut cli).await + call.submit_extrinsic(&chain.client, &chain.url, xt, &mut cli).await }; if let Err(e) = result { @@ -276,7 +276,7 @@ impl CallChainCommand { if use_wallet { let call_data_bytes = decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; - submit_extrinsic_with_secure_signing(chain, call_data_bytes, cli) + submit_extrinsic_with_secure_signing(client, &url, call_data_bytes, cli) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; display_message("Call complete.", true, cli)?; @@ -300,7 +300,7 @@ impl CallChainCommand { spinner.start("Signing and submitting the extrinsic and then waiting for finalization, please be patient..."); let call_data_bytes = decode_call_data(call_data).map_err(|err| anyhow!("{}", format!("{err:?}")))?; - let result = sign_and_submit_extrinsic(client, url, CallData::new(call_data_bytes), suri) + let result = sign_and_submit_extrinsic(client, url, CallData::new(call_data_bytes), &suri) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; @@ -488,11 +488,12 @@ impl Call { // Sign and submit an extrinsic using wallet integration. async fn submit_extrinsic_with_secure_signing( - chain: &Chain, + client: &OnlineClient, + url: &Url, call_data: Vec, cli: &mut impl Cli, ) -> Result<()> { - let maybe_payload = wait_for_signature(call_data, chain.url.to_string()).await?; + let maybe_payload = wait_for_signature(call_data, url.to_string()).await?; if let Some(payload) = maybe_payload { cli.success("Signed payload received.")?; let spinner = cliclack::spinner(); @@ -500,7 +501,7 @@ async fn submit_extrinsic_with_secure_signing( "Submitting the extrinsic and then waiting for finalization, please be patient...", ); - let result = submit_signed_extrinsic(chain.client.clone(), payload) + let result = submit_signed_extrinsic(client.clone(), payload) .await .map_err(|err| anyhow!("{}", format!("{err:?}")))?; diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 27ad0615..8717ec93 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -357,33 +357,6 @@ impl UpContractCommand { Ok((call_data, hash)) } } - - async fn wait_for_signature(&self, call_data: Vec) -> anyhow::Result> { - let ui = FrontendFromString::new(include_str!("../../assets/index.html").to_string()); - - let transaction_data = TransactionData::new(self.url.to_string(), call_data); - // starts server - let mut wallet = WalletIntegrationManager::new(ui, transaction_data); - log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; - - log::step("Waiting for signature... Press Ctrl+C to terminate early.")?; - loop { - // Display error, if any. - if let Some(error) = wallet.take_error().await { - log::error(format!("Signing portal error: {error}"))?; - } - - let state = wallet.state.lock().await; - // If the payload is submitted we terminate the frontend. - if !wallet.is_running() || state.signed_payload.is_some() { - wallet.task_handle.await??; - break; - } - } - - let signed_payload = wallet.state.lock().await.signed_payload.clone(); - Ok(signed_payload) - } } impl From for UpOpts { @@ -423,27 +396,6 @@ fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Opti )); } -fn display_contract_info(spinner: &ProgressBar, address: String, code_hash: Option) { - spinner.stop(format!( - "Contract deployed and instantiated:\n{}", - style(format!( - "{}\n{}", - style(format!("{} The contract address is {:?}", console::Emoji("●", ">"), address)) - .dim(), - code_hash - .map(|hash| style(format!( - "{} The contract code hash is {:?}", - console::Emoji("●", ">"), - hash - )) - .dim() - .to_string()) - .unwrap_or_default(), - )) - .dim() - )); -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index 638b3805..465b132f 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -2,14 +2,11 @@ use crate::wallet_integration::{FrontendFromString, TransactionData, WalletIntegrationManager}; use cliclack::log; -use sp_core::bytes::to_hex; pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Result> { let ui = FrontendFromString::new(include_str!("../assets/index.html").to_string()); let transaction_data = TransactionData::new(url, call_data); - let call_data_bytes = to_hex(&transaction_data.call_data(), false); - println!("transaction_data: {:?}", call_data_bytes); // starts server let mut wallet = WalletIntegrationManager::new(ui, transaction_data); log::step(format!("Wallet signing portal started at http://{}", wallet.rpc_url))?; diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 339ec0be..57b2924e 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -4,7 +4,7 @@ use axum::{ routing::{get, post}, Router, }; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use std::{path::PathBuf, sync::Arc}; use tokio::{ sync::{oneshot, Mutex}, @@ -20,7 +20,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(Deserialize, Clone))] +#[cfg_attr(test, derive(serde::Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, @@ -85,12 +85,7 @@ impl WalletIntegrationManager { error: None, })); - // TODO: temporary until we host from here. - let cors = tower_http::cors::CorsLayer::new() - .allow_origin("http://localhost:9090".parse::().unwrap()) - .allow_origin("http://127.0.0.1:9090".parse::().unwrap()) - .allow_methods(Any) // Allow any HTTP method - .allow_headers(Any); // Allow any headers (like 'Content-Type') + let payload = Arc::new(payload); // TODO: temporary until we host from here. let cors = tower_http::cors::CorsLayer::new() @@ -107,7 +102,7 @@ impl WalletIntegrationManager { .merge(frontend.serve_content()) // Custom route for serving frontend. .layer(cors); - let addr = "127.0.0.1:9090"; + let rpc_owned = rpc.to_string(); // Will shut down when the signed payload is received. let task_handle = tokio::spawn(async move { @@ -128,6 +123,7 @@ impl WalletIntegrationManager { } /// Signals the wallet integration server to shut down. + #[allow(dead_code)] pub async fn terminate(&mut self) -> anyhow::Result<()> { terminate_helper(&self.state).await } @@ -230,9 +226,12 @@ async fn terminate_helper(handle: &Arc>) -> anyhow::Result<( pub struct FrontendFromDir { content: PathBuf, } - #[allow(dead_code)] -impl FrontendFromDir {} +impl FrontendFromDir { + pub fn new(content: PathBuf) -> Self { + Self { content } + } +} impl Frontend for FrontendFromDir { fn serve_content(&self) -> Router { @@ -245,6 +244,7 @@ pub struct FrontendFromString { content: String, } +#[allow(dead_code)] impl FrontendFromString { pub fn new(content: String) -> Self { Self { content } @@ -261,6 +261,7 @@ impl Frontend for FrontendFromString { #[cfg(test)] mod tests { use super::*; + use serde_json::json; const TEST_HTML: &str = "Hello, world!"; @@ -339,33 +340,33 @@ mod tests { assert!(wim.task_handle.await.is_ok()); } - // #[tokio::test] - // async fn submit_handler_works() { - // // offset port per test to avoid conflicts - // let addr = "127.0.0.1:9092"; - // let frontend = FrontendFromString::new(TEST_HTML.to_string()); - - // let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); - // wait().await; - - // let addr = format!("http://{}", wim.rpc_url); - // let response = reqwest::Client::new() - // .post(&format!("{}/submit", addr)) - // .json(&"0xDEADBEEF") - // .send() - // .await - // .expect("Failed to submit payload") - // .text() - // .await - // .expect("Failed to parse response"); - - // assert_eq!(response, json!({"status": "success"})); - // assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); - // assert_eq!(wim.is_running(), false); - - // wim.terminate().await.expect("Termination should not fail"); - // assert!(wim.task_handle.await.is_ok()); - // } + #[tokio::test] + async fn submit_handler_works() { + // offset port per test to avoid conflicts + let addr = "127.0.0.1:9092"; + let frontend = FrontendFromString::new(TEST_HTML.to_string()); + + let mut wim = WalletIntegrationManager::new_with_address(frontend, default_payload(), addr); + wait().await; + + let addr = format!("http://{}", wim.rpc_url); + let response = reqwest::Client::new() + .post(&format!("{}/submit", addr)) + .json(&"0xDEADBEEF") + .send() + .await + .expect("Failed to submit payload") + .text() + .await + .expect("Failed to parse response"); + + assert_eq!(response, json!({"status": "success"})); + assert_eq!(wim.state.lock().await.signed_payload, Some("0xDEADBEEF".to_string())); + assert_eq!(wim.is_running(), false); + + wim.terminate().await.expect("Termination should not fail"); + assert!(wim.task_handle.await.is_ok()); + } #[tokio::test] async fn error_handler_works() { From c3355619185bad77a31b3549e04ed92ed11078d5 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 20:48:07 +0100 Subject: [PATCH 133/143] fix: rebase --- crates/pop-cli/src/commands/call/chain.rs | 2 +- crates/pop-common/src/lib.rs | 10 ++++------ crates/pop-parachains/src/build.rs | 4 ++-- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index d87d349f..61982257 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -44,7 +44,7 @@ pub struct CallChainCommand { #[arg(short, long)] suri: Option, /// Use your browser wallet to sign the extrinsic. - #[clap(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] + #[arg(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] use_wallet: bool, /// SCALE encoded bytes representing the call data of the extrinsic. #[arg(name = "call", short, long, conflicts_with_all = ["pallet", "function", "args"])] diff --git a/crates/pop-common/src/lib.rs b/crates/pop-common/src/lib.rs index 8e3022f2..70dbcc8f 100644 --- a/crates/pop-common/src/lib.rs +++ b/crates/pop-common/src/lib.rs @@ -49,18 +49,16 @@ pub fn target() -> Result<&'static str, Error> { } match ARCH { - "aarch64" => { + "aarch64" => return match OS { "macos" => Ok("aarch64-apple-darwin"), _ => Ok("aarch64-unknown-linux-gnu"), - } - }, - "x86_64" | "x86" => { + }, + "x86_64" | "x86" => return match OS { "macos" => Ok("x86_64-apple-darwin"), _ => Ok("x86_64-unknown-linux-gnu"), - } - }, + }, &_ => {}, } Err(Error::UnsupportedPlatform { arch: ARCH, os: OS }) diff --git a/crates/pop-parachains/src/build.rs b/crates/pop-parachains/src/build.rs index 1cc869e3..1e369f37 100644 --- a/crates/pop-parachains/src/build.rs +++ b/crates/pop-parachains/src/build.rs @@ -51,8 +51,8 @@ pub fn is_supported(path: Option<&Path>) -> Result { const DEPENDENCIES: [&str; 4] = ["cumulus-client-collator", "cumulus-primitives-core", "parachains-common", "polkadot-sdk"]; Ok(DEPENDENCIES.into_iter().any(|d| { - manifest.dependencies.contains_key(d) - || manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) + manifest.dependencies.contains_key(d) || + manifest.workspace.as_ref().map_or(false, |w| w.dependencies.contains_key(d)) })) } From 223a2fdfc2424a8db7f8b06a13b0bf5c3cba4dd6 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 21:10:32 +0100 Subject: [PATCH 134/143] refactor: small changes --- crates/pop-cli/src/commands/call/chain.rs | 41 ++++++++++------------- crates/pop-contracts/src/up.rs | 1 - 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/crates/pop-cli/src/commands/call/chain.rs b/crates/pop-cli/src/commands/call/chain.rs index 61982257..234f0910 100644 --- a/crates/pop-cli/src/commands/call/chain.rs +++ b/crates/pop-cli/src/commands/call/chain.rs @@ -111,11 +111,11 @@ impl CallChainCommand { if let Err(e) = result { display_message(&e.to_string(), false, &mut cli)?; + break; } - if !prompt_to_repeat_call - || !cli - .confirm("Do you want to perform another call?") + if !prompt_to_repeat_call || + !cli.confirm("Do you want to perform another call?") .initial_value(false) .interact()? { @@ -256,7 +256,7 @@ impl CallChainCommand { let mut use_wallet = self.use_wallet; let suri = match self.suri.as_ref() { Some(suri) => suri.clone(), - None => { + None => if !self.use_wallet { if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") .initial_value(true) @@ -269,8 +269,7 @@ impl CallChainCommand { } } else { DEFAULT_URI.to_string() - } - }, + }, }; // Perform signing steps with wallet integration and return early. if use_wallet { @@ -283,9 +282,8 @@ impl CallChainCommand { return Ok(()); } cli.info(format!("Encoded call data: {}", call_data))?; - if !self.skip_confirm - && !cli - .confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm && + !cli.confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { @@ -313,7 +311,7 @@ impl CallChainCommand { // execute the call via `sudo`. fn configure_sudo(&mut self, chain: &Chain, cli: &mut impl Cli) -> Result<()> { match find_dispatchable_by_name(&chain.pallets, "Sudo", "sudo") { - Ok(_) => { + Ok(_) => if !self.sudo { self.sudo = cli .confirm( @@ -321,16 +319,14 @@ impl CallChainCommand { ) .initial_value(false) .interact()?; - } - }, - Err(_) => { + }, + Err(_) => if self.sudo { cli.warning( "NOTE: sudo is not supported by the chain. Ignoring `--sudo` flag.", )?; self.sudo = false; - } - }, + }, } Ok(()) } @@ -346,11 +342,11 @@ impl CallChainCommand { // Function to check if all required fields are specified. fn requires_user_input(&self) -> bool { - self.pallet.is_none() - || self.function.is_none() - || self.args.is_empty() - || self.url.is_none() - || self.suri.is_none() + self.pallet.is_none() || + self.function.is_none() || + self.args.is_empty() || + self.url.is_none() || + self.suri.is_none() } /// Replaces file arguments with their contents, leaving other arguments unchanged. @@ -432,9 +428,8 @@ impl Call { tx: DynamicPayload, cli: &mut impl Cli, ) -> Result<()> { - if !self.skip_confirm - && !cli - .confirm("Do you want to submit the extrinsic?") + if !self.skip_confirm && + !cli.confirm("Do you want to submit the extrinsic?") .initial_value(true) .interact()? { diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index b1e4304b..033dc5eb 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -110,7 +110,6 @@ pub async fn set_up_upload( let upload_exec: UploadExec = UploadCommandBuilder::new(extrinsic_opts).done().await?; - Ok(upload_exec) } From acc67b76d0bc817856110e84d62add11c4637a40 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 21:14:32 +0100 Subject: [PATCH 135/143] refactor: improve small details --- Cargo.toml | 6 +++--- crates/pop-cli/src/commands/call/contract.rs | 2 +- crates/pop-cli/src/common/wallet.rs | 2 +- crates/pop-cli/src/wallet_integration.rs | 4 ++-- crates/pop-contracts/Cargo.toml | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 956d7327..c96a1bfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,12 +49,14 @@ subxt = "0.38.0" ink_env = "5.0.0" sp-core = "32.0.0" sp-weights = "31.0.0" +scale-info = { version = "2.11.4", default-features = false, features = ["derive"] } +scale-value = { version = "0.17.0", default-features = false, features = ["from-string", "parser-ss58"] } # TODO: git deps #contract-build = "5.0.0-alpha" contract-build = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } #contract-extrinsics = "5.0.0-alpha" contract-extrinsics = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } -#contract-transcode = "5.0.0-alpha" +#contract-transcode = "5.0.0" contract-transcode = { git = "https://github.com/use-ink/cargo-contract", branch = "peter/chore-make-types-pub" } heck = "0.5.0" @@ -65,8 +67,6 @@ walkdir = "2.5" indexmap = "2.2" toml_edit = { version = "0.22", features = ["serde"] } symlink = "0.1" -scale-info = { version = "2.11.4", default-features = false, features = ["derive"] } -scale-value = { version = "0.17.0", default-features = false, features = ["from-string", "parser-ss58"] } serde_json = { version = "1.0", features = ["preserve_order"] } serde = { version = "1.0", features = ["derive"] } zombienet-sdk = "0.2.18" diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index c8125089..c6b3545c 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -57,7 +57,7 @@ pub struct CallContractCommand { #[arg(name = "suri", long, short, default_value = DEFAULT_URI)] suri: String, /// Use your browser wallet to sign a transaction. - #[clap(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] + #[arg(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] use_wallet: bool, /// Submit an extrinsic for on-chain execution. #[arg(short('x'), long)] diff --git a/crates/pop-cli/src/common/wallet.rs b/crates/pop-cli/src/common/wallet.rs index cf65ecd6..465b132f 100644 --- a/crates/pop-cli/src/common/wallet.rs +++ b/crates/pop-cli/src/common/wallet.rs @@ -30,6 +30,7 @@ pub async fn wait_for_signature(call_data: Vec, url: String) -> anyhow::Resu Ok(signed_payload) } +#[ignore] #[cfg(test)] mod tests { use super::*; @@ -39,7 +40,6 @@ mod tests { // This is a helper test for an actual running pop CLI. // It can serve as the "frontend" to query the payload, sign it // and submit back to the CLI. - #[ignore] #[tokio::test] async fn sign_call_data() -> anyhow::Result<()> { use subxt::{config::DefaultExtrinsicParamsBuilder as Params, tx::Payload}; diff --git a/crates/pop-cli/src/wallet_integration.rs b/crates/pop-cli/src/wallet_integration.rs index 3849a0ff..57b2924e 100644 --- a/crates/pop-cli/src/wallet_integration.rs +++ b/crates/pop-cli/src/wallet_integration.rs @@ -4,7 +4,7 @@ use axum::{ routing::{get, post}, Router, }; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use std::{path::PathBuf, sync::Arc}; use tokio::{ sync::{oneshot, Mutex}, @@ -20,7 +20,7 @@ pub trait Frontend { /// Transaction payload to be sent to frontend for signing. #[derive(Serialize, Debug)] -#[cfg_attr(test, derive(Deserialize, Clone))] +#[cfg_attr(test, derive(serde::Deserialize, Clone))] pub struct TransactionData { chain_rpc: String, call_data: Vec, diff --git a/crates/pop-contracts/Cargo.toml b/crates/pop-contracts/Cargo.toml index 3d4f15fb..94a2c6e7 100644 --- a/crates/pop-contracts/Cargo.toml +++ b/crates/pop-contracts/Cargo.toml @@ -33,7 +33,7 @@ subxt.workspace = true # cargo-contracts contract-build.workspace = true contract-extrinsics.workspace = true -contract-transcode.workspace = true +contract-transcode.workspace = true scale-info.workspace = true # pop pop-common = { path = "../pop-common", version = "0.5.0" } From 98f4de2b4c2b6a239f49207d82cdece88bd7c484 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 21:27:55 +0100 Subject: [PATCH 136/143] fix: dry run with use_wallet --- crates/pop-cli/src/commands/call/contract.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index c6b3545c..d1052b45 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -316,7 +316,7 @@ impl CallContractCommand { // Resolve who is calling the contract. If a `suri` was provided via the command line, skip // the prompt. if self.suri == DEFAULT_URI && !self.use_wallet { - if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + if message.mutates && cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") .initial_value(true) .interact()? { self.use_wallet = true; @@ -385,7 +385,7 @@ impl CallContractCommand { // Perform signing steps with wallet integration, skipping secure signing for query-only // operations. - if self.use_wallet && !self.dry_run && self.execute { + if self.use_wallet { self.execute_with_secure_signing(call_exec, cli).await?; return self.finalize_execute_call(cli, prompt_to_repeat_call).await; } From 2de0997723e1816fb9e93abc6242dc64e0ee06c0 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Fri, 13 Dec 2024 21:35:39 +0100 Subject: [PATCH 137/143] test: fix unit test --- crates/pop-cli/src/commands/call/contract.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index d1052b45..c53dc1e5 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -693,7 +693,6 @@ mod tests { Some(items), 1, // "get" message ) - .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", false) .expect_input("Signer calling the contract:", "//Alice".into()) .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", From df6c78c2ae18687c3bea194b47a60562abe47b32 Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 13 Dec 2024 23:24:44 -0700 Subject: [PATCH 138/143] feat: use_wallet short flag 'w' --- crates/pop-cli/src/commands/call/contract.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index c53dc1e5..c3f4ddc8 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -57,7 +57,7 @@ pub struct CallContractCommand { #[arg(name = "suri", long, short, default_value = DEFAULT_URI)] suri: String, /// Use your browser wallet to sign a transaction. - #[arg(name = "use-wallet", long, default_value = "false", conflicts_with = "suri")] + #[arg(name = "use-wallet", long, short('w'), default_value = "false", conflicts_with = "suri")] use_wallet: bool, /// Submit an extrinsic for on-chain execution. #[arg(short('x'), long)] From b70cb52669eb9ed0fdfcff0998e8887e78f077cd Mon Sep 17 00:00:00 2001 From: Peter White Date: Fri, 13 Dec 2024 23:36:25 -0700 Subject: [PATCH 139/143] fix: don't prompt for dry-run when --use-wallet --- crates/pop-cli/src/commands/call/contract.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index c3f4ddc8..569f7b7f 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -331,7 +331,7 @@ impl CallContractCommand { } // Finally prompt for confirmation. - let is_call_confirmed = if message.mutates && !self.dev_mode { + let is_call_confirmed = if message.mutates && !self.dev_mode && !self.use_wallet { cli.confirm("Do you want to execute the call? (Selecting 'No' will perform a dry run)") .initial_value(true) .interact()? From 81738f4f15003e126a73f7fdbb7a487f582d2476 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Sat, 14 Dec 2024 21:04:54 +0100 Subject: [PATCH 140/143] fix: do not prompt for signer account if is a read-only function --- crates/pop-cli/src/commands/call/contract.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 569f7b7f..4a727f95 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -315,8 +315,8 @@ impl CallContractCommand { // Resolve who is calling the contract. If a `suri` was provided via the command line, skip // the prompt. - if self.suri == DEFAULT_URI && !self.use_wallet { - if message.mutates && cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") + if self.suri == DEFAULT_URI && !self.use_wallet && message.mutates { + if cli.confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')") .initial_value(true) .interact()? { self.use_wallet = true; @@ -693,7 +693,6 @@ mod tests { Some(items), 1, // "get" message ) - .expect_input("Signer calling the contract:", "//Alice".into()) .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", temp_dir.path().join("testing").display().to_string(), @@ -767,7 +766,6 @@ mod tests { "Provide the on-chain contract address:", "15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm".into(), ) - .expect_input("Signer calling the contract:", "//Alice".into()) .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", temp_dir.path().join("testing").display().to_string(), @@ -855,7 +853,6 @@ mod tests { .expect_input("Enter the gas limit:", "".into()) // Only if call .expect_input("Enter the proof size limit:", "".into()) // Only if call .expect_confirm("Do you want to use your browser wallet to sign the transaction? (Selecting 'No' will prompt you to manually enter the secret key URI for signing, e.g., '//Alice')", true) - .expect_confirm("Do you want to execute the call? (Selecting 'No' will perform a dry run)", true) .expect_info(format!( "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message specific_flip --args \"true\", \"2\" --value 50 --url wss://rpc1.paseo.popnetwork.xyz/ --use-wallet --execute", temp_dir.path().join("testing").display().to_string(), From 55367b00f420ca4461977eea16115961cd0c52c2 Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Sat, 14 Dec 2024 21:09:46 +0100 Subject: [PATCH 141/143] refactor: storage_deposit_limit --- crates/pop-contracts/src/call.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/pop-contracts/src/call.rs b/crates/pop-contracts/src/call.rs index 83347803..ed948c38 100644 --- a/crates/pop-contracts/src/call.rs +++ b/crates/pop-contracts/src/call.rs @@ -209,7 +209,7 @@ pub fn get_call_payload( call_exec: &CallExec, gas_limit: Weight, ) -> anyhow::Result> { - let storage_deposit_limit: Option = None; + let storage_deposit_limit: Option = call_exec.opts().storage_deposit_limit(); let mut encoded_data = Vec::::new(); Call::new( call_exec.contract().into(), From 6327d7e2f4c5d1a1b61fa75db1f4e86d539ead2c Mon Sep 17 00:00:00 2001 From: AlexD10S Date: Sat, 14 Dec 2024 21:33:39 +0100 Subject: [PATCH 142/143] chore: warning if use_wallet is specified in a read-only call --- crates/pop-cli/src/commands/call/contract.rs | 17 +++++++++++++---- crates/pop-contracts/src/lib.rs | 2 +- crates/pop-contracts/src/utils/metadata.rs | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index 4a727f95..a20ba0cc 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -10,11 +10,11 @@ use cliclack::spinner; use pop_common::{DefaultConfig, Keypair}; use pop_contracts::{ build_smart_contract, call_smart_contract, call_smart_contract_from_signed_payload, - dry_run_call, dry_run_gas_estimate_call, get_call_payload, get_messages, parse_account, - set_up_call, CallExec, CallOpts, DefaultEnvironment, Verbosity, + dry_run_call, dry_run_gas_estimate_call, get_call_payload, get_message, get_messages, + parse_account, set_up_call, CallExec, CallOpts, DefaultEnvironment, Verbosity, }; use sp_weights::Weight; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; const DEFAULT_URL: &str = "ws://localhost:9944/"; const DEFAULT_URI: &str = "//Alice"; @@ -357,6 +357,14 @@ impl CallContractCommand { return Err(anyhow!("Please specify the message to call.")); }, }; + // Disable wallet signing and display warning if the call is read-only. + let message_metadata = + get_message(self.path.as_deref().unwrap_or_else(|| Path::new("./")), &message)?; + if !message_metadata.mutates && self.use_wallet { + cli.warning("NOTE: Signing is not required for this read-only call. The '--use-wallet' flag will be ignored.")?; + self.use_wallet = false; + } + let contract = match &self.contract { Some(contract) => contract.to_string(), None => { @@ -697,6 +705,7 @@ mod tests { "pop call contract --path {} --contract 15XausWjFLBBFLDXUSBRfSfZk25warm4wZRV4ZxhZbfvjrJm --message get --url wss://rpc1.paseo.popnetwork.xyz/ --suri //Alice", temp_dir.path().join("testing").display().to_string(), )) + .expect_warning("NOTE: Signing is not required for this read-only call. The '--use-wallet' flag will be ignored.") .expect_warning("Your call has not been executed.") .expect_confirm( "Do you want to perform another call using the existing smart contract?", @@ -715,7 +724,7 @@ mod tests { proof_size: None, url: Url::parse("wss://rpc1.paseo.popnetwork.xyz")?, suri: "//Alice".to_string(), - use_wallet: false, + use_wallet: true, dry_run: false, execute: false, dev_mode: false, diff --git a/crates/pop-contracts/src/lib.rs b/crates/pop-contracts/src/lib.rs index 2c4e5690..6dded2fe 100644 --- a/crates/pop-contracts/src/lib.rs +++ b/crates/pop-contracts/src/lib.rs @@ -29,7 +29,7 @@ pub use up::{ upload_contract_signed, upload_smart_contract, ContractInfo, UpOpts, }; pub use utils::{ - metadata::{get_messages, ContractFunction}, + metadata::{get_message, get_messages, ContractFunction}, parse_account, parse_hex_bytes, }; // External exports diff --git a/crates/pop-contracts/src/utils/metadata.rs b/crates/pop-contracts/src/utils/metadata.rs index 111468f0..0c2d26d6 100644 --- a/crates/pop-contracts/src/utils/metadata.rs +++ b/crates/pop-contracts/src/utils/metadata.rs @@ -117,7 +117,7 @@ fn get_contract_functions( /// # Arguments /// * `path` - Location path of the project or contract artifact. /// * `message` - The label of the contract message. -fn get_message

(path: P, message: &str) -> Result +pub fn get_message

(path: P, message: &str) -> Result where P: AsRef, { From 094e09658822647f690d448d7e08e9afbd275d1d Mon Sep 17 00:00:00 2001 From: Peter White Date: Sat, 14 Dec 2024 17:40:17 -0700 Subject: [PATCH 143/143] chore: cleanup TODOs --- crates/pop-cli/src/commands/call/contract.rs | 1 - crates/pop-cli/src/commands/up/contract.rs | 1 - crates/pop-contracts/src/up.rs | 1 - 3 files changed, 3 deletions(-) diff --git a/crates/pop-cli/src/commands/call/contract.rs b/crates/pop-cli/src/commands/call/contract.rs index a20ba0cc..c81c86c2 100644 --- a/crates/pop-cli/src/commands/call/contract.rs +++ b/crates/pop-cli/src/commands/call/contract.rs @@ -510,7 +510,6 @@ impl CallContractCommand { let weight_limit = if self.gas_limit.is_some() && self.proof_size.is_some() { Weight::from_parts(self.gas_limit.unwrap(), self.proof_size.unwrap()) } else { - // TODO: Frontend will do dry run and update call data. Weight::from_parts(0, 0) }; let call_data = get_call_payload(call_exec, weight_limit)?; diff --git a/crates/pop-cli/src/commands/up/contract.rs b/crates/pop-cli/src/commands/up/contract.rs index 8717ec93..d46659cf 100644 --- a/crates/pop-cli/src/commands/up/contract.rs +++ b/crates/pop-cli/src/commands/up/contract.rs @@ -189,7 +189,6 @@ impl UpContractCommand { if self.upload_only { let result = upload_contract_signed(self.url.as_str(), payload).await; - // TODO: dry (see else below) if let Err(e) = result { spinner.error(format!("An error occurred uploading your contract: {e}")); terminate_node(process)?; diff --git a/crates/pop-contracts/src/up.rs b/crates/pop-contracts/src/up.rs index 033dc5eb..dd7201d9 100644 --- a/crates/pop-contracts/src/up.rs +++ b/crates/pop-contracts/src/up.rs @@ -121,7 +121,6 @@ pub async fn get_upload_payload(code: WasmCode, url: &str) -> anyhow::Result::from_rpc_client(rpc_client).await?;