From d36fa145dc84cc0c2aae18c597228177d51949c0 Mon Sep 17 00:00:00 2001 From: Karan Dhareshwar Date: Fri, 22 Aug 2025 09:40:27 -0500 Subject: [PATCH 1/6] Amend keyspace --- executor/wasm_common/src/keyspace.rs | 9 ++++ executor/wasm_host/src/host.rs | 69 ++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/executor/wasm_common/src/keyspace.rs b/executor/wasm_common/src/keyspace.rs index c7282d93a5..9050f5a547 100644 --- a/executor/wasm_common/src/keyspace.rs +++ b/executor/wasm_common/src/keyspace.rs @@ -15,6 +15,9 @@ pub enum KeyspaceTag { NamedKey = 2, /// Used for a payment info based storage which usually involves payment information. PaymentInfo = 3, + /// assoc + AssociatedKeys = 5, + RemoveAssociatedKeys = 6, } #[repr(u64)] @@ -31,6 +34,9 @@ pub enum Keyspace<'a> { NamedKey(&'a str), /// Entry point payment info. PaymentInfo(&'a str), + /// Associated keys + AssociatedKeys(&'a [u8]), + RemoveAssociatedKeys(&'a [u8]), } impl Keyspace<'_> { @@ -41,6 +47,9 @@ impl Keyspace<'_> { Keyspace::Context(_) => KeyspaceTag::Context, Keyspace::NamedKey(_) => KeyspaceTag::NamedKey, Keyspace::PaymentInfo(_) => KeyspaceTag::PaymentInfo, + Keyspace::AddAssociatedKeys => KeyspaceTag::AssociatedKeys, + Keyspace::UpdateAssociatedKeys => KeyspaceTag::UpdateAssociatedKeys, + Keyspace::RemoveAssociatedKeys => KeyspaceTag::RemoveAssociatedKeys, } } diff --git a/executor/wasm_host/src/host.rs b/executor/wasm_host/src/host.rs index 967873212d..fee42764aa 100644 --- a/executor/wasm_host/src/host.rs +++ b/executor/wasm_host/src/host.rs @@ -48,6 +48,7 @@ use blake2::{ digest::{Update, VariableOutput}, Blake2bVar, }; +use casper_types::addressable_entity::Weight; use keccak_asm::Digest as KeccakDigest; use sha2::Sha256; @@ -188,6 +189,8 @@ pub fn casper_write( Keyspace::PaymentInfo(key_name) } + KeyspaceTag::AssociatedKeys => Keyspace::AssociatedKeys(&key_payload_bytes), + KeyspaceTag::RemoveAssociatedKeys => return Ok(HOST_ERROR_INVALID_INPUT), }; let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { @@ -246,6 +249,44 @@ pub fn casper_write( let entry_point_value = EntryPointValue::V1CasperVm(entry_point); StoredValue::EntryPoint(entry_point_value) } + Keyspace::AssociatedKeys(bytes) => { + let account_hash = match AccountHash::from_bytes(bytes) { + Ok((account_hash, remainder)) => { + if !remainder.is_empty() { + return Ok(HOST_ERROR_INVALID_DATA); + } + account_hash + } + Err(_) => return Ok(HOST_ERROR_INVALID_INPUT), + }; + let weight = match Weight::from_bytes(&value) { + Ok((weight, remainder)) => { + if !remainder.is_empty() { + return Ok(HOST_ERROR_INVALID_DATA); + } + weight + } + Err(_) => return Ok(HOST_ERROR_INVALID_DATA), + }; + + let mut entity = match caller.context_mut().tracking_copy.read(&global_state_key) { + Ok(Some(StoredValue::AddressableEntity(entity))) => entity, + Ok(_) | Err(_) => return Ok(HOST_ERROR_NOT_FOUND), + }; + + if entity.associated_keys().contains_key(&account_hash) { + if let Err(_) = entity.update_associated_key(account_hash, weight) { + return Ok(HOST_ERROR_INVALID_INPUT); + } + } else { + if let Err(_) = entity.add_associated_key(account_hash, weight) { + return Ok(HOST_ERROR_INVALID_INPUT); + } + } + + StoredValue::AddressableEntity(entity) + } + Keyspace::RemoveAssociatedKeys(_) => return Ok(HOST_ERROR_INVALID_INPUT), }; metered_write(&mut caller, global_state_key, stored_value)?; @@ -318,6 +359,8 @@ pub fn casper_remove( Keyspace::PaymentInfo(key_name) } + KeyspaceTag::RemoveAssociatedKeys => Keyspace::RemoveAssociatedKeys(&key_payload_bytes), + KeyspaceTag::AssociatedKeys => return Ok(HOST_ERROR_INVALID_INPUT), }; let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { @@ -330,6 +373,29 @@ pub fn casper_remove( let global_state_read_result = caller.context_mut().tracking_copy.read(&global_state_key); match global_state_read_result { + Ok(Some(StoredValue::AddressableEntity(mut entity))) => { + if let Keyspace::RemoveAssociatedKeys(account_hash_bytes) = keyspace { + let account_hash = match AccountHash::from_bytes(account_hash_bytes) { + Ok((account_hash, remainder)) => { + if !remainder.is_empty() { + return Ok(HOST_ERROR_INVALID_INPUT); + } + account_hash + } + Err(_) => return Ok(HOST_ERROR_INVALID_DATA), + }; + + if let Err(_) = entity.remove_associated_key(account_hash) { + return Ok(HOST_ERROR_INVALID_INPUT); + } + caller + .context_mut() + .tracking_copy + .write(global_state_key, StoredValue::AddressableEntity(entity)) + } else { + return Ok(HOST_ERROR_INVALID_INPUT); + } + } Ok(Some(_stored_value)) => { // Produce a prune transform only if value under a given key exists in the global state caller.context_mut().tracking_copy.prune(global_state_key); @@ -531,6 +597,9 @@ fn keyspace_to_global_state_key( EntryPointAddr::new_v1_entry_point_addr(entity_addr, payload).ok()?; Some(Key::EntryPoint(entry_point_addr)) } + Keyspace::AssociatedKeys(_) | Keyspace::RemoveAssociatedKeys(_) => { + Some(Key::AddressableEntity(entity_addr)) + } } } From b01f07f8cb0da9a556176d039dff6bbe0490c356 Mon Sep 17 00:00:00 2001 From: Karan Dhareshwar Date: Wed, 27 Aug 2025 12:45:30 -0500 Subject: [PATCH 2/6] Add test for assoc keyspace --- Cargo.lock | 7 ++ executor/wasm/tests/integration.rs | 85 ++++++++++++++++++- executor/wasm_common/src/keyspace.rs | 5 +- executor/wasm_host/src/host.rs | 13 +++ .../contracts/vm2/vm2-assoc-keys/Cargo.toml | 11 +++ .../contracts/vm2/vm2-assoc-keys/build.rs | 7 ++ .../contracts/vm2/vm2-assoc-keys/src/lib.rs | 18 ++++ smart_contracts/sdk/src/casper.rs | 18 ++++ vm2-build-contracts.sh | 1 + 9 files changed, 160 insertions(+), 5 deletions(-) create mode 100644 smart_contracts/contracts/vm2/vm2-assoc-keys/Cargo.toml create mode 100644 smart_contracts/contracts/vm2/vm2-assoc-keys/build.rs create mode 100644 smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 7b11407b17..7da785ea6d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7210,6 +7210,13 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "vm2-assoc-keys" +version = "0.1.0" +dependencies = [ + "casper-contract-sdk", +] + [[package]] name = "vm2-cargo-casper" version = "0.1.0" diff --git a/executor/wasm/tests/integration.rs b/executor/wasm/tests/integration.rs index 970ce00a61..409168535a 100644 --- a/executor/wasm/tests/integration.rs +++ b/executor/wasm/tests/integration.rs @@ -37,8 +37,10 @@ use casper_storage::{ KeyPrefix, }; use casper_types::{ - account::AccountHash, bytesrepr::ToBytes, execution::RetValue, BlockHash, Digest, EntityAddr, - Key, StoredValue, Timestamp, + account::AccountHash, + bytesrepr::ToBytes, + execution::{RetValue, TransformKindV2}, + BlockHash, Digest, EntityAddr, Key, StoredValue, Timestamp, }; use fs_extra::dir; use itertools::Itertools; @@ -309,6 +311,85 @@ fn traits() { ); } +#[test] +fn assoc_keys() { + let chainspec_config = ChainspecConfig::from_chainspec_path(&*CHAINSPEC_SYMLINK) + .expect("must get chainspec config"); + + let mut executor = make_executor(&chainspec_config); + let (global_state, state_root_hash, _tempdir) = make_global_state_with_genesis(); + + let execute_request = base_execute_builder(&chainspec_config) + .with_target(ExecutionKind::SessionBytes(read_wasm( + "vm2_assoc_keys.wasm", + ))) + .with_serialized_input(3u8) + .expect("expected serialized input to be correct") + .with_shared_address_generator(make_address_generator()) + .build() + .expect("should build"); + + let add_assoc_keys_result = expect_successful_execution( + &mut executor, + &global_state, + state_root_hash, + execute_request, + ); + + let state_root_hash = global_state + .commit_effects(state_root_hash, add_assoc_keys_result.effects().clone()) + .expect("Should commit"); + + let query_request = QueryRequest::new( + state_root_hash, + Key::AddressableEntity(EntityAddr::Account(DEFAULT_ACCOUNT_HASH.value())), + vec![], + ); + + let query_result = global_state.query(query_request); + if let QueryResult::Success { value, .. } = query_result { + let entity = value.as_addressable_entity().expect("must get entity"); + assert!(entity.associated_keys().len() == 2) + } else { + panic!("Unexpected query result") + } + + let execute_request = base_execute_builder(&chainspec_config) + .with_target(ExecutionKind::SessionBytes(read_wasm( + "vm2_assoc_keys.wasm", + ))) + .with_serialized_input(0u8) + .expect("expected serialized input to be correct") + .with_shared_address_generator(make_address_generator()) + .build() + .expect("should build"); + + let remove_assoc_key = expect_successful_execution( + &mut executor, + &global_state, + state_root_hash, + execute_request, + ); + + let state_root_hash = global_state + .commit_effects(state_root_hash, remove_assoc_key.effects().clone()) + .expect("Should commit"); + + let query_request = QueryRequest::new( + state_root_hash, + Key::AddressableEntity(EntityAddr::Account(DEFAULT_ACCOUNT_HASH.value())), + vec![], + ); + + let query_result = global_state.query(query_request); + if let QueryResult::Success { value, .. } = query_result { + let entity = value.as_addressable_entity().expect("must get entity"); + assert!(entity.associated_keys().len() == 1) + } else { + panic!("Unexpected query result") + } +} + #[test] fn upgradable() { let chainspec_config = ChainspecConfig::from_chainspec_path(&*CHAINSPEC_SYMLINK) diff --git a/executor/wasm_common/src/keyspace.rs b/executor/wasm_common/src/keyspace.rs index 9050f5a547..deeb1d741d 100644 --- a/executor/wasm_common/src/keyspace.rs +++ b/executor/wasm_common/src/keyspace.rs @@ -47,9 +47,8 @@ impl Keyspace<'_> { Keyspace::Context(_) => KeyspaceTag::Context, Keyspace::NamedKey(_) => KeyspaceTag::NamedKey, Keyspace::PaymentInfo(_) => KeyspaceTag::PaymentInfo, - Keyspace::AddAssociatedKeys => KeyspaceTag::AssociatedKeys, - Keyspace::UpdateAssociatedKeys => KeyspaceTag::UpdateAssociatedKeys, - Keyspace::RemoveAssociatedKeys => KeyspaceTag::RemoveAssociatedKeys, + Keyspace::AssociatedKeys(_) => KeyspaceTag::AssociatedKeys, + Keyspace::RemoveAssociatedKeys(_) => KeyspaceTag::RemoveAssociatedKeys, } } diff --git a/executor/wasm_host/src/host.rs b/executor/wasm_host/src/host.rs index fee42764aa..a91ec5c648 100644 --- a/executor/wasm_host/src/host.rs +++ b/executor/wasm_host/src/host.rs @@ -193,6 +193,8 @@ pub fn casper_write( KeyspaceTag::RemoveAssociatedKeys => return Ok(HOST_ERROR_INVALID_INPUT), }; + println!("{:?}", keyspace); + let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { Some(global_state_key) => global_state_key, None => { @@ -284,6 +286,8 @@ pub fn casper_write( } } + println!("{:?}", entity); + StoredValue::AddressableEntity(entity) } Keyspace::RemoveAssociatedKeys(_) => return Ok(HOST_ERROR_INVALID_INPUT), @@ -502,6 +506,8 @@ pub fn casper_read( } Keyspace::PaymentInfo(key_name) } + KeyspaceTag::AssociatedKeys => Keyspace::AssociatedKeys(&key_payload_bytes), + KeyspaceTag::RemoveAssociatedKeys => Keyspace::RemoveAssociatedKeys(&key_payload_bytes), }; let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { @@ -514,6 +520,13 @@ pub fn casper_read( let global_state_read_result = caller.context_mut().tracking_copy.read(&global_state_key); let global_state_raw_bytes: Cow<[u8]> = match global_state_read_result { + Ok(Some(StoredValue::AddressableEntity(entity))) => { + let entity_bytes = match entity.to_bytes() { + Ok(bytes) => bytes, + Err(_) => return Ok(HOST_ERROR_INVALID_DATA), + }; + Cow::Owned(entity_bytes) + } Ok(Some(StoredValue::CLValue(cl_value))) => { let CLType::Any = cl_value.cl_type() else { return Err(InternalHostError::TypeConversion)?; diff --git a/smart_contracts/contracts/vm2/vm2-assoc-keys/Cargo.toml b/smart_contracts/contracts/vm2/vm2-assoc-keys/Cargo.toml new file mode 100644 index 0000000000..518a4619f3 --- /dev/null +++ b/smart_contracts/contracts/vm2/vm2-assoc-keys/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "vm2-assoc-keys" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +casper-contract-sdk = { path = "../../../sdk" } diff --git a/smart_contracts/contracts/vm2/vm2-assoc-keys/build.rs b/smart_contracts/contracts/vm2/vm2-assoc-keys/build.rs new file mode 100644 index 0000000000..12d5fa6ba6 --- /dev/null +++ b/smart_contracts/contracts/vm2/vm2-assoc-keys/build.rs @@ -0,0 +1,7 @@ +fn main() { + // Check if target arch is wasm32 and set link flags accordingly + if std::env::var("TARGET").unwrap() == "wasm32-unknown-unknown" { + println!("cargo:rustc-link-arg=--import-memory"); + println!("cargo:rustc-link-arg=--export-table"); + } +} diff --git a/smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs b/smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs new file mode 100644 index 0000000000..884168a3b9 --- /dev/null +++ b/smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs @@ -0,0 +1,18 @@ +#![cfg_attr(target_arch = "wasm32", no_main)] +#![cfg_attr(target_arch = "wasm32", no_std)] + +pub mod exports { + use casper_contract_sdk::{casper_executor_wasm_common::keyspace::Keyspace, prelude::*}; + + #[casper(export)] + pub fn call(weight: u8) { + let account_hash_bytes = [10u8; 32]; + if weight == 0 { + let keyspace = Keyspace::RemoveAssociatedKeys(&account_hash_bytes); + casper::remove(keyspace).unwrap() + } else { + let keyspace = Keyspace::AssociatedKeys(&account_hash_bytes); + casper::write(keyspace, &[weight]).unwrap(); + } + } +} diff --git a/smart_contracts/sdk/src/casper.rs b/smart_contracts/sdk/src/casper.rs index 492525f4bb..45a7753f55 100644 --- a/smart_contracts/sdk/src/casper.rs +++ b/smart_contracts/sdk/src/casper.rs @@ -113,6 +113,12 @@ pub fn read Option>>( Keyspace::Context(key_bytes) => (KeyspaceTag::Context as u64, key_bytes), Keyspace::NamedKey(key_bytes) => (KeyspaceTag::NamedKey as u64, key_bytes.as_bytes()), Keyspace::PaymentInfo(payload) => (KeyspaceTag::PaymentInfo as u64, payload.as_bytes()), + Keyspace::AssociatedKeys(account_hash_bytes) => { + (KeyspaceTag::AssociatedKeys as u64, account_hash_bytes) + } + Keyspace::RemoveAssociatedKeys(account_hash_bytes) => { + (KeyspaceTag::RemoveAssociatedKeys as u64, account_hash_bytes) + } }; let mut info = casper_contract_sdk_sys::ReadInfo { @@ -159,6 +165,12 @@ pub fn write(key: Keyspace, value: &[u8]) -> Result<(), CommonResult> { Keyspace::Context(key_bytes) => (KeyspaceTag::Context as u64, key_bytes), Keyspace::NamedKey(key_bytes) => (KeyspaceTag::NamedKey as u64, key_bytes.as_bytes()), Keyspace::PaymentInfo(payload) => (KeyspaceTag::PaymentInfo as u64, payload.as_bytes()), + Keyspace::AssociatedKeys(account_hash_bytes) => { + (KeyspaceTag::AssociatedKeys as u64, account_hash_bytes) + } + Keyspace::RemoveAssociatedKeys(account_hash_bytes) => { + (KeyspaceTag::RemoveAssociatedKeys as u64, account_hash_bytes) + } }; let ret = unsafe { casper_contract_sdk_sys::casper_write( @@ -179,6 +191,12 @@ pub fn remove(key: Keyspace) -> Result<(), CommonResult> { Keyspace::Context(key_bytes) => (KeyspaceTag::Context as u64, key_bytes), Keyspace::NamedKey(key_bytes) => (KeyspaceTag::NamedKey as u64, key_bytes.as_bytes()), Keyspace::PaymentInfo(payload) => (KeyspaceTag::PaymentInfo as u64, payload.as_bytes()), + Keyspace::AssociatedKeys(account_hash_bytes) => { + (KeyspaceTag::AssociatedKeys as u64, account_hash_bytes) + } + Keyspace::RemoveAssociatedKeys(account_hash_bytes) => { + (KeyspaceTag::RemoveAssociatedKeys as u64, account_hash_bytes) + } }; let ret = unsafe { casper_contract_sdk_sys::casper_remove(key_space, key_bytes.as_ptr(), key_bytes.len()) diff --git a/vm2-build-contracts.sh b/vm2-build-contracts.sh index df0f97ab96..1418035377 100755 --- a/vm2-build-contracts.sh +++ b/vm2-build-contracts.sh @@ -4,6 +4,7 @@ set -e VM2_BINS=( "vm2-harness" "vm2-cep18-caller" + "vm2-assoc-keys" ) VM2_LIBS=( From 1c4b7802ff272e3b35f46caacdd4234124a30056 Mon Sep 17 00:00:00 2001 From: Karan Dhareshwar Date: Wed, 27 Aug 2025 12:51:54 -0500 Subject: [PATCH 3/6] PR prep --- executor/wasm/tests/integration.rs | 6 ++---- executor/wasm_host/src/host.rs | 14 ++++---------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/executor/wasm/tests/integration.rs b/executor/wasm/tests/integration.rs index 409168535a..2627cbccfd 100644 --- a/executor/wasm/tests/integration.rs +++ b/executor/wasm/tests/integration.rs @@ -37,10 +37,8 @@ use casper_storage::{ KeyPrefix, }; use casper_types::{ - account::AccountHash, - bytesrepr::ToBytes, - execution::{RetValue, TransformKindV2}, - BlockHash, Digest, EntityAddr, Key, StoredValue, Timestamp, + account::AccountHash, bytesrepr::ToBytes, execution::RetValue, BlockHash, Digest, EntityAddr, + Key, StoredValue, Timestamp, }; use fs_extra::dir; use itertools::Itertools; diff --git a/executor/wasm_host/src/host.rs b/executor/wasm_host/src/host.rs index a91ec5c648..d416af1eaf 100644 --- a/executor/wasm_host/src/host.rs +++ b/executor/wasm_host/src/host.rs @@ -193,8 +193,6 @@ pub fn casper_write( KeyspaceTag::RemoveAssociatedKeys => return Ok(HOST_ERROR_INVALID_INPUT), }; - println!("{:?}", keyspace); - let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { Some(global_state_key) => global_state_key, None => { @@ -277,17 +275,13 @@ pub fn casper_write( }; if entity.associated_keys().contains_key(&account_hash) { - if let Err(_) = entity.update_associated_key(account_hash, weight) { - return Ok(HOST_ERROR_INVALID_INPUT); - } - } else { - if let Err(_) = entity.add_associated_key(account_hash, weight) { + if entity.update_associated_key(account_hash, weight).is_err() { return Ok(HOST_ERROR_INVALID_INPUT); } + } else if entity.add_associated_key(account_hash, weight).is_err() { + return Ok(HOST_ERROR_INVALID_INPUT); } - println!("{:?}", entity); - StoredValue::AddressableEntity(entity) } Keyspace::RemoveAssociatedKeys(_) => return Ok(HOST_ERROR_INVALID_INPUT), @@ -389,7 +383,7 @@ pub fn casper_remove( Err(_) => return Ok(HOST_ERROR_INVALID_DATA), }; - if let Err(_) = entity.remove_associated_key(account_hash) { + if entity.remove_associated_key(account_hash).is_err() { return Ok(HOST_ERROR_INVALID_INPUT); } caller From 4d23d69dcdb68195ca56c900245efd3a2846bc9f Mon Sep 17 00:00:00 2001 From: Karan Dhareshwar Date: Tue, 2 Sep 2025 09:55:34 -0500 Subject: [PATCH 4/6] Address merge conflicts --- executor/wasm_host/src/host.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/executor/wasm_host/src/host.rs b/executor/wasm_host/src/host.rs index a2f3d7c2f3..49309245a6 100644 --- a/executor/wasm_host/src/host.rs +++ b/executor/wasm_host/src/host.rs @@ -393,19 +393,7 @@ pub fn casper_remove( let global_state_read_result = caller.context_mut().tracking_copy.read(&global_state_key); match global_state_read_result { - Ok(Some(_)) => { - // If it's a named key pointing to a URef, prune both the named key and the URef. - if let Keyspace::NamedKey(_) = keyspace { - if let Ok(Some(StoredValue::NamedKey(named_key_value))) = - caller.context_mut().tracking_copy.read(&global_state_key) - { - if let Ok(Key::URef(uref)) = named_key_value.get_key() { - caller.context_mut().tracking_copy.prune(Key::URef(uref)); - } - } - } - - // Produce a prune transform for the named key + // Produce a prune transform for the named key Ok(Some(StoredValue::AddressableEntity(mut entity))) => { if let Keyspace::RemoveAssociatedKeys(account_hash_bytes) = keyspace { let account_hash = match AccountHash::from_bytes(account_hash_bytes) { @@ -429,9 +417,17 @@ pub fn casper_remove( return Ok(HOST_ERROR_INVALID_INPUT); } } - Ok(Some(_stored_value)) => { - // Produce a prune transform only if value under a given key exists in the global state - caller.context_mut().tracking_copy.prune(global_state_key); + Ok(Some(_)) => { + // If it's a named key pointing to a URef, prune both the named key and the URef. + if let Keyspace::NamedKey(_) = keyspace { + if let Ok(Some(StoredValue::NamedKey(named_key_value))) = + caller.context_mut().tracking_copy.read(&global_state_key) + { + if let Ok(Key::URef(uref)) = named_key_value.get_key() { + caller.context_mut().tracking_copy.prune(Key::URef(uref)); + } + } + } } Ok(None) => { // Entry does not exist, and we can't proceed with the prune operation From 7bf512cf1768289fe4fd554a4f303359276ae210 Mon Sep 17 00:00:00 2001 From: Karan Dhareshwar Date: Fri, 5 Sep 2025 10:11:43 -0500 Subject: [PATCH 5/6] run cargo update --- Cargo.lock | 613 ++++++++++++++++++++++++++++------------------------- 1 file changed, 324 insertions(+), 289 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index effa7aa499..dae2f1dafe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,7 +71,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "getrandom 0.3.3", "once_cell", "version_check", @@ -234,27 +234,26 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-compression" -version = "0.4.27" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb939d66e4ae03cee6091612804ba446b12878410cfa17f785f4dd67d4014e8" +checksum = "977eb15ea9efd848bb8a4a1a2500347ed7f0bf794edf0dc3ddcf439f43d36b23" dependencies = [ - "brotli", - "flate2", + "compression-codecs", + "compression-core", "futures-core", - "memchr", "pin-project-lite", "tokio", ] [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -297,7 +296,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "miniz_oxide", "object 0.36.7", @@ -356,7 +355,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "cexpr", "clang-sys", "itertools 0.13.0", @@ -367,7 +366,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -393,9 +392,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "blake2" @@ -444,7 +443,7 @@ dependencies = [ "arrayref", "arrayvec 0.7.6", "cc", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "constant_time_eq 0.3.1", ] @@ -489,14 +488,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] name = "brotli" -version = "8.0.1" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -569,7 +568,7 @@ checksum = "efb7846e0cb180355c2dec69e721edafa36919850f1a9f52ffba4ebc0393cb71" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -608,9 +607,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.11" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" +checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" dependencies = [ "serde", ] @@ -657,7 +656,7 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.16", ] [[package]] @@ -698,12 +697,12 @@ dependencies = [ "blake2-rfc", "casper-contract-sdk-sys", "casper-executor-wasm-common", - "darling", + "darling 0.20.11", "paste", "proc-macro2", "quote", "static_assertions", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -711,7 +710,7 @@ name = "casper-contract-sdk" version = "0.1.3" dependencies = [ "base16", - "bitflags 2.9.1", + "bitflags 2.9.4", "bnum", "borsh", "bytes", @@ -719,8 +718,8 @@ dependencies = [ "casper-contract-sdk-sys", "casper-executor-wasm-common", "casper-types", - "cfg-if 1.0.1", - "clap 4.5.45", + "cfg-if 1.0.3", + "clap 4.5.47", "const-fnv1a-hash", "impl-trait-for-tuples", "linkme", @@ -730,7 +729,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.16", ] [[package]] @@ -740,10 +739,10 @@ dependencies = [ "borsh", "casper-contract-sdk", "codegen", - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_json", - "syn 2.0.105", + "syn 2.0.106", "tempfile", "trybuild", ] @@ -827,7 +826,7 @@ dependencies = [ "casper-wasm", "casper-wasm-utils", "casper-wasmi", - "clap 4.5.45", + "clap 4.5.47", "criterion", "datasize", "either", @@ -890,7 +889,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.14", + "thiserror 2.0.16", "toml 0.5.11", "tracing", ] @@ -899,7 +898,7 @@ dependencies = [ name = "casper-executor-wasm-common" version = "0.1.3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "blake2 0.10.6", "borsh", "casper-contract-sdk-sys", @@ -908,7 +907,7 @@ dependencies = [ "num-traits", "safe-transmute", "serde", - "thiserror 2.0.14", + "thiserror 2.0.16", ] [[package]] @@ -930,7 +929,7 @@ dependencies = [ "parking_lot", "safe-transmute", "sha2", - "thiserror 2.0.14", + "thiserror 2.0.16", "tracing", ] @@ -945,7 +944,7 @@ dependencies = [ "casper-types", "parking_lot", "serde", - "thiserror 2.0.14", + "thiserror 2.0.16", ] [[package]] @@ -1156,7 +1155,7 @@ dependencies = [ name = "casper-updater" version = "0.4.0" dependencies = [ - "clap 4.5.45", + "clap 4.5.47", "once_cell", "regex", "semver", @@ -1235,10 +1234,11 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.32" +version = "1.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" +checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" dependencies = [ + "find-msvc-tools", "shlex", ] @@ -1259,9 +1259,9 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -1349,12 +1349,12 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" dependencies = [ "clap_builder", - "clap_derive 4.5.45", + "clap_derive 4.5.47", ] [[package]] @@ -1365,14 +1365,14 @@ checksum = "23b2ea69cefa96b848b73ad516ad1d59a195cdf9263087d977f648a818c8b43e" dependencies = [ "anstyle", "cargo_metadata 0.18.1", - "clap 4.5.45", + "clap 4.5.47", ] [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" dependencies = [ "anstream", "anstyle", @@ -1396,14 +1396,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -1445,6 +1445,24 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "compression-codecs" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "485abf41ac0c8047c07c87c72c8fb3eb5197f6e9d7ded615dfd1a00ae00a0f64" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" + [[package]] name = "const-fnv1a-hash" version = "1.1.0" @@ -1555,7 +1573,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d1ea1c2a2f898d2a6ff149587b8a04f41ee708d248c723f01ac2f0f01edc0b3" dependencies = [ "autocfg", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "scopeguard", "windows-sys 0.59.0", @@ -1583,7 +1601,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -1601,7 +1619,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -1667,7 +1685,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.45", + "clap 4.5.47", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1734,7 +1752,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "crossterm_winapi", "derive_more 2.0.1", "document-features", @@ -1809,7 +1827,7 @@ version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "cpufeatures", "curve25519-dalek-derive", "digest 0.10.7", @@ -1827,7 +1845,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -1836,8 +1854,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1851,7 +1879,20 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.105", + "syn 2.0.106", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -1860,9 +1901,20 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -1871,7 +1923,7 @@ version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "crossbeam-utils", "hashbrown 0.14.5", "lock_api", @@ -1915,7 +1967,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ - "uuid 1.18.0", + "uuid 1.18.1", ] [[package]] @@ -1946,7 +1998,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -1967,7 +2019,7 @@ dependencies = [ "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -2071,7 +2123,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -2426,7 +2478,7 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -2495,28 +2547,28 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] name = "enumset" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ee17054f550fd7400e1906e2f9356c7672643ed34008a9e8abe147ccd2d821" +checksum = "25b07a8dfbbbfc0064c0a6bdf9edcf966de6b1c33ce344bdeca3b41615452634" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d07902c93376f1e96c34abc4d507c0911df3816cef50b01f5a2ff3ad8c370d" +checksum = "f43e744e4ea338060faee68ed933e46e722fb7f3617e722a5772d7e856d8b3ce" dependencies = [ - "darling", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -2549,7 +2601,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -2653,14 +2705,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "libredox", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2671,6 +2723,12 @@ dependencies = [ "casper-types", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" + [[package]] name = "findshlibs" version = "0.10.2" @@ -2716,9 +2774,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -2795,7 +2853,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -2934,7 +2992,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -2947,10 +3005,10 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.3+wasi-0.2.4", ] [[package]] @@ -3052,7 +3110,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" dependencies = [ "fallible-iterator 0.3.0", - "indexmap 2.10.0", + "indexmap 2.11.0", "stable_deref_trait", ] @@ -3123,7 +3181,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.10.0", + "indexmap 2.11.0", "slab", "tokio", "tokio-util 0.7.16", @@ -3136,7 +3194,7 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "crunchy", ] @@ -3489,9 +3547,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -3516,7 +3574,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -3565,9 +3623,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", "hashbrown 0.15.5", @@ -3580,7 +3638,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88" dependencies = [ "ahash", - "indexmap 2.10.0", + "indexmap 2.11.0", "is-terminal", "itoa", "log", @@ -3593,12 +3651,12 @@ dependencies = [ [[package]] name = "io-uring" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ - "bitflags 2.9.1", - "cfg-if 1.0.1", + "bitflags 2.9.4", + "cfg-if 1.0.3", "libc", ] @@ -3678,9 +3736,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" dependencies = [ "once_cell", "wasm-bindgen", @@ -3692,7 +3750,7 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "ecdsa", "elliptic-curve", "sha2", @@ -3754,7 +3812,7 @@ version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "windows-targets 0.53.3", ] @@ -3770,7 +3828,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "libc", "redox_syscall", ] @@ -3798,7 +3856,7 @@ checksum = "b01f197a15988fb5b2ec0a5a9800c97e70771499c456ad757d63b3c5e9b96e75" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -3878,9 +3936,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "serde", "value-bag", @@ -3928,11 +3986,11 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -3969,9 +4027,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" dependencies = [ "libc", ] @@ -4111,7 +4169,7 @@ checksum = "f2e3795a5d2da581a8b252fec6022eee01aea10161a4d1bf237d4cbe47f7e988" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -4193,7 +4251,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", ] @@ -4223,12 +4281,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -4272,7 +4329,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -4345,7 +4402,7 @@ dependencies = [ "crc32fast", "flate2", "hashbrown 0.14.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "memchr", "ruzstd", ] @@ -4389,8 +4446,8 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.1", - "cfg-if 1.0.1", + "bitflags 2.9.4", + "cfg-if 1.0.3", "foreign-types", "libc", "once_cell", @@ -4406,7 +4463,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -4460,12 +4517,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "overwrite-uref-content" version = "0.1.0" @@ -4490,7 +4541,7 @@ version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "redox_syscall", "smallvec", @@ -4524,9 +4575,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pin-project" @@ -4545,7 +4596,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -4694,9 +4745,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -4709,7 +4760,7 @@ checksum = "afad4d4df7b31280028245f152d5a575083e2abb822d05736f5e47653e77689f" dependencies = [ "aligned-vec", "backtrace", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "criterion", "findshlibs", "inferno", @@ -4747,12 +4798,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.36" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -4807,14 +4858,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] name = "proc-macro2" -version = "1.0.97" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -4825,7 +4876,7 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "fnv", "lazy_static", "memchr", @@ -4841,13 +4892,13 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.1", + "bitflags 2.9.4", "lazy_static", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax 0.8.5", + "regex-syntax", "rusty-fork", "tempfile", "unarray", @@ -4872,7 +4923,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -4912,7 +4963,7 @@ checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -4921,7 +4972,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "memchr", "unicase", ] @@ -5165,7 +5216,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", ] [[package]] @@ -5178,47 +5229,32 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" 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", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[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" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "region" @@ -5477,7 +5513,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "getrandom 0.2.16", "libc", "untrusted 0.9.0", @@ -5493,14 +5529,14 @@ dependencies = [ "bytecheck 0.8.1", "bytes", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "munge", "ptr_meta 0.3.0", "rancor", "rend", "rkyv_derive", "tinyvec", - "uuid 1.18.0", + "uuid 1.18.1", ] [[package]] @@ -5511,7 +5547,7 @@ checksum = "4270433626cffc9c4c1d3707dd681f2a2718d3d7b09ad754bec137acecda8d22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -5563,7 +5599,7 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys", @@ -5695,7 +5731,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -5729,7 +5765,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.4", "core-foundation", "core-foundation-sys", "libc", @@ -5817,7 +5853,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -5828,16 +5864,16 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.142" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "itoa", "memchr", "ryu", @@ -5852,7 +5888,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -5908,7 +5944,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "cpufeatures", "digest 0.10.7", ] @@ -5919,7 +5955,7 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "cpufeatures", "digest 0.10.7", ] @@ -5931,7 +5967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" dependencies = [ "cc", - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -6210,7 +6246,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -6226,9 +6262,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9da12f8fecbbeaa1ee62c1d50dc656407e007c3ee7b2a41afce4b5089eaef15e" dependencies = [ "debugid", - "memmap2 0.9.7", + "memmap2 0.9.8", "stable_deref_trait", - "uuid 1.18.0", + "uuid 1.18.1", ] [[package]] @@ -6255,9 +6291,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.105" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc3fcb250e53458e712715cf74285c1f889686520d79294a9ef3bd7aa1fc619" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -6278,7 +6314,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -6345,15 +6381,15 @@ checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -6409,11 +6445,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.14" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.14", + "thiserror-impl 2.0.16", ] [[package]] @@ -6424,18 +6460,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "2.0.14" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -6444,7 +6480,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -6469,9 +6505,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -6508,7 +6544,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -6625,7 +6661,7 @@ version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -6638,13 +6674,13 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 1.0.0", "toml_datetime 0.7.0", "toml_parser", "toml_writer", - "winnow 0.7.12", + "winnow 0.7.13", ] [[package]] @@ -6671,7 +6707,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -6684,7 +6720,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "toml_datetime 0.6.11", "winnow 0.5.40", ] @@ -6695,12 +6731,12 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", - "winnow 0.7.12", + "winnow 0.7.13", ] [[package]] @@ -6709,7 +6745,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" dependencies = [ - "winnow 0.7.12", + "winnow 0.7.13", ] [[package]] @@ -6771,7 +6807,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -6817,14 +6853,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "serde", "serde_json", "sharded-slab", @@ -7012,7 +7048,7 @@ version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "static_assertions", ] @@ -7132,13 +7168,14 @@ dependencies = [ [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -7171,9 +7208,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.18.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ "js-sys", "wasm-bindgen", @@ -7221,7 +7258,7 @@ dependencies = [ "pulldown-cmark", "regex", "semver", - "syn 2.0.105", + "syn 2.0.106", "toml 0.7.8", "url", ] @@ -7248,7 +7285,7 @@ dependencies = [ "cargo_metadata 0.19.2", "casper-contract-sdk", "casper-contract-sdk-sys", - "clap 4.5.45", + "clap 4.5.47", "clap-cargo", "crossterm", "include_dir", @@ -7256,7 +7293,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.16", "wabt", ] @@ -7320,7 +7357,7 @@ dependencies = [ "casper-executor-wasm-common", "impls", "serde_json", - "thiserror 2.0.14", + "thiserror 2.0.16", ] [[package]] @@ -7487,46 +7524,47 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "js-sys", "once_cell", "wasm-bindgen", @@ -7535,9 +7573,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7545,22 +7583,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" dependencies = [ "unicode-ident", ] @@ -7576,12 +7614,12 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.236.0" +version = "0.238.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3108979166ab0d3c7262d2e16a2190ffe784b2a5beb963edef154b5e8e07680b" +checksum = "d50d48c31c615f77679b61c607b8151378a5d03159616bf3d17e8e2005afdaf5" dependencies = [ "leb128fmt", - "wasmparser 0.236.0", + "wasmparser 0.238.1", ] [[package]] @@ -7605,9 +7643,9 @@ checksum = "8b104b9437e9100943fb01880cc210ebe250cc4aa2f7e121f068033a76d29cc4" dependencies = [ "bindgen", "bytes", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "cmake", - "indexmap 2.10.0", + "indexmap 2.11.0", "js-sys", "more-asserts", "rustc-demangle", @@ -7636,7 +7674,7 @@ checksum = "d9dd5c640b9e6dcc64bcad987b3133e19f1c9919a8e0c732eb11a33f650bbf54" dependencies = [ "backtrace", "bytes", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "enum-iterator 0.7.0", "enumset", "leb128", @@ -7710,7 +7748,7 @@ dependencies = [ "enumset", "getrandom 0.2.16", "hex", - "indexmap 2.10.0", + "indexmap 2.11.0", "more-asserts", "rkyv", "sha2", @@ -7727,13 +7765,13 @@ checksum = "20b3f40e1e18d6cd040d6d1ea32affbf2f64ff059eff3b85614bccb8ff95c59b" dependencies = [ "backtrace", "cc", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "corosensei", "crossbeam-queue", "dashmap", "enum-iterator 0.7.0", "fnv", - "indexmap 2.10.0", + "indexmap 2.11.0", "libc", "mach2", "memoffset", @@ -7758,9 +7796,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cc7c63191ae61c70befbe6045b9be65ef2082fa89421a386ae172cb1e08e92d" dependencies = [ "ahash", - "bitflags 2.9.1", + "bitflags 2.9.4", "hashbrown 0.14.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "semver", ] @@ -7770,18 +7808,18 @@ version = "0.219.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5220ee4c6ffcc0cb9d7c47398052203bc902c8ef3985b0c8134118440c0b2921" dependencies = [ - "bitflags 2.9.1", - "indexmap 2.10.0", + "bitflags 2.9.4", + "indexmap 2.11.0", ] [[package]] name = "wasmparser" -version = "0.236.0" +version = "0.238.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d1eee846a705f6f3cb9d7b9f79b54583810f1fb57a1e3aea76d1742db2e3d2" +checksum = "3fa99c8328024423875ae4a55345cfde8f0371327fb2d0f33b0f52a06fc44408" dependencies = [ - "bitflags 2.9.1", - "indexmap 2.10.0", + "bitflags 2.9.4", + "indexmap 2.11.0", "semver", ] @@ -7798,31 +7836,31 @@ dependencies = [ [[package]] name = "wast" -version = "236.0.0" +version = "238.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d6b6faeab519ba6fbf9b26add41617ca6f5553f99ebc33d876e591d2f4f3c6" +checksum = "b0a564e7eab2abb8920c1302b90eb2c98a15efbbe30fc060d4e2d88483aa23fe" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width 0.2.1", - "wasm-encoder 0.236.0", + "wasm-encoder 0.238.1", ] [[package]] name = "wat" -version = "1.236.0" +version = "1.238.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc31704322400f461f7f31a5f9190d5488aaeafb63ae69ad2b5888d2704dcb08" +checksum = "0eb84e6ac2997025f80482266fdc9f60fa28ba791b674bfd33855e77fe867631" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" dependencies = [ "js-sys", "wasm-bindgen", @@ -7882,11 +7920,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -8134,9 +8172,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -8147,18 +8185,15 @@ version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "windows-sys 0.48.0", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" [[package]] name = "withdraw-bid" @@ -8210,7 +8245,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", "synstructure", ] @@ -8231,7 +8266,7 @@ checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] [[package]] @@ -8251,7 +8286,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", "synstructure", ] @@ -8291,5 +8326,5 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.105", + "syn 2.0.106", ] From 96e4f8f842ae5ff0208033073cd8a8211f9960f6 Mon Sep 17 00:00:00 2001 From: Karan Dhareshwar Date: Mon, 8 Sep 2025 09:03:40 -0500 Subject: [PATCH 6/6] Address PR feedback --- executor/wasm_common/src/keyspace.rs | 7 ++----- executor/wasm_host/src/host.rs | 15 +++++---------- .../contracts/vm2/vm2-assoc-keys/src/lib.rs | 2 +- smart_contracts/sdk/src/casper.rs | 9 --------- 4 files changed, 8 insertions(+), 25 deletions(-) diff --git a/executor/wasm_common/src/keyspace.rs b/executor/wasm_common/src/keyspace.rs index deeb1d741d..0e27fbdc41 100644 --- a/executor/wasm_common/src/keyspace.rs +++ b/executor/wasm_common/src/keyspace.rs @@ -15,9 +15,8 @@ pub enum KeyspaceTag { NamedKey = 2, /// Used for a payment info based storage which usually involves payment information. PaymentInfo = 3, - /// assoc + /// Used for updating the associated keys for a given entity. AssociatedKeys = 5, - RemoveAssociatedKeys = 6, } #[repr(u64)] @@ -34,9 +33,8 @@ pub enum Keyspace<'a> { NamedKey(&'a str), /// Entry point payment info. PaymentInfo(&'a str), - /// Associated keys + /// Used for updating the associated keys for a given entity AssociatedKeys(&'a [u8]), - RemoveAssociatedKeys(&'a [u8]), } impl Keyspace<'_> { @@ -48,7 +46,6 @@ impl Keyspace<'_> { Keyspace::NamedKey(_) => KeyspaceTag::NamedKey, Keyspace::PaymentInfo(_) => KeyspaceTag::PaymentInfo, Keyspace::AssociatedKeys(_) => KeyspaceTag::AssociatedKeys, - Keyspace::RemoveAssociatedKeys(_) => KeyspaceTag::RemoveAssociatedKeys, } } diff --git a/executor/wasm_host/src/host.rs b/executor/wasm_host/src/host.rs index 49309245a6..6880ca2a13 100644 --- a/executor/wasm_host/src/host.rs +++ b/executor/wasm_host/src/host.rs @@ -190,7 +190,6 @@ pub fn casper_write( Keyspace::PaymentInfo(key_name) } KeyspaceTag::AssociatedKeys => Keyspace::AssociatedKeys(&key_payload_bytes), - KeyspaceTag::RemoveAssociatedKeys => return Ok(HOST_ERROR_INVALID_INPUT), }; let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { @@ -306,7 +305,6 @@ pub fn casper_write( StoredValue::AddressableEntity(entity) } - Keyspace::RemoveAssociatedKeys(_) => return Ok(HOST_ERROR_INVALID_INPUT), }; metered_write(&mut caller, global_state_key, stored_value)?; @@ -379,8 +377,7 @@ pub fn casper_remove( Keyspace::PaymentInfo(key_name) } - KeyspaceTag::RemoveAssociatedKeys => Keyspace::RemoveAssociatedKeys(&key_payload_bytes), - KeyspaceTag::AssociatedKeys => return Ok(HOST_ERROR_INVALID_INPUT), + KeyspaceTag::AssociatedKeys => Keyspace::AssociatedKeys(&key_payload_bytes), }; let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { @@ -395,7 +392,7 @@ pub fn casper_remove( match global_state_read_result { // Produce a prune transform for the named key Ok(Some(StoredValue::AddressableEntity(mut entity))) => { - if let Keyspace::RemoveAssociatedKeys(account_hash_bytes) = keyspace { + if let Keyspace::AssociatedKeys(account_hash_bytes) = keyspace { let account_hash = match AccountHash::from_bytes(account_hash_bytes) { Ok((account_hash, remainder)) => { if !remainder.is_empty() { @@ -419,7 +416,7 @@ pub fn casper_remove( } Ok(Some(_)) => { // If it's a named key pointing to a URef, prune both the named key and the URef. - if let Keyspace::NamedKey(_) = keyspace { + if let Keyspace::NamedKey(_) | Keyspace::Context(_) = keyspace { if let Ok(Some(StoredValue::NamedKey(named_key_value))) = caller.context_mut().tracking_copy.read(&global_state_key) { @@ -428,6 +425,7 @@ pub fn casper_remove( } } } + caller.context_mut().tracking_copy.prune(global_state_key) } Ok(None) => { // Entry does not exist, and we can't proceed with the prune operation @@ -532,7 +530,6 @@ pub fn casper_read( Keyspace::PaymentInfo(key_name) } KeyspaceTag::AssociatedKeys => Keyspace::AssociatedKeys(&key_payload_bytes), - KeyspaceTag::RemoveAssociatedKeys => Keyspace::RemoveAssociatedKeys(&key_payload_bytes), }; let global_state_key = match keyspace_to_global_state_key(caller.context(), keyspace) { @@ -659,9 +656,7 @@ fn keyspace_to_global_state_key( EntryPointAddr::new_v1_entry_point_addr(entity_addr, payload).ok()?; Some(Key::EntryPoint(entry_point_addr)) } - Keyspace::AssociatedKeys(_) | Keyspace::RemoveAssociatedKeys(_) => { - Some(Key::AddressableEntity(entity_addr)) - } + Keyspace::AssociatedKeys(_) => Some(Key::AddressableEntity(entity_addr)), } } diff --git a/smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs b/smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs index 884168a3b9..c6aa309713 100644 --- a/smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs +++ b/smart_contracts/contracts/vm2/vm2-assoc-keys/src/lib.rs @@ -8,7 +8,7 @@ pub mod exports { pub fn call(weight: u8) { let account_hash_bytes = [10u8; 32]; if weight == 0 { - let keyspace = Keyspace::RemoveAssociatedKeys(&account_hash_bytes); + let keyspace = Keyspace::AssociatedKeys(&account_hash_bytes); casper::remove(keyspace).unwrap() } else { let keyspace = Keyspace::AssociatedKeys(&account_hash_bytes); diff --git a/smart_contracts/sdk/src/casper.rs b/smart_contracts/sdk/src/casper.rs index 173b04c715..4a65e5b259 100644 --- a/smart_contracts/sdk/src/casper.rs +++ b/smart_contracts/sdk/src/casper.rs @@ -117,9 +117,6 @@ pub fn read Option>>( Keyspace::AssociatedKeys(account_hash_bytes) => { (KeyspaceTag::AssociatedKeys as u64, account_hash_bytes) } - Keyspace::RemoveAssociatedKeys(account_hash_bytes) => { - (KeyspaceTag::RemoveAssociatedKeys as u64, account_hash_bytes) - } }; let mut info = casper_contract_sdk_sys::ReadInfo { @@ -169,9 +166,6 @@ pub fn write(key: Keyspace, value: &[u8]) -> Result<(), HostResult> { Keyspace::AssociatedKeys(account_hash_bytes) => { (KeyspaceTag::AssociatedKeys as u64, account_hash_bytes) } - Keyspace::RemoveAssociatedKeys(account_hash_bytes) => { - (KeyspaceTag::RemoveAssociatedKeys as u64, account_hash_bytes) - } }; let ret = unsafe { casper_contract_sdk_sys::casper_write( @@ -195,9 +189,6 @@ pub fn remove(key: Keyspace) -> Result<(), HostResult> { Keyspace::AssociatedKeys(account_hash_bytes) => { (KeyspaceTag::AssociatedKeys as u64, account_hash_bytes) } - Keyspace::RemoveAssociatedKeys(account_hash_bytes) => { - (KeyspaceTag::RemoveAssociatedKeys as u64, account_hash_bytes) - } }; let ret = unsafe { casper_contract_sdk_sys::casper_remove(key_space, key_bytes.as_ptr(), key_bytes.len())