From ea523190d40812bd769786409c314401be28f86d Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Fri, 11 Jul 2025 12:11:09 +0200 Subject: [PATCH 01/22] Support RPC `0.9.0` --- .tool-versions | 2 +- Cargo.lock | 46 +++++++++------ Cargo.toml | 2 +- crates/cheatnet/src/forking/state.rs | 8 +-- crates/cheatnet/src/sync_client.rs | 6 +- crates/forge/src/block_number_map.rs | 4 +- crates/forge/src/scarb.rs | 2 +- crates/shared/src/consts.rs | 4 +- crates/sncast/src/helpers/fee.rs | 3 +- crates/sncast/src/helpers/rpc.rs | 2 + crates/sncast/src/lib.rs | 59 +++++++++++++------ crates/sncast/src/response/errors.rs | 4 +- crates/sncast/src/response/tx_status.rs | 6 +- .../src/starknet_commands/account/deploy.rs | 4 +- .../src/starknet_commands/account/import.rs | 2 +- crates/sncast/src/starknet_commands/call.rs | 4 +- .../src/starknet_commands/script/run.rs | 4 +- .../sncast/src/starknet_commands/tx_status.rs | 8 ++- .../declare/src/with_invalid_nonce.cairo | 2 +- .../scripts/deploy/src/invalid_calldata.cairo | 2 +- .../deploy/src/invalid_class_hash.cairo | 2 +- .../scripts/deploy/src/invalid_nonce.cairo | 2 +- .../deploy/src/same_class_hash_and_salt.cairo | 4 +- ...ebug_traits_for_subcommand_responses.cairo | 4 +- .../map_script/scripts/src/map_script.cairo | 4 +- .../scripts/state_file/src/all_tx_fail.cairo | 4 +- .../scripts/src/state_script.cairo | 4 +- crates/sncast/tests/integration/fee.rs | 4 +- sncast_std/src/lib.cairo | 7 ++- 29 files changed, 126 insertions(+), 83 deletions(-) diff --git a/.tool-versions b/.tool-versions index 0d5a08917b..a6d400c1a7 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ scarb 2.9.4 -starknet-devnet 0.4.3 +starknet-devnet 0.5.0-rc.1 diff --git a/Cargo.lock b/Cargo.lock index bd8518c137..6d92218930 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5926,14 +5926,15 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "starknet" -version = "0.14.0" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +version = "0.17.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051f5d6308dafb41bd39163eb302dfefa8194bd5d44dbca3f4e79fe06fb6dd78" dependencies = [ "starknet-accounts", "starknet-contract", "starknet-core", "starknet-core-derive", - "starknet-crypto 0.7.4 (git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce)", + "starknet-crypto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "starknet-macros", "starknet-providers", "starknet-signers", @@ -5941,13 +5942,14 @@ dependencies = [ [[package]] name = "starknet-accounts" -version = "0.13.0" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +version = "0.16.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed587e1608a691959bcce28bb0e70acb6eb64dffa157cb98894fb68d9fbc870" dependencies = [ "async-trait", "auto_impl", "starknet-core", - "starknet-crypto 0.7.4 (git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce)", + "starknet-crypto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "starknet-providers", "starknet-signers", "thiserror 1.0.69", @@ -5955,8 +5957,9 @@ dependencies = [ [[package]] name = "starknet-contract" -version = "0.13.0" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +version = "0.16.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc364c49495d4a99c7f1131353e24075860ac44b13be885906af571a61cfd0a" dependencies = [ "serde", "serde_json", @@ -5969,8 +5972,9 @@ dependencies = [ [[package]] name = "starknet-core" -version = "0.13.0" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +version = "0.16.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73c3c14f3679005cffd94c5b8593cbb7f06befeff38b8317e499b1487a4da0fe" dependencies = [ "base64 0.21.7", "crypto-bigint", @@ -5985,14 +5989,15 @@ dependencies = [ "serde_with", "sha3", "starknet-core-derive", - "starknet-crypto 0.7.4 (git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce)", + "starknet-crypto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "starknet-types-core", ] [[package]] name = "starknet-core-derive" version = "0.1.0" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08520b7d80eda7bf1a223e8db4f9bb5779a12846f15ebf8f8d76667eca7f5ad" dependencies = [ "proc-macro2", "quote", @@ -6055,8 +6060,9 @@ dependencies = [ [[package]] name = "starknet-macros" -version = "0.2.2" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +version = "0.2.5-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4e2009529a55b9d640cb2ffdd39cb178552ac2ff445c64ce33fcd6a7ce4b1eb" dependencies = [ "starknet-core", "syn 2.0.104", @@ -6064,8 +6070,9 @@ dependencies = [ [[package]] name = "starknet-providers" -version = "0.13.0" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +version = "0.16.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6d3a5bb5f7019d964f361be52433b723af3b0d8e0e3ae4fed5f2feb5c7eef3" dependencies = [ "async-trait", "auto_impl", @@ -6084,8 +6091,9 @@ dependencies = [ [[package]] name = "starknet-signers" -version = "0.11.0" -source = "git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce#a70f4cef2032ea0ea839d615426e42a74993bf0b" +version = "0.14.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4d6a507a211725fc9075a1a7677fbcfb80be4ca756727770572749c45665460" dependencies = [ "async-trait", "auto_impl", @@ -6094,7 +6102,7 @@ dependencies = [ "getrandom 0.2.16", "rand 0.8.5", "starknet-core", - "starknet-crypto 0.7.4 (git+https://github.com/xJonathanLEI/starknet-rs?rev=a70f4ce)", + "starknet-crypto 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", ] diff --git a/Cargo.toml b/Cargo.toml index e935896a7d..f0ab3d2505 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ rayon = "1.10" regex = "1.11.1" serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" -starknet = { git = "https://github.com/xJonathanLEI/starknet-rs", rev = "a70f4ce" } +starknet = "0.17.0-rc.1" starknet-crypto = { git = "https://github.com/xJonathanLEI/starknet-rs", rev = "a70f4ce" } tempfile = "3.20.0" thiserror = "2.0.12" diff --git a/crates/cheatnet/src/forking/state.rs b/crates/cheatnet/src/forking/state.rs index b5e77809d4..92667690b5 100644 --- a/crates/cheatnet/src/forking/state.rs +++ b/crates/cheatnet/src/forking/state.rs @@ -15,7 +15,7 @@ use flate2::read::GzDecoder; use num_bigint::BigUint; use runtime::starknet::context::SerializableGasPrices; use starknet::core::types::{ - ContractClass as ContractClassStarknet, MaybePendingBlockWithTxHashes, StarknetError, + ContractClass as ContractClassStarknet, MaybePreConfirmedBlockWithTxHashes, StarknetError, }; use starknet::core::utils::parse_cairo_short_string; use starknet::providers::ProviderError; @@ -81,7 +81,7 @@ impl BlockInfoReader for ForkStateReader { } match self.client.get_block_with_tx_hashes() { - Ok(MaybePendingBlockWithTxHashes::Block(block)) => { + Ok(MaybePreConfirmedBlockWithTxHashes::Block(block)) => { let block_info = BlockInfo { block_number: BlockNumber(block.block_number), sequencer_address: block.sequencer_address.into_(), @@ -96,8 +96,8 @@ impl BlockInfoReader for ForkStateReader { Ok(block_info) } - Ok(MaybePendingBlockWithTxHashes::PendingBlock(_)) => { - unreachable!("Pending block is not be allowed at the configuration level") + Ok(MaybePreConfirmedBlockWithTxHashes::PreConfirmedBlock(_)) => { + unreachable!("Preconfirmed block is not be allowed at the configuration level") } Err(ProviderError::Other(boxed)) => other_provider_error(boxed), Err(err) => Err(StateReadError(format!( diff --git a/crates/cheatnet/src/sync_client.rs b/crates/cheatnet/src/sync_client.rs index 5baacf5cf4..97f5d66aae 100644 --- a/crates/cheatnet/src/sync_client.rs +++ b/crates/cheatnet/src/sync_client.rs @@ -1,4 +1,4 @@ -use starknet::core::types::{BlockId, ContractClass, MaybePendingBlockWithTxHashes}; +use starknet::core::types::{BlockId, ContractClass, MaybePreConfirmedBlockWithTxHashes}; use starknet::providers::jsonrpc::HttpTransport; use starknet::providers::{JsonRpcClient, Provider, ProviderError}; use starknet_api::block::BlockNumber; @@ -27,7 +27,9 @@ impl SyncClient { self.sync(self.client.chain_id()) } - pub fn get_block_with_tx_hashes(&self) -> Result { + pub fn get_block_with_tx_hashes( + &self, + ) -> Result { self.sync(self.client.get_block_with_tx_hashes(self.block_id)) } diff --git a/crates/forge/src/block_number_map.rs b/crates/forge/src/block_number_map.rs index 74a2ac5c97..d1a38212ed 100644 --- a/crates/forge/src/block_number_map.rs +++ b/crates/forge/src/block_number_map.rs @@ -1,7 +1,7 @@ use anyhow::{Result, anyhow}; use conversions::{IntoConv, string::IntoHexStr}; use starknet::{ - core::types::{BlockId, MaybePendingBlockWithTxHashes}, + core::types::{BlockId, MaybePreConfirmedBlockWithTxHashes}, providers::{JsonRpcClient, Provider, jsonrpc::HttpTransport}, }; use starknet_api::block::BlockNumber; @@ -73,7 +73,7 @@ async fn fetch_block_number_for_hash(url: Url, block_hash: Felt) -> Result Ok(BlockNumber(block.block_number)), + Ok(MaybePreConfirmedBlockWithTxHashes::Block(block)) => Ok(BlockNumber(block.block_number)), _ => Err(anyhow!( "Could not get the block number for block with hash 0x{}", block_hash.into_hex_string() diff --git a/crates/forge/src/scarb.rs b/crates/forge/src/scarb.rs index 19249a3829..0ef9456941 100644 --- a/crates/forge/src/scarb.rs +++ b/crates/forge/src/scarb.rs @@ -402,7 +402,7 @@ mod tests { [[tool.snforge.fork]] name = "SAME_NAME" url = "http://some.rpc.url" - block_id.tag = "Pending" + block_id.tag = "Preconfirmed" "# ); temp.child("Scarb.toml").write_str(content).unwrap(); diff --git a/crates/shared/src/consts.rs b/crates/shared/src/consts.rs index 2652da460d..d51fab618c 100644 --- a/crates/shared/src/consts.rs +++ b/crates/shared/src/consts.rs @@ -1,4 +1,4 @@ -pub const EXPECTED_RPC_VERSION: &str = "0.8.1"; -pub const RPC_URL_VERSION: &str = "v0_8"; +pub const EXPECTED_RPC_VERSION: &str = "0.9.0-rc.1"; +pub const RPC_URL_VERSION: &str = "v0_9"; pub const SNFORGE_TEST_FILTER: &str = "SNFORGE_TEST_FILTER"; pub const FREE_RPC_PROVIDER_URL: &str = "https://starknet-sepolia.public.blastapi.io/rpc/v0_8"; diff --git a/crates/sncast/src/helpers/fee.rs b/crates/sncast/src/helpers/fee.rs index ebd1f3359d..483d843bc0 100644 --- a/crates/sncast/src/helpers/fee.rs +++ b/crates/sncast/src/helpers/fee.rs @@ -143,7 +143,7 @@ fn parse_non_zero_felt(s: &str) -> Result { #[cfg(test)] mod tests { use super::FeeSettings; - use starknet::core::types::{FeeEstimate, PriceUnit}; + use starknet::core::types::FeeEstimate; use std::convert::TryFrom; #[tokio::test] @@ -155,7 +155,6 @@ mod tests { l2_gas_price: 4, l1_data_gas_consumed: 5, l1_data_gas_price: 6, - unit: PriceUnit::Fri, overall_fee: 44, }; let settings = FeeSettings::try_from(mock_fee_estimate).unwrap(); diff --git a/crates/sncast/src/helpers/rpc.rs b/crates/sncast/src/helpers/rpc.rs index 1ee80e0876..115515795e 100644 --- a/crates/sncast/src/helpers/rpc.rs +++ b/crates/sncast/src/helpers/rpc.rs @@ -97,6 +97,7 @@ mod tests { use starknet::providers::Provider; #[tokio::test] + #[ignore = "Restore once the nodes return RPC 0.9.0"] async fn test_mainnet_url_happy_case() { let provider = get_provider(&Network::free_mainnet_rpc(&FreeProvider::Blast)).unwrap(); let spec_version = provider.spec_version().await.unwrap(); @@ -104,6 +105,7 @@ mod tests { } #[tokio::test] + #[ignore = "Restore once the nodes return RPC 0.9.0"] async fn test_sepolia_url_happy_case() { let provider = get_provider(&Network::free_sepolia_rpc(&FreeProvider::Blast)).unwrap(); let spec_version = provider.spec_version().await.unwrap(); diff --git a/crates/sncast/src/lib.rs b/crates/sncast/src/lib.rs index db1e7eccf7..f34c7e77cd 100644 --- a/crates/sncast/src/lib.rs +++ b/crates/sncast/src/lib.rs @@ -17,7 +17,7 @@ use shared::rpc::create_rpc_client; use starknet::accounts::{AccountFactory, AccountFactoryError}; use starknet::core::types::{ BlockId, BlockTag, - BlockTag::{Latest, Pending}, + BlockTag::{Latest, PreConfirmed}, ContractClass, ContractErrorData, StarknetError::{ClassHashNotFound, ContractNotFound, TransactionHashNotFound}, }; @@ -311,7 +311,7 @@ async fn build_account( let mut account = SingleOwnerAccount::new(provider, signer, address, chain_id, account_encoding); - account.set_block_id(BlockId::Tag(Pending)); + account.set_block_id(BlockId::Tag(PreConfirmed)); Ok(account) } @@ -321,7 +321,10 @@ async fn verify_account_address( chain_id: Felt, provider: &JsonRpcClient, ) -> Result<()> { - match provider.get_nonce(BlockId::Tag(Pending), address).await { + match provider + .get_nonce(BlockId::Tag(PreConfirmed), address) + .await + { Ok(_) => Ok(()), Err(error) => { if let StarknetError(ContractNotFound) = error { @@ -482,8 +485,16 @@ pub async fn check_if_legacy_contract( provider: &JsonRpcClient, ) -> Result { let contract_class = match class_hash { - Some(class_hash) => provider.get_class(BlockId::Tag(Pending), class_hash).await, - None => provider.get_class_at(BlockId::Tag(Pending), address).await, + Some(class_hash) => { + provider + .get_class(BlockId::Tag(PreConfirmed), class_hash) + .await + } + None => { + provider + .get_class_at(BlockId::Tag(PreConfirmed), address) + .await + } } .map_err(handle_rpc_error)?; @@ -495,7 +506,7 @@ pub async fn get_class_hash_by_address( address: Felt, ) -> Result { let result = provider - .get_class_hash_at(BlockId::Tag(Pending), address) + .get_class_hash_at(BlockId::Tag(PreConfirmed), address) .await; if let Err(ProviderError::StarknetError(ContractNotFound)) = result { @@ -534,13 +545,13 @@ fn map_encoding(legacy: bool) -> ExecutionEncoding { pub fn get_block_id(value: &str) -> Result { match value { - "pending" => Ok(BlockId::Tag(Pending)), + "preconfirmed" => Ok(BlockId::Tag(PreConfirmed)), "latest" => Ok(BlockId::Tag(Latest)), _ if value.starts_with("0x") => Ok(BlockId::Hash(Felt::from_hex(value)?)), _ => match value.parse::() { Ok(value) => Ok(BlockId::Number(value)), Err(_) => Err(anyhow::anyhow!( - "Incorrect value passed for block_id = {value}. Possible values are pending, latest, block hash (hex) and block number (u64)" + "Incorrect value passed for block_id = {value}. Possible values are preconfirmed, latest, block hash (hex) and block number (u64)" )), }, } @@ -553,8 +564,6 @@ pub struct ErrorData { #[derive(Error, Debug, CairoSerialize)] pub enum TransactionError { - #[error("Transaction has been rejected")] - Rejected, #[error("Transaction has been reverted = {}", .0.data)] Reverted(ErrorData), } @@ -580,9 +589,13 @@ pub async fn wait_for_tx( let retries = wait_params.get_retries(); for i in (1..retries).rev() { match provider.get_transaction_status(tx_hash).await { - Ok(starknet::core::types::TransactionStatus::Rejected) => { + Ok(starknet::core::types::TransactionStatus::PreConfirmed( + ExecutionResult::Reverted { reason }, + )) => { return Err(WaitForTransactionError::TransactionError( - TransactionError::Rejected, + TransactionError::Reverted(ErrorData { + data: ByteArray::from(reason.as_str()), + }), )); } Ok( @@ -600,7 +613,19 @@ pub async fn wait_for_tx( } }; } - Ok(starknet::core::types::TransactionStatus::Received) + Ok(starknet::core::types::TransactionStatus::PreConfirmed( + ExecutionResult::Succeeded, + )) => { + let remaining_time = wait_params.remaining_time(i); + ui.println(&"Transaction pre confirmed".to_string()); + ui.println(&format!( + "Waiting for transaction to be accepted ({i} retries / {remaining_time}s left until timeout)" + )); + } + Ok( + starknet::core::types::TransactionStatus::Received + | starknet::core::types::TransactionStatus::Candidate, + ) | Err(StarknetError(TransactionHashNotFound)) => { let remaining_time = wait_params.remaining_time(i); ui.println(&format!( @@ -742,7 +767,7 @@ mod tests { use conversions::string::IntoHexStr; use starknet::core::types::{ BlockId, - BlockTag::{Latest, Pending}, + BlockTag::{Latest, PreConfirmed}, Felt, }; use starknet::core::utils::UdcUniqueSettings; @@ -751,10 +776,10 @@ mod tests { #[test] fn test_get_block_id() { - let pending_block = get_block_id("pending").unwrap(); + let pending_block = get_block_id("preconfirmed").unwrap(); let latest_block = get_block_id("latest").unwrap(); - assert_eq!(pending_block, BlockId::Tag(Pending)); + assert_eq!(pending_block, BlockId::Tag(PreConfirmed)); assert_eq!(latest_block, BlockId::Tag(Latest)); } @@ -785,7 +810,7 @@ mod tests { let block = get_block_id("mariusz").unwrap_err(); assert!(block .to_string() - .contains("Incorrect value passed for block_id = mariusz. Possible values are pending, latest, block hash (hex) and block number (u64)")); + .contains("Incorrect value passed for block_id = mariusz. Possible values are preconfirmed, latest, block hash (hex) and block number (u64)")); } #[test] diff --git a/crates/sncast/src/response/errors.rs b/crates/sncast/src/response/errors.rs index de2a62955e..834327215d 100644 --- a/crates/sncast/src/response/errors.rs +++ b/crates/sncast/src/response/errors.rs @@ -148,7 +148,9 @@ impl From for SNCastStarknetError { SNCastStarknetError::TransactionExecutionError(err) } StarknetError::ClassAlreadyDeclared => SNCastStarknetError::ClassAlreadyDeclared, - StarknetError::InvalidTransactionNonce => SNCastStarknetError::InvalidTransactionNonce, + StarknetError::InvalidTransactionNonce(_) => { + SNCastStarknetError::InvalidTransactionNonce + } StarknetError::InsufficientResourcesForValidate => { SNCastStarknetError::InsufficientResourcesForValidate } diff --git a/crates/sncast/src/response/tx_status.rs b/crates/sncast/src/response/tx_status.rs index cbbd54e26a..6c196f9c36 100644 --- a/crates/sncast/src/response/tx_status.rs +++ b/crates/sncast/src/response/tx_status.rs @@ -10,7 +10,8 @@ use serde_json::json; #[derive(Serialize, CairoSerialize, Clone)] pub enum FinalityStatus { Received, - Rejected, + Candidate, + PreConfirmed, AcceptedOnL2, AcceptedOnL1, } @@ -33,7 +34,8 @@ impl Message for SncastMessage { fn text(&self) -> String { let finality_status = match &self.command_response.finality_status { FinalityStatus::Received => "Received", - FinalityStatus::Rejected => "Rejected", + FinalityStatus::Candidate => "Candidate", + FinalityStatus::PreConfirmed => "Pre-confirmed", FinalityStatus::AcceptedOnL2 => "Accepted on L2", FinalityStatus::AcceptedOnL1 => "Accepted on L1", }; diff --git a/crates/sncast/src/starknet_commands/account/deploy.rs b/crates/sncast/src/starknet_commands/account/deploy.rs index 892fe4b5ed..2a4c4c73e2 100644 --- a/crates/sncast/src/starknet_commands/account/deploy.rs +++ b/crates/sncast/src/starknet_commands/account/deploy.rs @@ -18,7 +18,7 @@ use sncast::{ }; use starknet::accounts::{AccountDeploymentV3, AccountFactory, OpenZeppelinAccountFactory}; use starknet::accounts::{AccountFactoryError, ArgentAccountFactory}; -use starknet::core::types::BlockTag::Pending; +use starknet::core::types::BlockTag::PreConfirmed; use starknet::core::types::{BlockId, StarknetError::ClassHashNotFound}; use starknet::core::utils::get_contract_address; use starknet::providers::ProviderError::StarknetError; @@ -131,7 +131,7 @@ async fn deploy_from_keystore( let address = compute_account_address(salt, &private_key, class_hash, account_type, chain_id); let result = if provider - .get_class_hash_at(BlockId::Tag(Pending), address) + .get_class_hash_at(BlockId::Tag(PreConfirmed), address) .await .is_ok() { diff --git a/crates/sncast/src/starknet_commands/account/import.rs b/crates/sncast/src/starknet_commands/account/import.rs index 309652efd4..2fae82886c 100644 --- a/crates/sncast/src/starknet_commands/account/import.rs +++ b/crates/sncast/src/starknet_commands/account/import.rs @@ -93,7 +93,7 @@ pub async fn import( .unwrap_or_else(|| generate_account_name(accounts_file).unwrap()); let fetched_class_hash = match provider - .get_class_hash_at(BlockId::Tag(BlockTag::Pending), import.address) + .get_class_hash_at(BlockId::Tag(BlockTag::PreConfirmed), import.address) .await { Ok(class_hash) => Ok(Some(class_hash)), diff --git a/crates/sncast/src/starknet_commands/call.rs b/crates/sncast/src/starknet_commands/call.rs index 9c0cdd5771..f0976db43b 100644 --- a/crates/sncast/src/starknet_commands/call.rs +++ b/crates/sncast/src/starknet_commands/call.rs @@ -24,9 +24,9 @@ pub struct Call { pub arguments: Arguments, /// Block identifier on which call should be performed. - /// Possible values: pending, latest, block hash (0x prefixed string) + /// Possible values: preconfirmed, latest, block hash (0x prefixed string) /// and block number (u64) - #[arg(short, long, default_value = "pending")] + #[arg(short, long, default_value = "preconfirmed")] pub block_id: String, #[command(flatten)] diff --git a/crates/sncast/src/starknet_commands/script/run.rs b/crates/sncast/src/starknet_commands/script/run.rs index eb314550f4..9200067779 100644 --- a/crates/sncast/src/starknet_commands/script/run.rs +++ b/crates/sncast/src/starknet_commands/script/run.rs @@ -48,7 +48,7 @@ use sncast::state::hashing::{ }; use sncast::state::state_file::StateManager; use starknet::accounts::{Account, SingleOwnerAccount}; -use starknet::core::types::{BlockId, BlockTag::Pending}; +use starknet::core::types::{BlockId, BlockTag::PreConfirmed}; use starknet::providers::JsonRpcClient; use starknet::providers::jsonrpc::HttpTransport; use starknet::signers::LocalWallet; @@ -118,7 +118,7 @@ impl<'a> ExtensionLogic for CastScriptExtension<'a> { function_selector, calldata_felts, self.provider, - &BlockId::Tag(Pending), + &BlockId::Tag(PreConfirmed), )); Ok(CheatcodeHandlingResult::from_serializable(call_result)) } diff --git a/crates/sncast/src/starknet_commands/tx_status.rs b/crates/sncast/src/starknet_commands/tx_status.rs index dc2b6ddf08..fcc5887632 100644 --- a/crates/sncast/src/starknet_commands/tx_status.rs +++ b/crates/sncast/src/starknet_commands/tx_status.rs @@ -34,10 +34,14 @@ fn build_transaction_status_response(status: &TransactionStatus) -> TransactionS finality_status: FinalityStatus::Received, execution_status: None, }, - TransactionStatus::Rejected => TransactionStatusResponse { - finality_status: FinalityStatus::Rejected, + TransactionStatus::Candidate => TransactionStatusResponse { + finality_status: FinalityStatus::Candidate, execution_status: None, }, + TransactionStatus::PreConfirmed(tx_exec_result) => TransactionStatusResponse { + finality_status: FinalityStatus::PreConfirmed, + execution_status: Some(build_execution_status(tx_exec_result.status())), + }, TransactionStatus::AcceptedOnL2(tx_exec_result) => TransactionStatusResponse { finality_status: FinalityStatus::AcceptedOnL2, execution_status: Some(build_execution_status(tx_exec_result.status())), diff --git a/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo b/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo index fecb9fdd57..7ac79c650d 100644 --- a/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo +++ b/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo @@ -7,7 +7,7 @@ fn main() { let fee_settings = FeeSettingsTrait::resource_bounds( 100000, 10000000000000, 1000000000, 100000000000000000000, 100000, 10000000000000, ); - let declare_nonce = get_nonce('pending') + 100; + let declare_nonce = get_nonce('preconfirmed') + 100; let declare_result = declare("Mapa", fee_settings, Option::Some(declare_nonce)).unwrap_err(); println!("{:?}", declare_result); diff --git a/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo b/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo index e1bbb61c18..52a5fb583c 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo @@ -14,7 +14,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); let deploy_result = deploy( class_hash, array![0x2], Option::Some(salt), true, fee_settings, Option::Some(deploy_nonce), ) diff --git a/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo b/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo index 97587b9bf3..3234a4d28c 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo @@ -12,7 +12,7 @@ fn main() { let class_hash: ClassHash = 0xdddd.try_into().expect('Invalid class hash value'); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); let deploy_result = deploy( class_hash, array![0x2, 0x2, 0x0], diff --git a/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo b/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo index 468bbb0949..6184816906 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo @@ -15,7 +15,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('pending') + 100; + let deploy_nonce = get_nonce('preconfirmed') + 100; let deploy_result = deploy( class_hash, array![0x2, 0x2, 0x0], diff --git a/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo b/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo index 71db924f53..f613188b5a 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo @@ -14,7 +14,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); deploy( class_hash, array![0x2, 0x2, 0x0], @@ -29,7 +29,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); let deploy_result = deploy( class_hash, array![0x2, 0x2, 0x0], diff --git a/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo b/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo index 9ab90b1663..a61dd4239f 100644 --- a/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo +++ b/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo @@ -18,7 +18,7 @@ fn main() { println!("debug declare_result: {:?}", declare_result); let class_hash = declare_result.class_hash(); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); let deploy_result = deploy( *class_hash, ArrayTrait::new(), @@ -33,7 +33,7 @@ fn main() { assert(deploy_result.transaction_hash != 0, deploy_result.transaction_hash); - let invoke_nonce = get_nonce('pending'); + let invoke_nonce = get_nonce('preconfirmed'); let invoke_result = invoke( deploy_result.contract_address, selector!("put"), diff --git a/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo b/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo index cef75baa0a..007d8506a1 100644 --- a/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo +++ b/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo @@ -45,7 +45,7 @@ fn main() { .expect('mapa declare failed'); let class_hash = declare_result.class_hash(); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); let deploy_result = deploy( *class_hash, ArrayTrait::new(), @@ -57,7 +57,7 @@ fn main() { .expect('mapa deploy failed'); assert(deploy_result.transaction_hash != 0, deploy_result.transaction_hash); - let invoke_nonce = get_nonce('pending'); + let invoke_nonce = get_nonce('preconfirmed'); let invoke_result = invoke( deploy_result.contract_address, selector!("put"), diff --git a/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo b/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo index 5702549577..fea4720b9e 100644 --- a/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo +++ b/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo @@ -17,7 +17,7 @@ fn main() { declare("Not_this_time", fee_settings, Option::Some(declare_nonce)) .expect_err('error expected declare'); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); deploy( nonexistent_class_hash, ArrayTrait::new(), @@ -28,7 +28,7 @@ fn main() { ) .expect_err('error expected deploy'); - let invoke_nonce = get_nonce('pending'); + let invoke_nonce = get_nonce('preconfirmed'); invoke( map_contract_address, selector!("put"), diff --git a/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo b/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo index c517609472..ae156b64b0 100644 --- a/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo +++ b/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo @@ -11,7 +11,7 @@ fn main() { .expect('state declare failed'); let class_hash = declare_result.class_hash(); - let deploy_nonce = get_nonce('pending'); + let deploy_nonce = get_nonce('preconfirmed'); let deploy_result = deploy( *class_hash, ArrayTrait::new(), @@ -23,7 +23,7 @@ fn main() { .expect('state deploy failed'); assert(deploy_result.transaction_hash != 0, deploy_result.transaction_hash); - let invoke_nonce = get_nonce('pending'); + let invoke_nonce = get_nonce('preconfirmed'); let invoke_result = invoke( deploy_result.contract_address, selector!("put"), diff --git a/crates/sncast/tests/integration/fee.rs b/crates/sncast/tests/integration/fee.rs index 652cd96507..f747301fc5 100644 --- a/crates/sncast/tests/integration/fee.rs +++ b/crates/sncast/tests/integration/fee.rs @@ -1,5 +1,5 @@ use sncast::helpers::fee::{FeeArgs, FeeSettings}; -use starknet::core::types::{FeeEstimate, PriceUnit}; +use starknet::core::types::FeeEstimate; use starknet_types_core::felt::{Felt, NonZeroFelt}; #[tokio::test] @@ -65,7 +65,6 @@ async fn test_max_fee_set() { l2_gas_price: 4, l1_data_gas_consumed: 5, l1_data_gas_price: 6, - unit: PriceUnit::Fri, overall_fee: 44, }; @@ -105,7 +104,6 @@ async fn test_max_fee_set_and_fee_estimate_higher() { l2_gas_price: 40, l1_data_gas_consumed: 50, l1_gas_price: 60, - unit: PriceUnit::Fri, overall_fee: 4400, }; diff --git a/sncast_std/src/lib.cairo b/sncast_std/src/lib.cairo index 4f6670876d..5e8fdb6874 100644 --- a/sncast_std/src/lib.cairo +++ b/sncast_std/src/lib.cairo @@ -161,7 +161,6 @@ pub enum ProviderError { #[derive(Drop, Serde, PartialEq, Debug)] pub enum TransactionError { - Rejected, Reverted: ErrorData, } @@ -468,7 +467,8 @@ pub fn get_nonce(block_tag: felt252) -> felt252 { #[derive(Drop, Copy, Debug, Serde, PartialEq)] pub enum FinalityStatus { Received, - Rejected, + Candidate, + PreConfirmed, AcceptedOnL2, AcceptedOnL1, } @@ -477,7 +477,8 @@ pub impl DisplayFinalityStatus of Display { fn fmt(self: @FinalityStatus, ref f: Formatter) -> Result<(), Error> { let finality_status: ByteArray = match self { FinalityStatus::Received => "Received", - FinalityStatus::Rejected => "Rejected", + FinalityStatus::Candidate => "Candidate", + FinalityStatus::PreConfirmed => "PreConfirmed", FinalityStatus::AcceptedOnL2 => "AcceptedOnL2", FinalityStatus::AcceptedOnL1 => "AcceptedOnL1", }; From d5b030209a9d96f0150729f6173ba1ed52b20e9e Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 17 Jul 2025 12:40:48 +0200 Subject: [PATCH 02/22] Rename `preconfirmed` to `pre_confirmed` --- crates/sncast/src/lib.rs | 8 ++++---- crates/sncast/src/starknet_commands/call.rs | 4 ++-- .../data/scripts/declare/src/with_invalid_nonce.cairo | 2 +- .../tests/data/scripts/deploy/src/invalid_calldata.cairo | 2 +- .../data/scripts/deploy/src/invalid_class_hash.cairo | 2 +- .../tests/data/scripts/deploy/src/invalid_nonce.cairo | 2 +- .../scripts/deploy/src/same_class_hash_and_salt.cairo | 4 ++-- .../display_debug_traits_for_subcommand_responses.cairo | 4 ++-- .../data/scripts/map_script/scripts/src/map_script.cairo | 4 ++-- .../tests/data/scripts/state_file/src/all_tx_fail.cairo | 4 ++-- .../scripts/state_script/scripts/src/state_script.cairo | 4 ++-- 11 files changed, 20 insertions(+), 20 deletions(-) diff --git a/crates/sncast/src/lib.rs b/crates/sncast/src/lib.rs index f34c7e77cd..c602f2c90e 100644 --- a/crates/sncast/src/lib.rs +++ b/crates/sncast/src/lib.rs @@ -545,13 +545,13 @@ fn map_encoding(legacy: bool) -> ExecutionEncoding { pub fn get_block_id(value: &str) -> Result { match value { - "preconfirmed" => Ok(BlockId::Tag(PreConfirmed)), + "pre_confirmed" => Ok(BlockId::Tag(PreConfirmed)), "latest" => Ok(BlockId::Tag(Latest)), _ if value.starts_with("0x") => Ok(BlockId::Hash(Felt::from_hex(value)?)), _ => match value.parse::() { Ok(value) => Ok(BlockId::Number(value)), Err(_) => Err(anyhow::anyhow!( - "Incorrect value passed for block_id = {value}. Possible values are preconfirmed, latest, block hash (hex) and block number (u64)" + "Incorrect value passed for block_id = {value}. Possible values are pre_confirmed, latest, block hash (hex) and block number (u64)" )), }, } @@ -776,7 +776,7 @@ mod tests { #[test] fn test_get_block_id() { - let pending_block = get_block_id("preconfirmed").unwrap(); + let pending_block = get_block_id("pre_confirmed").unwrap(); let latest_block = get_block_id("latest").unwrap(); assert_eq!(pending_block, BlockId::Tag(PreConfirmed)); @@ -810,7 +810,7 @@ mod tests { let block = get_block_id("mariusz").unwrap_err(); assert!(block .to_string() - .contains("Incorrect value passed for block_id = mariusz. Possible values are preconfirmed, latest, block hash (hex) and block number (u64)")); + .contains("Incorrect value passed for block_id = mariusz. Possible values are pre_confirmed, latest, block hash (hex) and block number (u64)")); } #[test] diff --git a/crates/sncast/src/starknet_commands/call.rs b/crates/sncast/src/starknet_commands/call.rs index f0976db43b..d9fccc1913 100644 --- a/crates/sncast/src/starknet_commands/call.rs +++ b/crates/sncast/src/starknet_commands/call.rs @@ -24,9 +24,9 @@ pub struct Call { pub arguments: Arguments, /// Block identifier on which call should be performed. - /// Possible values: preconfirmed, latest, block hash (0x prefixed string) + /// Possible values: `pre_confirmed`, `latest`, block hash (0x prefixed string) /// and block number (u64) - #[arg(short, long, default_value = "preconfirmed")] + #[arg(short, long, default_value = "pre_confirmed")] pub block_id: String, #[command(flatten)] diff --git a/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo b/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo index b2874b8470..f868c5181d 100644 --- a/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo +++ b/crates/sncast/tests/data/scripts/declare/src/with_invalid_nonce.cairo @@ -6,7 +6,7 @@ fn main() { let fee_settings = FeeSettingsTrait::resource_bounds( 100000, 10000000000000, 1000000000, 100000000000000000000, 100000, 10000000000000, ); - let declare_nonce = get_nonce('preconfirmed') + 100; + let declare_nonce = get_nonce('pre_confirmed') + 100; let declare_result = declare("Mapa", fee_settings, Option::Some(declare_nonce)).unwrap_err(); println!("{:?}", declare_result); diff --git a/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo b/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo index 3edec4a598..a1a57b18ad 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/invalid_calldata.cairo @@ -11,7 +11,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); let deploy_result = deploy( class_hash, array![0x2], Option::Some(salt), true, fee_settings, Option::Some(deploy_nonce), ) diff --git a/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo b/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo index d87218feee..1aaa4bdc2c 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/invalid_class_hash.cairo @@ -9,7 +9,7 @@ fn main() { let class_hash: ClassHash = 0xdddd.try_into().expect('Invalid class hash value'); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); let deploy_result = deploy( class_hash, array![0x2, 0x2, 0x0], diff --git a/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo b/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo index ae52c987b1..b96953a71d 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/invalid_nonce.cairo @@ -14,7 +14,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('preconfirmed') + 100; + let deploy_nonce = get_nonce('pre_confirmed') + 100; let deploy_result = deploy( class_hash, array![0x2, 0x2, 0x0], diff --git a/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo b/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo index 432d4c6823..df5ff9395d 100644 --- a/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo +++ b/crates/sncast/tests/data/scripts/deploy/src/same_class_hash_and_salt.cairo @@ -11,7 +11,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); deploy( class_hash, array![0x2, 0x2, 0x0], @@ -26,7 +26,7 @@ fn main() { .try_into() .expect('Invalid class hash value'); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); let deploy_result = deploy( class_hash, array![0x2, 0x2, 0x0], diff --git a/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo b/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo index a61dd4239f..452c99161b 100644 --- a/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo +++ b/crates/sncast/tests/data/scripts/map_script/scripts/src/display_debug_traits_for_subcommand_responses.cairo @@ -18,7 +18,7 @@ fn main() { println!("debug declare_result: {:?}", declare_result); let class_hash = declare_result.class_hash(); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); let deploy_result = deploy( *class_hash, ArrayTrait::new(), @@ -33,7 +33,7 @@ fn main() { assert(deploy_result.transaction_hash != 0, deploy_result.transaction_hash); - let invoke_nonce = get_nonce('preconfirmed'); + let invoke_nonce = get_nonce('pre_confirmed'); let invoke_result = invoke( deploy_result.contract_address, selector!("put"), diff --git a/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo b/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo index 007d8506a1..adb5933299 100644 --- a/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo +++ b/crates/sncast/tests/data/scripts/map_script/scripts/src/map_script.cairo @@ -45,7 +45,7 @@ fn main() { .expect('mapa declare failed'); let class_hash = declare_result.class_hash(); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); let deploy_result = deploy( *class_hash, ArrayTrait::new(), @@ -57,7 +57,7 @@ fn main() { .expect('mapa deploy failed'); assert(deploy_result.transaction_hash != 0, deploy_result.transaction_hash); - let invoke_nonce = get_nonce('preconfirmed'); + let invoke_nonce = get_nonce('pre_confirmed'); let invoke_result = invoke( deploy_result.contract_address, selector!("put"), diff --git a/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo b/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo index fea4720b9e..0895869d47 100644 --- a/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo +++ b/crates/sncast/tests/data/scripts/state_file/src/all_tx_fail.cairo @@ -17,7 +17,7 @@ fn main() { declare("Not_this_time", fee_settings, Option::Some(declare_nonce)) .expect_err('error expected declare'); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); deploy( nonexistent_class_hash, ArrayTrait::new(), @@ -28,7 +28,7 @@ fn main() { ) .expect_err('error expected deploy'); - let invoke_nonce = get_nonce('preconfirmed'); + let invoke_nonce = get_nonce('pre_confirmed'); invoke( map_contract_address, selector!("put"), diff --git a/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo b/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo index ae156b64b0..6d95b1457a 100644 --- a/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo +++ b/crates/sncast/tests/data/scripts/state_script/scripts/src/state_script.cairo @@ -11,7 +11,7 @@ fn main() { .expect('state declare failed'); let class_hash = declare_result.class_hash(); - let deploy_nonce = get_nonce('preconfirmed'); + let deploy_nonce = get_nonce('pre_confirmed'); let deploy_result = deploy( *class_hash, ArrayTrait::new(), @@ -23,7 +23,7 @@ fn main() { .expect('state deploy failed'); assert(deploy_result.transaction_hash != 0, deploy_result.transaction_hash); - let invoke_nonce = get_nonce('preconfirmed'); + let invoke_nonce = get_nonce('pre_confirmed'); let invoke_result = invoke( deploy_result.contract_address, selector!("put"), From a0d4f6aeeb44edbec360666e1f8f038199d8cb61 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 17 Jul 2025 13:27:32 +0200 Subject: [PATCH 03/22] Update version to `0.9` in node url --- crates/data-transformer/tests/integration/mod.rs | 2 +- ...n => http___188_34_188_184_7070_rpc_v0_9_54060_v0_46_0.json} | 0 crates/shared/src/test_utils/node_url.rs | 2 +- crates/sncast/tests/helpers/constants.rs | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename crates/forge/tests/data/forking/.snfoundry_cache/{http___188_34_188_184_7070_rpc_v0_8_54060_v0_46_0.json => http___188_34_188_184_7070_rpc_v0_9_54060_v0_46_0.json} (100%) diff --git a/crates/data-transformer/tests/integration/mod.rs b/crates/data-transformer/tests/integration/mod.rs index a44f2c3b6c..2551749b26 100644 --- a/crates/data-transformer/tests/integration/mod.rs +++ b/crates/data-transformer/tests/integration/mod.rs @@ -22,7 +22,7 @@ static CLASS: OnceCell = OnceCell::const_new(); async fn init_class(class_hash: Felt) -> ContractClass { let client = JsonRpcClient::new(HttpTransport::new( - Url::parse("http://188.34.188.184:7070/rpc/v0_8").unwrap(), + Url::parse("http://188.34.188.184:7070/rpc/v0_9").unwrap(), )); client diff --git a/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_8_54060_v0_46_0.json b/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_46_0.json similarity index 100% rename from crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_8_54060_v0_46_0.json rename to crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_46_0.json diff --git a/crates/shared/src/test_utils/node_url.rs b/crates/shared/src/test_utils/node_url.rs index 1bf35aeaf1..1647edb21b 100644 --- a/crates/shared/src/test_utils/node_url.rs +++ b/crates/shared/src/test_utils/node_url.rs @@ -5,7 +5,7 @@ use url::Url; /// - `node_url()` -> #[must_use] pub fn node_rpc_url() -> Url { - Url::parse("http://188.34.188.184:7070/rpc/v0_8").expect("Failed to parse the sepolia RPC URL") + Url::parse("http://188.34.188.184:7070/rpc/v0_9").expect("Failed to parse the sepolia RPC URL") } /// returning URL with no slug (`rpc/v0_7` suffix). diff --git a/crates/sncast/tests/helpers/constants.rs b/crates/sncast/tests/helpers/constants.rs index 169203d622..320b4ad038 100644 --- a/crates/sncast/tests/helpers/constants.rs +++ b/crates/sncast/tests/helpers/constants.rs @@ -4,7 +4,7 @@ use starknet_types_core::felt::Felt; pub const ACCOUNT: &str = "user1"; pub const ACCOUNT_FILE_PATH: &str = "tests/data/accounts/accounts.json"; -pub const SEPOLIA_RPC_URL: &str = "http://188.34.188.184:7070/rpc/v0_8"; +pub const SEPOLIA_RPC_URL: &str = "http://188.34.188.184:7070/rpc/v0_9"; pub const URL: &str = "http://127.0.0.1:5055/rpc"; pub const NETWORK: &str = "testnet"; From 2c20aca310ab1dc0f2a092e73ee3fad3d8714f8c Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 17 Jul 2025 13:33:04 +0200 Subject: [PATCH 04/22] Restore ignored tests --- crates/sncast/src/helpers/rpc.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/crates/sncast/src/helpers/rpc.rs b/crates/sncast/src/helpers/rpc.rs index 115515795e..1ee80e0876 100644 --- a/crates/sncast/src/helpers/rpc.rs +++ b/crates/sncast/src/helpers/rpc.rs @@ -97,7 +97,6 @@ mod tests { use starknet::providers::Provider; #[tokio::test] - #[ignore = "Restore once the nodes return RPC 0.9.0"] async fn test_mainnet_url_happy_case() { let provider = get_provider(&Network::free_mainnet_rpc(&FreeProvider::Blast)).unwrap(); let spec_version = provider.spec_version().await.unwrap(); @@ -105,7 +104,6 @@ mod tests { } #[tokio::test] - #[ignore = "Restore once the nodes return RPC 0.9.0"] async fn test_sepolia_url_happy_case() { let provider = get_provider(&Network::free_sepolia_rpc(&FreeProvider::Blast)).unwrap(); let spec_version = provider.spec_version().await.unwrap(); From 2c599e12c828c5cdceef9267c58cf22697c302fe Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 17 Jul 2025 13:34:55 +0200 Subject: [PATCH 05/22] Add backticks --- crates/sncast/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/sncast/src/lib.rs b/crates/sncast/src/lib.rs index c602f2c90e..070f049bda 100644 --- a/crates/sncast/src/lib.rs +++ b/crates/sncast/src/lib.rs @@ -551,7 +551,7 @@ pub fn get_block_id(value: &str) -> Result { _ => match value.parse::() { Ok(value) => Ok(BlockId::Number(value)), Err(_) => Err(anyhow::anyhow!( - "Incorrect value passed for block_id = {value}. Possible values are pre_confirmed, latest, block hash (hex) and block number (u64)" + "Incorrect value passed for block_id = {value}. Possible values are `pre_confirmed`, `latest`, block hash (hex) and block number (u64)" )), }, } @@ -810,7 +810,7 @@ mod tests { let block = get_block_id("mariusz").unwrap_err(); assert!(block .to_string() - .contains("Incorrect value passed for block_id = mariusz. Possible values are pre_confirmed, latest, block hash (hex) and block number (u64)")); + .contains("Incorrect value passed for block_id = mariusz. Possible values are `pre_confirmed`, `latest`, block hash (hex) and block number (u64)")); } #[test] From 3d1c5aa477e9f5a95c4b192b8ac03945f1d7f263 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 17 Jul 2025 13:48:47 +0200 Subject: [PATCH 06/22] Update changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef7ef890af..f88e555437 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Passing a cheatcode span of 0 was incorrectly treated as `CheatSpan::Indefinite`. This is now resolved by making `CheatSpan::TargetCalls` accept `NonZero` instead of just `usize` in `snforge_std`. +### Cast + +#### Changed + +- The supported RPC version is now 0.9.0 + ## [0.46.0] - 2025-07-09 ### Forge From 802462babcc4348b9e7afbc28ae62e2f7311d0a0 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 17 Jul 2025 14:17:03 +0200 Subject: [PATCH 07/22] Fix `test_happy_case_deployment_fee_message` test --- crates/sncast/tests/e2e/account/create.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/sncast/tests/e2e/account/create.rs b/crates/sncast/tests/e2e/account/create.rs index a7cb75746e..109a2750c1 100644 --- a/crates/sncast/tests/e2e/account/create.rs +++ b/crates/sncast/tests/e2e/account/create.rs @@ -831,7 +831,7 @@ pub async fn test_happy_case_deployment_fee_message() { assert_stdout_contains( output, - "Account successfully created but it needs to be deployed. The estimated deployment fee is 0.000836288000000000 STRK. Prefund the account to cover deployment transaction fee", + "Account successfully created but it needs to be deployed. The estimated deployment fee is [..] STRK. Prefund the account to cover deployment transaction fee", ); } From 764611eec194e8f883d641a8cdcaa1ece8b421a2 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 17 Jul 2025 14:18:45 +0200 Subject: [PATCH 08/22] Add dash to pre confirmed --- crates/sncast/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/sncast/src/lib.rs b/crates/sncast/src/lib.rs index 070f049bda..751ece64fe 100644 --- a/crates/sncast/src/lib.rs +++ b/crates/sncast/src/lib.rs @@ -617,7 +617,7 @@ pub async fn wait_for_tx( ExecutionResult::Succeeded, )) => { let remaining_time = wait_params.remaining_time(i); - ui.println(&"Transaction pre confirmed".to_string()); + ui.println(&"Transaction pre-confirmed".to_string()); ui.println(&format!( "Waiting for transaction to be accepted ({i} retries / {remaining_time}s left until timeout)" )); From 7dc04ca1b06f7413590a602e20d69f7cbbc9e56d Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Fri, 18 Jul 2025 19:45:07 +0200 Subject: [PATCH 09/22] Bump devnet to rc.2 --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index a6d400c1a7..4b70ab4a4c 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ scarb 2.9.4 -starknet-devnet 0.5.0-rc.1 +starknet-devnet 0.5.0-rc.2 From 808625a5be9ddaf9c42764be46fcee4e8524109b Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Mon, 21 Jul 2025 10:37:07 +0200 Subject: [PATCH 10/22] Address PR comments --- crates/sncast/src/lib.rs | 17 ++++------------- docs/src/appendix/sncast-library/errors.md | 1 - 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/crates/sncast/src/lib.rs b/crates/sncast/src/lib.rs index bfd117fa3d..4e324d06f3 100644 --- a/crates/sncast/src/lib.rs +++ b/crates/sncast/src/lib.rs @@ -478,19 +478,10 @@ pub async fn check_if_legacy_contract( address: Felt, provider: &JsonRpcClient, ) -> Result { - let contract_class = match class_hash { - Some(class_hash) => { - provider - .get_class(BlockId::Tag(PreConfirmed), class_hash) - .await - } - None => { - provider - .get_class_at(BlockId::Tag(PreConfirmed), address) - .await - } - } - .map_err(handle_rpc_error)?; + let contract_class = provider + .get_class(BlockId::Tag(PreConfirmed), class_hash.unwrap_or(address)) + .await + .map_err(handle_rpc_error)?; Ok(is_legacy_contract(&contract_class)) } diff --git a/docs/src/appendix/sncast-library/errors.md b/docs/src/appendix/sncast-library/errors.md index 9ee3fe5194..d9fd5ab3a9 100644 --- a/docs/src/appendix/sncast-library/errors.md +++ b/docs/src/appendix/sncast-library/errors.md @@ -88,7 +88,6 @@ pub enum ProviderError { #[derive(Drop, Serde, PartialEq, Debug)] pub enum TransactionError { - Rejected, Reverted: ErrorData, } From d1721df2004e52159ff37215328e06e7aaa3549c Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Mon, 21 Jul 2025 10:41:31 +0200 Subject: [PATCH 11/22] Use always underscore for pre_confirmed input --- crates/sncast/src/lib.rs | 2 +- crates/sncast/src/response/tx_status.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/sncast/src/lib.rs b/crates/sncast/src/lib.rs index 4e324d06f3..d105770183 100644 --- a/crates/sncast/src/lib.rs +++ b/crates/sncast/src/lib.rs @@ -602,7 +602,7 @@ pub async fn wait_for_tx( ExecutionResult::Succeeded, )) => { let remaining_time = wait_params.remaining_time(i); - ui.println(&"Transaction pre-confirmed".to_string()); + ui.println(&"Transaction status: PRE_CONFIRMED".to_string()); ui.println(&format!( "Waiting for transaction to be accepted ({i} retries / {remaining_time}s left until timeout)" )); diff --git a/crates/sncast/src/response/tx_status.rs b/crates/sncast/src/response/tx_status.rs index 6c196f9c36..1274fa655b 100644 --- a/crates/sncast/src/response/tx_status.rs +++ b/crates/sncast/src/response/tx_status.rs @@ -35,7 +35,7 @@ impl Message for SncastMessage { let finality_status = match &self.command_response.finality_status { FinalityStatus::Received => "Received", FinalityStatus::Candidate => "Candidate", - FinalityStatus::PreConfirmed => "Pre-confirmed", + FinalityStatus::PreConfirmed => "Pre confirmed", FinalityStatus::AcceptedOnL2 => "Accepted on L2", FinalityStatus::AcceptedOnL1 => "Accepted on L1", }; From 38ce1d5536a700fe181f9c8744f347daaa12a153 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Mon, 21 Jul 2025 11:27:28 +0200 Subject: [PATCH 12/22] Revert refactor in `check_if_legacy_contract` --- crates/sncast/src/lib.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/crates/sncast/src/lib.rs b/crates/sncast/src/lib.rs index d105770183..798e1dc458 100644 --- a/crates/sncast/src/lib.rs +++ b/crates/sncast/src/lib.rs @@ -478,10 +478,19 @@ pub async fn check_if_legacy_contract( address: Felt, provider: &JsonRpcClient, ) -> Result { - let contract_class = provider - .get_class(BlockId::Tag(PreConfirmed), class_hash.unwrap_or(address)) - .await - .map_err(handle_rpc_error)?; + let contract_class = match class_hash { + Some(class_hash) => { + provider + .get_class(BlockId::Tag(PreConfirmed), class_hash) + .await + } + None => { + provider + .get_class_at(BlockId::Tag(PreConfirmed), address) + .await + } + } + .map_err(handle_rpc_error)?; Ok(is_legacy_contract(&contract_class)) } From 35ab8a20d74f334c9142377ea9f1c40fd17535cf Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 31 Jul 2025 09:38:42 +0200 Subject: [PATCH 13/22] Bump starknet-rs to rc.2; bump devnet to rc.4 --- .tool-versions | 2 +- Cargo.lock | 28 ++++++++++++++-------------- Cargo.toml | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.tool-versions b/.tool-versions index 4b70ab4a4c..498bf59ba2 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ scarb 2.9.4 -starknet-devnet 0.5.0-rc.2 +starknet-devnet 0.5.0-rc.4 diff --git a/Cargo.lock b/Cargo.lock index af6d93d6ce..84ca999b23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5946,9 +5946,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "starknet" -version = "0.17.0-rc.1" +version = "0.17.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051f5d6308dafb41bd39163eb302dfefa8194bd5d44dbca3f4e79fe06fb6dd78" +checksum = "b9c9e90938ff10648a2ef87d1fee28fccdcc428f6ded1f9b64657ccfbbfeff64" dependencies = [ "starknet-accounts", "starknet-contract", @@ -5962,9 +5962,9 @@ dependencies = [ [[package]] name = "starknet-accounts" -version = "0.16.0-rc.1" +version = "0.16.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed587e1608a691959bcce28bb0e70acb6eb64dffa157cb98894fb68d9fbc870" +checksum = "27b0a53f50fff55946699637e930eb764bb18ddabd392cbe4fd7271b2b223b40" dependencies = [ "async-trait", "auto_impl", @@ -5977,9 +5977,9 @@ dependencies = [ [[package]] name = "starknet-contract" -version = "0.16.0-rc.1" +version = "0.16.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc364c49495d4a99c7f1131353e24075860ac44b13be885906af571a61cfd0a" +checksum = "25948c499faf8de208ff6a64be5a87be8bb58cb30138dc578311ea7071190af8" dependencies = [ "serde", "serde_json", @@ -5992,9 +5992,9 @@ dependencies = [ [[package]] name = "starknet-core" -version = "0.16.0-rc.1" +version = "0.16.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c3c14f3679005cffd94c5b8593cbb7f06befeff38b8317e499b1487a4da0fe" +checksum = "f6266bffbcf0ccfde812f9497dc847e2ea269bd4316e5373ec562165ceba014f" dependencies = [ "base64 0.21.7", "crypto-bigint", @@ -6080,9 +6080,9 @@ dependencies = [ [[package]] name = "starknet-macros" -version = "0.2.5-rc.1" +version = "0.2.5-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4e2009529a55b9d640cb2ffdd39cb178552ac2ff445c64ce33fcd6a7ce4b1eb" +checksum = "ed7b5b575473d4734c3b736735a2099cc14f66be26c6f9895c1a345f436012ed" dependencies = [ "starknet-core", "syn 2.0.104", @@ -6090,9 +6090,9 @@ dependencies = [ [[package]] name = "starknet-providers" -version = "0.16.0-rc.1" +version = "0.16.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6d3a5bb5f7019d964f361be52433b723af3b0d8e0e3ae4fed5f2feb5c7eef3" +checksum = "dfab31dd85ecaef7d9d15e1c3bbefc06c7f0fe6fbe56a8bc2b26c9c1ba7d42f9" dependencies = [ "async-trait", "auto_impl", @@ -6111,9 +6111,9 @@ dependencies = [ [[package]] name = "starknet-signers" -version = "0.14.0-rc.1" +version = "0.14.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4d6a507a211725fc9075a1a7677fbcfb80be4ca756727770572749c45665460" +checksum = "dd907b1e3da29d9215f8a41e980f5965c4bb28eb43ca55902d37ee2ccc032575" dependencies = [ "async-trait", "auto_impl", diff --git a/Cargo.toml b/Cargo.toml index 528fffd2b2..c44e42cb8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ rayon = "1.10" regex = "1.11.1" serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" -starknet = "0.17.0-rc.1" +starknet = "0.17.0-rc.2" starknet-crypto = { git = "https://github.com/xJonathanLEI/starknet-rs", rev = "a70f4ce" } tempfile = "3.20.0" thiserror = "2.0.12" From 8b28a916cf551e26c98deddead9c4157662241f2 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 31 Jul 2025 09:40:44 +0200 Subject: [PATCH 14/22] Fix changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31fd3685a0..942f237dc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Max steps in tests (configured via the `--max-n-steps` argument) now defaults to `usize::MAX` when not specified (previously 10 million). +### Cast + +#### Changed + +- The supported RPC version is now 0.9.0 + ## [0.47.0] - 2025-07-28 ### Forge From 34bbd0c22eea18a3aac8f1dccdb52b1f91bbb72d Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Thu, 31 Jul 2025 12:20:36 +0200 Subject: [PATCH 15/22] Fix e2e::forking::with_cache test --- ...son => http___188_34_188_184_7070_rpc_v0_9_54060_v0_47_0.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename crates/forge/tests/data/forking/.snfoundry_cache/{http___188_34_188_184_7070_rpc_v0_8_54060_v0_47_0.json => http___188_34_188_184_7070_rpc_v0_9_54060_v0_47_0.json} (100%) diff --git a/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_8_54060_v0_47_0.json b/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_47_0.json similarity index 100% rename from crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_8_54060_v0_47_0.json rename to crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_47_0.json From 3a0a505a5c7e6cafcdc183aa9c6d777e3684bd57 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Mon, 11 Aug 2025 09:52:56 +0200 Subject: [PATCH 16/22] Remove rc from `EXPECTED_RPC_VERSION` --- crates/shared/src/consts.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/shared/src/consts.rs b/crates/shared/src/consts.rs index d51fab618c..80aaa9f493 100644 --- a/crates/shared/src/consts.rs +++ b/crates/shared/src/consts.rs @@ -1,4 +1,4 @@ -pub const EXPECTED_RPC_VERSION: &str = "0.9.0-rc.1"; +pub const EXPECTED_RPC_VERSION: &str = "0.9.0"; pub const RPC_URL_VERSION: &str = "v0_9"; pub const SNFORGE_TEST_FILTER: &str = "SNFORGE_TEST_FILTER"; pub const FREE_RPC_PROVIDER_URL: &str = "https://starknet-sepolia.public.blastapi.io/rpc/v0_8"; From 28915e555e788ff095bb2bdb9987cada3f9189c0 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Mon, 11 Aug 2025 16:02:02 +0200 Subject: [PATCH 17/22] Fix cache test --- ...son => http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename crates/forge/tests/data/forking/.snfoundry_cache/{http___188_34_188_184_7070_rpc_v0_8_54060_v0_48_0.json => http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json} (100%) diff --git a/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_8_54060_v0_48_0.json b/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json similarity index 100% rename from crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_8_54060_v0_48_0.json rename to crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json From dfb1f53ce9c978226d0201dd85b52db0fd96c1a8 Mon Sep 17 00:00:00 2001 From: Dariusz Doktorski Date: Mon, 11 Aug 2025 16:08:51 +0200 Subject: [PATCH 18/22] Update free provider url --- crates/shared/src/consts.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/shared/src/consts.rs b/crates/shared/src/consts.rs index 80aaa9f493..2c6a772fd6 100644 --- a/crates/shared/src/consts.rs +++ b/crates/shared/src/consts.rs @@ -1,4 +1,4 @@ pub const EXPECTED_RPC_VERSION: &str = "0.9.0"; pub const RPC_URL_VERSION: &str = "v0_9"; pub const SNFORGE_TEST_FILTER: &str = "SNFORGE_TEST_FILTER"; -pub const FREE_RPC_PROVIDER_URL: &str = "https://starknet-sepolia.public.blastapi.io/rpc/v0_8"; +pub const FREE_RPC_PROVIDER_URL: &str = "https://starknet-sepolia.public.blastapi.io/rpc/v0_9"; From 0b2d349401f1d7f958d5706ef6e19f6d23b74dfd Mon Sep 17 00:00:00 2001 From: Fiiranek Date: Tue, 12 Aug 2025 09:48:43 +0200 Subject: [PATCH 19/22] Support new UDC --- CHANGELOG.md | 4 ++++ crates/sncast/src/helpers/constants.rs | 2 +- crates/sncast/src/starknet_commands/deploy.rs | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b2aed4c49..c9320aac85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `--test-files` flag to `verify` command to include test files under src/ for verification (only applies to voyager) +#### Changed + +- `sncast` uses now [new UDC](https://starkscan.co/contract/0x02ceed65a4bd731034c01113685c831b01c15d7d432f71afb1cf1634b53a2125) during deployment + #### Fixed - Block explorer links are now hidden by default when using [`starknet-devnet`](https://github.com/0xSpaceShard/starknet-devnet). Set `SNCAST_FORCE_SHOW_EXPLORER_LINKS=1` env variable to display them. diff --git a/crates/sncast/src/helpers/constants.rs b/crates/sncast/src/helpers/constants.rs index 0f9360ad2d..cee3cac25b 100644 --- a/crates/sncast/src/helpers/constants.rs +++ b/crates/sncast/src/helpers/constants.rs @@ -16,7 +16,7 @@ inputs = [] "#; pub const UDC_ADDRESS: Felt = - felt!("0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf"); + felt!("0x02ceed65a4bd731034c01113685c831b01c15d7d432f71afb1cf1634b53a2125"); pub const OZ_CLASS_HASH: Felt = felt!("0x05b4b537eaa2399e3aa99c4e2e0208ebd6c71bc1467938cd52c798c601e43564"); // v1.0.0 pub const READY_CLASS_HASH: Felt = diff --git a/crates/sncast/src/starknet_commands/deploy.rs b/crates/sncast/src/starknet_commands/deploy.rs index d06dcee29e..9042d76049 100644 --- a/crates/sncast/src/starknet_commands/deploy.rs +++ b/crates/sncast/src/starknet_commands/deploy.rs @@ -2,6 +2,7 @@ use anyhow::{Result, anyhow}; use clap::Args; use conversions::IntoConv; use foundry_ui::UI; +use sncast::helpers::constants::UDC_ADDRESS; use sncast::helpers::fee::{FeeArgs, FeeSettings}; use sncast::helpers::rpc::RpcArgs; use sncast::response::deploy::DeployResponse; @@ -71,7 +72,9 @@ pub async fn deploy( ui: &UI, ) -> Result { let salt = extract_or_generate_salt(salt); - let factory = ContractFactory::new(class_hash, account); + + // TODO(#3628): Use `ContractFactory::new` once new UDC address is the default one in starknet-rs + let factory = ContractFactory::new_with_udc(class_hash, account, UDC_ADDRESS); let deployment = factory.deploy_v3(calldata.clone(), salt, unique); From 921e0c037d68c1f428d434c5187e79d95420f71b Mon Sep 17 00:00:00 2001 From: Fiiranek Date: Tue, 12 Aug 2025 10:40:48 +0200 Subject: [PATCH 20/22] Apply changes from upstream branch --- crates/conversions/src/serde/deserialize.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/crates/conversions/src/serde/deserialize.rs b/crates/conversions/src/serde/deserialize.rs index 4503192429..8576efcf0b 100644 --- a/crates/conversions/src/serde/deserialize.rs +++ b/crates/conversions/src/serde/deserialize.rs @@ -17,24 +17,25 @@ pub type BufferReadResult = Result; pub struct BufferReader<'a> { buffer: &'a [Felt], + idx: usize, } pub trait CairoDeserialize: Sized { fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult; } -impl<'a> BufferReader<'a> { +impl BufferReader<'_> { #[must_use] - pub fn new(buffer: &'a [Felt]) -> Self { - Self { buffer } + pub fn new<'a>(buffer: &'a [Felt]) -> BufferReader<'a> { + BufferReader::<'a> { buffer, idx: 0 } } pub fn read_felt(&mut self) -> BufferReadResult { - let [head, tail @ ..] = self.buffer else { - return Err(BufferReadError::EndOfBuffer); - }; - self.buffer = tail; - Ok(*head) + let felt = self.buffer.get(self.idx).copied(); + + self.idx += 1; + + felt.ok_or(BufferReadError::EndOfBuffer) } pub fn read(&mut self) -> BufferReadResult From abb4691ccde2520a33dc4a005af4b40d932207ee Mon Sep 17 00:00:00 2001 From: Fiiranek Date: Tue, 26 Aug 2025 12:29:24 +0200 Subject: [PATCH 21/22] Remove file --- .../http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json diff --git a/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json b/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json deleted file mode 100644 index 190ddbcaf1..0000000000 --- a/crates/forge/tests/data/forking/.snfoundry_cache/http___188_34_188_184_7070_rpc_v0_9_54060_v0_48_0.json +++ /dev/null @@ -1 +0,0 @@ -{"cache_version":"0_48_1","storage_at":{"0x202de98471a4fae6bcbabb96cab00437d381abc58b02509043778074d6781e9":{"0x206f38f7e4f15e87567361213c28f235cccdaa1d7fd34c9db1dfe9489c6a091":"0x14d"}},"nonce_at":{},"class_hash_at":{"0x202de98471a4fae6bcbabb96cab00437d381abc58b02509043778074d6781e9":"0x6a7eb29ee38b0a0b198e39ed6ad458d2e460264b463351a0acfc05822d61550"},"compiled_contract_class":{"0x6a7eb29ee38b0a0b198e39ed6ad458d2e460264b463351a0acfc05822d61550":{"sierra_program":["0x1","0x3","0x0","0x2","0x1","0x0","0xff","0x1","0x23","0x52616e6765436865636b","0x0","0x4761734275696c74696e","0x66656c74323532","0x4172726179","0x1","0x2","0x536e617073686f74","0x3","0x537472756374","0x1baeba72e79e9db2587cf44fedb2f3700b2075a5e8e39a562584862c4b71f62","0x4","0x2ee1e2b1b89f8c495f200e4956278a4d47395fe262f27b52e5865c9524c08c3","0x456e756d","0x11c6d8087e00642489f92d2821ad6ebd6532ad1a3b6d12833da6d6810391511","0x6","0x753332","0x53797374656d","0x16a4c8d7c05909052238a862d8cc3e7975bf05a07b3a69c6b28951083a6d672","0xa","0x5","0x9931c641b913035ae674b400b61a51476d506bbe8bba2ff8a6272790aba9e6","0xc","0xb","0x4275696c74696e436f737473","0x117f8dd6812873d3aeeacdfe88181a6eb024b50a122679c11870b3b47a1ec88","0x5af52ee38c32146750e2728e3556e24468de85c9684e8215a6a54f774a0eb9","0xf","0x10","0x3a44698eeaa62b837a805b0dfc46b2c1e4f013d3acf9b3c68ff14f08abc709","0x11","0x10203be321c62a7bd4c060d69539c1fbe065baa9e253c74d2cc48be163e259","0x13","0xcc5e86243f861d2d64b08c35db21013e773ac5cf10097946fe0011304886d5","0x15","0x17b6ecc31946835b0d9d92c2dd7a9c14f29af0371571ae74a1b228828b2242","0x17","0x34f9bd7c6cb2dd4263175964ad75f1ff1461ddc332fbfb274e0fb2a5d7ab968","0x18","0x426f78","0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7","0x1a","0x123a1e81adcc5bd99f099d588eab8cc3de808fcdce58bd37e7e866729f3bcec","0x1c","0x53746f726167654261736541646472657373","0x53746f7261676541646472657373","0x90d0203c41ad646d024845257a6eceb2f8b59b29ce7420dd518053d2edeedc","0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99","0x4e6f6e5a65726f","0x85","0x7265766f6b655f61705f747261636b696e67","0x77697468647261775f676173","0x6272616e63685f616c69676e","0x73746f72655f74656d70","0x66756e6374696f6e5f63616c6c","0x656e756d5f6d61746368","0x7","0x7374727563745f6465636f6e737472756374","0x61727261795f6c656e","0x736e617073686f745f74616b65","0x8","0x64726f70","0x7533325f636f6e7374","0x72656e616d65","0x7533325f6571","0x9","0x61727261795f6e6577","0x66656c743235325f636f6e7374","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x61727261795f617070656e64","0x7374727563745f636f6e737472756374","0x656e756d5f696e6974","0xd","0x6765745f6275696c74696e5f636f737473","0xe","0x77697468647261775f6761735f616c6c","0x12","0x4f7574206f6620676173","0x496e70757420746f6f2073686f727420666f7220617267756d656e7473","0x14","0x16","0x19","0x61727261795f736e617073686f745f706f705f66726f6e74","0x1b","0x6a756d70","0x756e626f78","0x66656c743235325f616464","0x1d","0x50414e4943","0x444159544148","0x64697361626c655f61705f747261636b696e67","0x73746f726167655f626173655f616464726573735f636f6e7374","0x206f38f7e4f15e87567361213c28f235cccdaa1d7fd34c9db1dfe9489c6a091","0x73746f726167655f616464726573735f66726f6d5f62617365","0x1f","0x73746f726167655f726561645f73797363616c6c","0x20","0x73746f726167655f77726974655f73797363616c6c","0x21","0x647570","0x66656c743235325f69735f7a65726f","0x22","0x66656c743235325f737562","0x2fe","0xffffffffffffffff","0x63","0x54","0x24","0x1e","0x25","0x46","0x26","0x27","0x28","0x29","0x2d","0x2e","0x2f","0x30","0x2a","0x2b","0x2c","0x31","0x3f","0x32","0x33","0x34","0x35","0x36","0x37","0x38","0x39","0x3a","0x3b","0x3c","0x3d","0x3e","0x40","0x41","0x42","0x43","0x44","0x45","0x47","0x48","0x49","0x4a","0x4b","0x4c","0x4d","0x4e","0x4f","0x50","0x51","0x52","0x53","0x55","0x56","0x57","0x58","0x59","0x5a","0x5b","0x5c","0x5d","0x5e","0x5f","0xc6","0x90","0xb9","0xb2","0x121","0xf3","0x114","0x10d","0x19d","0x196","0x187","0x157","0x179","0x172","0x60","0x61","0x62","0x64","0x65","0x66","0x67","0x68","0x69","0x1b2","0x1b7","0x1c1","0x1ed","0x1e7","0x203","0x224","0x229","0x245","0x23f","0x6a","0x262","0x6b","0x6c","0x267","0x6d","0x6e","0x6f","0x272","0x70","0x287","0x71","0x72","0x28c","0x73","0x74","0x75","0x297","0x76","0x77","0x78","0x79","0x7a","0x2d7","0x7b","0x7c","0x2af","0x7d","0x7e","0x2cd","0x7f","0x80","0x2c7","0x81","0x2ec","0x82","0x2f8","0x83","0x84","0xd4","0x12f","0x1ab","0x1c8","0x1cc","0x1f5","0x209","0x20f","0x21c","0x24f","0x255","0x278","0x29e","0x2e6","0x2f2","0x1ae7","0x7060f02090e0d02060a0c060b02070a090606080706060502040203020100","0x617061602090e15060d02070a090614060d02090a1302060a021202111006","0x70a18061f061e02090e10061d060d02090a1c061b02070a1a02060a021918","0x62402090e180623062202090e10060d02070a180621062002090e07060d02","0x10062a062902090e07060628180627062602090e250615060d02090a100609","0x2090e090607062f02090e022e022d18062c062b02090e10061c060d02090a","0x60638020606360c0906371506063602350234023332070606310906100630","0x2413d0606363d0606400207063f3d06063e3d06063c0706063b1506063a39","0x606460706063645070644070606431006063e15090637420606360706063e","0x24c4b060636024a4906063606060636060749060748180606471406064707","0x6063e0906063c1f06063e4d060638100906371d0606361d0606471c060647","0x1d06063c4f0706441506063e4e070644020749060748170606471506064709","0x906373d090637090606360706063c2106063a50060638390906371d06063e","0x65318090637250606382706063a52060638140906372306063e5106063842","0x60638060754060748100606470255540606360c0606360207540607480706","0x63a1006063606073906074839060636020739060748070606400706065654","0x606472c06063a58060638490906370257170906371c0606361c06063c1d06","0x20750060748210606471c06063e06074d0607484d06063602074d0607481f","0x37025b510606360607510607485a0706445907064406075006074850060636","0x65c06072506074806075206074852060636020752060748270606474b0906","0x37610606400607610607486106063602076106074802605f060636025e5d07","0x63a1d090637630606400607630607486306063602076306074802621c0906","0x60748026507060664060758060748580606360207580607482c0606472306","0x207510607482306064763060638610606380267060706446606063e020725","0x90609020269060207023910076a150c076907060207060202690602020268","0x66b18066907420610020c0669060c061502423d07690614060c0214066906","0x1c0769064b0642024b06690649063d02490669063d06390202690602070217","0x269064d061402214d0769061f0642021f0669060218020269061c0614021d","0x69072350074b0250066906500649022306690621061702500669061d061702","0x7690627061f022706690607061d0202690618061c02026906020702026c02","0x2a0669062a0623022a0669060250025206690602210202690625064d022551","0x69065806520258066906542c0727022c066906022502540669062a52075102","0x66d0654026306690651061d026106690615062a025f0669060c0615026d06","0x2000669060006580200066906022c020269060207026663615f0c06660669","0x7206610272066906025f020269060207027170076f6e6c07690700150c096d","0x6230276066906730663027506690607061d02740669066e062a0273066906","0x77a0600026c0669066c0615027a7978096906777675740c66027706690618","0x67e066e027e0669060221020269067b066c020269060207027d067c7b0669","0x82067302820669068106720281066906800671020269067f067002807f0769","0x654028606690679061d028506690678062a02840669066c06150283066906","0x69066c061502880669067d065202026906020702878685840c068706690683","0x8a7c890c068b066906880654028a06690679061d027c06690678062a028906","0x623028d0669060278028c06690602210202690618061c020269060207028b","0x26f0669068e8f0727028f0669060225028e0669068d8c0751028d0669068d","0x9306690607061d029206690671062a029106690670061502900669066f0652","0x3d06790202690617064d02026906020702949392910c069406690690065402","0x69695075102960669069606230296066906027a0295066906022102026906","0xc0615029a0669069906520299066906979807270298066906022502970669","0x9b0c069d0669069a0654026b06690607061d029c06690615062a029b066906","0x29f0669060278029e066906022102026906090679020269060207029d6b9c","0x66906a0a1072702a1066906022502a00669069f9e0751029f0669069f0623","0x690607061d02a506690639062a02a406690610061502a3066906a2065202a2","0xc0769070602070602026906020202a7a6a5a40c06a7066906a3065402a606","0x42064202420669063d063d023d06690609063902026906020702391007a815","0x614024b490769061706420217066906021802026906140614021814076906","0x615021c0669061c0649021d0669064b0617021c0669061806170202690649","0x1f022106690607061d0202690602070202a90269071d1c074b020c0669060c","0x6230223066906025002500669060221020269064d064d024d1f0769062106","0x2270669065125072702250669060225025106690623500751022306690623","0x2c0669061f061d025406690615062a022a0669060c06150252066906270652","0x6d0658026d066906022c02026906020702582c542a0c065806690652065402","0x66906025f02026906020702666307aa615f0769076d150c096d026d066906","0x690661062a020269066e067502706e0769066c0674026c0669060006610200","0x27372710969067a79780976027a066906700663027906690607061d027806","0x6690674067b020269060207027506ab74066907730677025f0669065f0615","0x669067d0623020269067b061c027d7b07690676067d027706690602210276","0x67e066e020269067f064d027f7e0769068180077f028106690677067e0280","0x85067302850669068406720284066906830671020269068206700283820769","0x654028906690672061d028806690671062a02870669065f06150286066906","0x69065f0615028a066906750652020269060207027c8988870c067c06690686","0x8d8c8b0c068e0669068a0654028d06690672061d028c06690671062a028b06","0x51026f0669066f0623026f0669060278028f0669060221020269060207028e","0x930669069206520292066906909107270291066906022502900669066f8f07","0x66906930654029606690607061d029506690666062a029406690663061502","0x60278029806690602210202690609067902026906020702979695940c0697","0x9b0727029b0669060225029a06690699980751029906690699062302990669","0x1d029e06690639062a029d066906100615026b0669069c0652029c0669069a","0x602070602026906020202a09f9e9d0c06a00669066b0654029f0669060706","0x420669063d063d023d06690609063902026906020702391007ac150c076907","0x49076906170642021706690602180202690614061402181407690642064202","0x669061c0649021d0669064b0617021c06690618061702026906490614024b","0x690607061d0202690602070202ad0269071d1c074b020c0669060c0615021c","0x66906025002500669060221020269064d064d024d1f07690621061f022106","0x6512507270225066906022502510669062350075102230669062306230223","0x1f061d025406690615062a022a0669060c0615025206690627065202270669","0x6d066906022c02026906020702582c542a0c0658066906520654022c066906","0x5f02026906020702666307ae615f0769076d150c096d026d0669066d065802","0x63020269066e067502706e0769066c0674026c066906000661020006690602","0xaf73066907710681025f0669065f0615027106690672068002720669067006","0x747a07690679066e0279066906022102026906730682020269060207027806","0x7706690676067302760669067506720275066906740671020269067a067002","0x66906770654027e06690607061d027d06690661062a027b0669065f061502","0x2a02810669065f06150280066906780652020269060207027f7e7d7b0c067f","0x20702848382810c0684066906800654028306690607061d02820669066106","0x6868507510286066906860623028606690602780285066906022102026906","0x630615027c0669068906520289066906878807270288066906022502870669","0x8a0c068d0669067c0654028c06690607061d028b06690666062a028a066906","0x28f0669060278028e066906022102026906090679020269060207028d8c8b","0x669066f90072702900669060225026f0669068f8e0751028f0669068f0623","0x690607061d029406690639062a029306690610061502920669069106520291","0xc0769070602070602026906020202969594930c0696066906920654029506","0x90609021706690615062a02180669060c061502026906020702391007b015","0x60207021c06b14b0669071406840214423d09690649171809830249066906","0x639020269060207022106b24d0669071f0686021f1d0769064b0685020269","0x1802026906510614022551076906230642022306690650063d02500669061d","0x17025406690625061702026906520614022a52076906270642022706690602","0x202690602070202b30269072c54074b0254066906540649022c0669062a06","0x20269066d064d026d580769065f061f025f06690607061d020269064d0670","0x2660669066361075102630669066306230263066906025002610669060221","0x700669063d0615026e0669066c0652026c0669066600072702000669060225","0x2737271700c06730669066e0654027206690658061d027106690642062a02","0x7a7907690778423d096d02780669067806580278066906022c020269060207","0x690677067402770669067606610276066906025f02026906020702757407b4","0x807f078702800669064d067e027f0669067d0663020269067b0675027d7b07","0x82020269060207028206b5810669077e06810279066906790615027e066906","0x6710202690684067002858407690683066e02830669060221020269068106","0x2a028906690679061502880669068706730287066906860672028606690685","0x207028b8a7c890c068b066906880654028a06690607061d027c0669067a06","0x7061d028e0669067a062a028d066906790615028c06690682065202026906","0x269064d0670020269060207026f8f8e8d0c066f0669068c0654028f066906","0x92066906919007510291066906910623029106690602780290066906022102","0x6690674061502950669069406520294066906929307270293066906022502","0x999897960c0699066906950654029806690607061d029706690675062a0296","0x6027a029a0669060221020269061d06790202690621064d02026906020702","0x6b0727026b0669060225029c0669069b9a0751029b0669069b0623029b0669","0x1d02a006690642062a029f0669063d0615029e0669069d0652029d0669069c","0x61c065202026906020702a2a1a09f0c06a20669069e065402a10669060706","0xa3065402a606690607061d02a506690642062a02a40669063d061502a30669","0x2b606690602210202690609067902026906020702a7a6a5a40c06a7066906","0x26a066906022502b8066906b7b6075102b7066906b7062302b70669060278","0x6690639062a02bb06690610061502ba066906b9065202b9066906b86a0727","0x606690602063902bebdbcbb0c06be066906ba065402bd06690607061d02bc","0x607067c0215066906090689020269060207020c06bf090707690706068802","0x23d066906028c0202690602070202c006028b023906690615068a02100669","0x14066906100671023906690642068a02100669060c067c02420669063d068d","0x690618068f020269060207021706c11806690739068e021406690614060902","0x61c0691021d066906140609021c0669064b0690024b06690649066f024906","0x4d0692024d066906028c0202690617064d020269060207021f1d07061f0669","0x6066906028c02235007062306690621069102500669061406090221066906","0x695020c066906070694020907070609066906060693020706690602061d02","0x217066906100696021806690606061d021406690602062a0210150769060c","0x67b020269060207024b06c24906690742067702423d390969061718140997","0x2230669063d061d025006690639062a021d066906091c0798021c06690649","0x69a02214d1f096906255123500c9902250669061d06230251066906150696","0x202690654064d02542a07690627069b020269060207025206c32706690721","0x5f0669066d066b026d066906582c079c0258066906028c022c0669062a0661","0x7026663610906660669065f069d02630669064d061d02610669061f062a02","0x69d026e0669064d061d026c0669061f062a020006690652069e0202690602","0x202690609061c0202690615069f02026906020702706e6c09067006690600","0x7806690671069d02730669063d061d027206690639062a02710669064b069e","0x96023d06690606061d023906690602062a0209066906070694027873720906","0x7021806c4140669071006770210150c096906423d39099702420669060906","0x62a024b0669064906a102490669061706a0021706690614067b0202690602","0x69060207021f1d1c09061f0669064b06a2021d06690615061d021c0669060c","0x69064d06a2025006690615061d02210669060c062a024d0669061806a30202","0xc066906028c020906690607060751020706690602066f0223502109062306","0x60221020269060206750210150706100669060c0693021506690609067e02","0x602a50209066906070607510207066906070623020706690602a402060669","0x1007270210066906022502150669060c090751020c0669060c0623020c0669","0x202690602b602420606420669063d06a7023d0669063906a6023906690615","0x6906150689020269060207021006c5150c0769070906880209066906070639","0x202690602070202c606028b024206690639068a023d0669060c067c023906","0x24206690618068a023d06690610067c021806690614068d0214066906028c","0x69060207024b06c74906690742068e021706690617060902170669063d0671","0x66906020615021f0669060221021d0669061c066f021c06690649068f0202","0x69061d062302270669061f067e0225066906170609025106690606062a0223","0x60207025406c82a0669075006840250214d096906522725512315b7025206","0x615025f0669066d066a026d066906582c07b802582c0769062a0685020269","0x69060207026663610906660669065f06b9026306690621062a02610669064d","0x69060006b9026e06690621062a026c0669064d061502000669065406ba0202","0x7106bb0271066906028c020269064b064d02026906020702706e6c09067006","0x2a0279066906020615027806690673066a0273066906721707b80272066906","0x690602250202690602067502747a790906740669067806b9027a0669060606","0x2150606150669060c06a7020c0669060906a6020906690606070727020706","0x64902150669060218020c0669060906bd020906690602bc0202690607069f","0x18144209ca3d39100969070c1506020cc9020c0669060c06be021506690615","0x24b06690639061d024906690610062a02170669063d06cb02026906020702","0x42062a021d0669061806ce0202690602070202cd06028b021c0669061706cc","0x6d0024d0669061c06cf021c0669061d06cc024b06690614061d0249066906","0x22306690621067b020269060207025006d1210669071f0677021f0669064d","0x520669064b061d022706690649062a02250669065106a102510669062306a0","0x49062a02540669065006a3020269060207022a522709062a0669062506a202","0x6906070695026d582c09066d0669065406a202580669064b061d022c066906","0x66906021802390669061006bd021006690602bc0202690615069f02150c07","0xd3144207690709393d060215d202390669063906be023d0669063d0649023d","0x690642062a021c0669064b06d4024b066906028c0202690602070249171809","0x202690602070202d606028b024d0669061c06d5021f06690614061d021d06","0x4d0669062106d5021f06690617061d021d06690618062a02210669064906d7","0x60207022506da5106690750068102500669062306d902230669064d06d802","0x1d062a022a0669065206dd0252066906270c07dc02270669065106db020269","0x26906020702582c540906580669062a06de022c0669061f061d0254066906","0x610669061f061d025f0669061d062a026d0669062506df020269060c069f02","0x61506580215066906022c0202690602b60263615f0906630669066d06de02","0x769060c06e102026906020702423d07e03910076907150602096d02150669","0x60c061c020269060207021806e30269071406e2021006690610061502140c","0x100615024b06690649066a0249066906170707b802170669060906e4020269","0x269060207021f1d1c09061f0669064b06b9021d06690639062a021c066906","0x6690721061002214d07690650060c0250066906070609020269061806e502","0x270c07e8022706690602e7022506690623090751020269060207025106e623","0x67e025f0669064d0609026d06690639062a02580669061006150252066906","0x2c0684022c542a09690663615f6d5815b70263066906520623026106690625","0x700669066e6c07b8026e6c076906660685020269060207020006e966066907","0x669067106b9027306690654062a02720669062a0615027106690670066a02","0x62a027a0669062a061502790669060006ba02026906020702787372090678","0x269060c061c0202690602070275747a0906750669067906b9027406690654","0x6690677066a0277066906764d07b802760669065106bb0202690609067002","0x27f7e7d09067f0669067b06b9027e06690639062a027d066906100615027b","0x690602210202690607067902026906090670020269060c061c020269060207","0x69060225028206690681800751028106690681062302810669060278028006","0x42062a02860669063d061502850669068406ba028406690682830727028306","0x207020706eb060669070206ea028887860906880669068506b90287066906","0x2150606150669060c06a2020c0669060906a102090669060606a002026906","0xa2023d0669063906a302390669060710072702100669060225020269060207","0x60606ee020269060207020706ed060669070206ec02420606420669063d06","0x22502026906020702150606150669060c06a7020c0669060906ef02090669","0x606420669063d06a7023d0669063906a60239066906071007270210066906","0x9070602494206020c154206020c0209070602494206020c154206020c1f42","0xf109070602494206020c154206020cf009070602494206020c154206020cd4","0x420609f4090706024d420609071d42060cf3021042074206f2023915071506","0x6020915060209f70251061d06f60602100907090707f5070602504206091d","0x9071c42060cfa070602504206091c420609f906025106091d07f807060252","0x6fd0250066106fc0c0907060252060209070915060215fb09070602584206","0xfe02510663"],"contract_class_version":"0.1.0","entry_points_by_type":{"CONSTRUCTOR":[],"EXTERNAL":[{"selector":"0x19c909057a1fa4e06e930f9418d432c08c64bd4bcd4be37d96beecaf3098412","function_idx":3},{"selector":"0x362398bec32bc0ebb411203221a35a0301193a96f317ebe5e40be9f60d15320","function_idx":0},{"selector":"0x39e11d48192e4333233c7eb19d10ad67c362bb28580c604d67884c85da39695","function_idx":1},{"selector":"0x3c90fa28d76cca3d1f524541612bd9b88cc064457761e09c93d034edf542da4","function_idx":2}],"L1_HANDLER":[]},"abi":"[{\"type\": \"impl\", \"name\": \"IHelloStarknetImpl\", \"interface_name\": \"hello_starknet: :hello_starknet: :IHelloStarknet\"}, {\"type\": \"interface\", \"name\": \"hello_starknet: :hello_starknet: :IHelloStarknet\", \"items\": [{\"type\": \"function\", \"name\": \"increase_balance\", \"inputs\": [{\"name\": \"amount\", \"type\": \"core: :felt252\"}], \"outputs\": [], \"state_mutability\": \"external\"}, {\"type\": \"function\", \"name\": \"get_balance\", \"inputs\": [], \"outputs\": [{\"type\": \"core: :felt252\"}], \"state_mutability\": \"view\"}, {\"type\": \"function\", \"name\": \"do_a_panic\", \"inputs\": [], \"outputs\": [], \"state_mutability\": \"view\"}, {\"type\": \"function\", \"name\": \"do_a_panic_with\", \"inputs\": [{\"name\": \"panic_data\", \"type\": \"core: :array: :Array: :\"}], \"outputs\": [], \"state_mutability\": \"view\"}]}, {\"type\": \"event\", \"name\": \"hello_starknet: :hello_starknet: :HelloStarknet: :Event\", \"kind\": \"enum\", \"variants\": []}]"}},"compiled_class_hash":{}} \ No newline at end of file From 403ff9e97d287e04b0facef2336764591d6b6082 Mon Sep 17 00:00:00 2001 From: Fiiranek Date: Tue, 26 Aug 2025 12:30:07 +0200 Subject: [PATCH 22/22] Remove unnecessary changes --- crates/conversions/src/serde/deserialize.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/crates/conversions/src/serde/deserialize.rs b/crates/conversions/src/serde/deserialize.rs index 0cff0fac83..5cd3948ca2 100644 --- a/crates/conversions/src/serde/deserialize.rs +++ b/crates/conversions/src/serde/deserialize.rs @@ -17,25 +17,24 @@ pub type BufferReadResult = Result; pub struct BufferReader<'a> { buffer: &'a [Felt], - idx: usize, } pub trait CairoDeserialize: Sized { fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult; } -impl BufferReader<'_> { +impl<'a> BufferReader<'a> { #[must_use] - pub fn new<'a>(buffer: &'a [Felt]) -> BufferReader<'a> { - BufferReader::<'a> { buffer, idx: 0 } + pub fn new(buffer: &'a [Felt]) -> Self { + Self { buffer } } pub fn read_felt(&mut self) -> BufferReadResult { - let felt = self.buffer.get(self.idx).copied(); - - self.idx += 1; - - felt.ok_or(BufferReadError::EndOfBuffer) + let [head, tail @ ..] = self.buffer else { + return Err(BufferReadError::EndOfBuffer); + }; + self.buffer = tail; + Ok(*head) } #[must_use]