diff --git a/crates/papyrus_rpc/src/v0_6/api/mod.rs b/crates/papyrus_rpc/src/v0_6/api/mod.rs index 6c20c3db505..c24cf2c92db 100644 --- a/crates/papyrus_rpc/src/v0_6/api/mod.rs +++ b/crates/papyrus_rpc/src/v0_6/api/mod.rs @@ -554,7 +554,7 @@ impl From for starknet_api::transaction::DeployAccount nonce_data_availability_mode, fee_data_availability_mode, }) => Self::V3(starknet_api::transaction::DeployAccountTransactionV3 { - resource_bounds: resource_bounds.into(), + resource_bounds, tip, signature, nonce, @@ -613,7 +613,7 @@ impl From for starknet_api::transaction::InvokeTransaction { nonce_data_availability_mode, fee_data_availability_mode, }) => Self::V3(starknet_api::transaction::InvokeTransactionV3 { - resource_bounds: resource_bounds.into(), + resource_bounds, tip, signature, nonce, diff --git a/crates/papyrus_rpc/src/v0_6/broadcasted_transaction.rs b/crates/papyrus_rpc/src/v0_6/broadcasted_transaction.rs index 496eea2b8bf..169a1ea8587 100644 --- a/crates/papyrus_rpc/src/v0_6/broadcasted_transaction.rs +++ b/crates/papyrus_rpc/src/v0_6/broadcasted_transaction.rs @@ -21,12 +21,13 @@ use starknet_api::transaction::{ Tip, TransactionSignature, TransactionVersion, + ValidResourceBounds, }; use starknet_client::writer::objects::transaction as client_transaction; use starknet_client::writer::objects::transaction::DeprecatedContractClass; use super::state::ContractClass; -use super::transaction::{DeployAccountTransaction, InvokeTransaction, ResourceBoundsMapping}; +use super::transaction::{DeployAccountTransaction, InvokeTransaction}; use crate::compression_utils::compress_and_encode; /// Transactions that are ready to be broadcasted to the network and are not included in a block. @@ -106,7 +107,7 @@ pub struct BroadcastedDeclareV3Transaction { pub signature: TransactionSignature, pub nonce: Nonce, pub contract_class: ContractClass, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, @@ -174,7 +175,7 @@ impl TryFrom for client_transaction::DeclareTrans .to_hash_map(), abi: declare_v3.contract_class.abi, }, - resource_bounds: declare_v3.resource_bounds.into(), + resource_bounds: declare_v3.resource_bounds, tip: declare_v3.tip, signature: declare_v3.signature, nonce: declare_v3.nonce, diff --git a/crates/papyrus_rpc/src/v0_6/broadcasted_transaction_test.rs b/crates/papyrus_rpc/src/v0_6/broadcasted_transaction_test.rs index 7780dfdb5bc..0669d7e2ae9 100644 --- a/crates/papyrus_rpc/src/v0_6/broadcasted_transaction_test.rs +++ b/crates/papyrus_rpc/src/v0_6/broadcasted_transaction_test.rs @@ -23,9 +23,9 @@ use starknet_api::transaction::{ AccountDeploymentData, Fee, PaymasterData, - ResourceBounds, Tip, TransactionSignature, + ValidResourceBounds, }; use starknet_client::writer::objects::transaction::DeprecatedContractClass; use starknet_types_core::felt::Felt; @@ -37,7 +37,6 @@ use super::{ BroadcastedDeclareV2Transaction, BroadcastedDeclareV3Transaction, DeclareType, - ResourceBoundsMapping, }; use crate::test_utils::{get_starknet_spec_api_schema_for_components, SpecFile}; use crate::version_config::VERSION_0_6 as Version; @@ -82,7 +81,7 @@ auto_impl_get_test_instance! { pub signature: TransactionSignature, pub nonce: Nonce, pub contract_class: ContractClass, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, @@ -105,11 +104,6 @@ auto_impl_get_test_instance! { pub enum DeclareType { Declare = 0, } - - pub struct ResourceBoundsMapping { - pub l1_gas: ResourceBounds, - pub l2_gas: ResourceBounds, - } } #[test] diff --git a/crates/papyrus_rpc/src/v0_6/transaction.rs b/crates/papyrus_rpc/src/v0_6/transaction.rs index dcb8acfe269..637f73eb92b 100644 --- a/crates/papyrus_rpc/src/v0_6/transaction.rs +++ b/crates/papyrus_rpc/src/v0_6/transaction.rs @@ -27,7 +27,6 @@ use starknet_api::data_availability::DataAvailabilityMode; use starknet_api::serde_utils::bytes_from_hex_str; use starknet_api::transaction::{ AccountDeploymentData, - AllResourceBounds, Calldata, ContractAddressSalt, DeployTransaction, @@ -35,13 +34,12 @@ use starknet_api::transaction::{ L1HandlerTransaction, MessageToL1, PaymasterData, - Resource, - ResourceBounds, Tip, TransactionExecutionStatus, TransactionHash, TransactionSignature, TransactionVersion, + ValidResourceBounds, }; use starknet_client::writer::objects::transaction as client_transaction; use starknet_types_core::felt::Felt; @@ -145,56 +143,9 @@ impl From for DeclareTransactio } } -// The serialization of the struct in SN_API is in capital letters, not following the spec. -#[derive(Debug, Clone, Eq, PartialEq, Hash, Deserialize, Serialize, PartialOrd, Ord)] -pub struct ResourceBoundsMapping { - pub l1_gas: ResourceBounds, - pub l2_gas: ResourceBounds, -} - -impl From for starknet_api::transaction::DeprecatedResourceBoundsMapping { - fn from(value: ResourceBoundsMapping) -> Self { - Self([(Resource::L1Gas, value.l1_gas), (Resource::L2Gas, value.l2_gas)].into()) - } -} - -impl From for starknet_api::transaction::ValidResourceBounds { - fn from(value: ResourceBoundsMapping) -> Self { - if !value.l2_gas.is_zero() { - panic!("Resource bounds mapping l2 gas is expected to be zero. Got: {:?}", value.l2_gas) - } - Self::L1Gas(value.l1_gas) - } -} - -impl From for ResourceBoundsMapping { - fn from(value: starknet_api::transaction::ValidResourceBounds) -> Self { - match value { - starknet_api::transaction::ValidResourceBounds::L1Gas(l1_gas) => { - Self { l1_gas, l2_gas: ResourceBounds::default() } - } - // TODO(Nimrod): Don't allow this conversion. - starknet_api::transaction::ValidResourceBounds::AllResources(AllResourceBounds { - l1_gas, - l2_gas, - .. - }) => Self { l1_gas, l2_gas }, - } - } -} - -impl From for ResourceBoundsMapping { - fn from(value: starknet_api::transaction::DeprecatedResourceBoundsMapping) -> Self { - Self { - l1_gas: value.0.get(&Resource::L1Gas).cloned().unwrap_or_default(), - l2_gas: value.0.get(&Resource::L2Gas).cloned().unwrap_or_default(), - } - } -} - #[derive(Debug, Clone, Eq, PartialEq, Hash, Deserialize, Serialize, PartialOrd, Ord)] pub struct DeclareTransactionV3 { - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub signature: TransactionSignature, pub nonce: Nonce, @@ -211,7 +162,7 @@ pub struct DeclareTransactionV3 { impl From for DeclareTransactionV3 { fn from(tx: starknet_api::transaction::DeclareTransactionV3) -> Self { Self { - resource_bounds: tx.resource_bounds.into(), + resource_bounds: tx.resource_bounds, tip: tx.tip, signature: tx.signature, nonce: tx.nonce, @@ -255,7 +206,7 @@ pub struct DeployAccountTransactionV3 { pub contract_address_salt: ContractAddressSalt, pub constructor_calldata: Calldata, pub version: TransactionVersion3, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub nonce_data_availability_mode: DataAvailabilityMode, @@ -314,7 +265,7 @@ impl TryFrom for DeployAcco contract_address_salt, constructor_calldata, version: TransactionVersion3::Version3, - resource_bounds: resource_bounds.into(), + resource_bounds, tip, nonce_data_availability_mode, fee_data_availability_mode, @@ -347,7 +298,7 @@ impl From for client_transaction::DeployAccountTransac nonce: deploy_account_tx.nonce, signature: deploy_account_tx.signature, version: TransactionVersion::THREE, - resource_bounds: deploy_account_tx.resource_bounds.into(), + resource_bounds: deploy_account_tx.resource_bounds, tip: deploy_account_tx.tip, nonce_data_availability_mode: client_transaction::ReservedDataAvailabilityMode::Reserved, @@ -416,7 +367,7 @@ pub struct InvokeTransactionV3 { pub version: TransactionVersion3, pub signature: TransactionSignature, pub nonce: Nonce, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, @@ -432,7 +383,7 @@ impl From for client_transaction::InvokeTransaction { version: TransactionVersion::THREE, signature: tx.signature, nonce: tx.nonce, - resource_bounds: tx.resource_bounds.into(), + resource_bounds: tx.resource_bounds, tip: tx.tip, nonce_data_availability_mode: client_transaction::ReservedDataAvailabilityMode::Reserved, @@ -518,7 +469,7 @@ impl TryFrom for InvokeTransaction version: TransactionVersion3::Version3, signature, nonce, - resource_bounds: resource_bounds.into(), + resource_bounds, tip, nonce_data_availability_mode, fee_data_availability_mode, diff --git a/crates/papyrus_rpc/src/v0_6/transaction_test.rs b/crates/papyrus_rpc/src/v0_6/transaction_test.rs index 5bd9f0d7090..7b5817a6fed 100644 --- a/crates/papyrus_rpc/src/v0_6/transaction_test.rs +++ b/crates/papyrus_rpc/src/v0_6/transaction_test.rs @@ -31,10 +31,10 @@ use super::{ InvokeTransactionV0, InvokeTransactionV1, InvokeTransactionV3, - ResourceBoundsMapping, TransactionVersion0, TransactionVersion1, TransactionVersion3, + ValidResourceBounds, }; lazy_static::lazy_static! { @@ -83,7 +83,7 @@ auto_impl_get_test_instance! { pub contract_address_salt: ContractAddressSalt, pub constructor_calldata: Calldata, pub version: TransactionVersion3, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub nonce_data_availability_mode: DataAvailabilityMode, @@ -116,7 +116,7 @@ auto_impl_get_test_instance! { pub version: TransactionVersion3, pub signature: TransactionSignature, pub nonce: Nonce, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, diff --git a/crates/papyrus_rpc/src/v0_7/api/mod.rs b/crates/papyrus_rpc/src/v0_7/api/mod.rs index a19000eaf09..a018ba2e53d 100644 --- a/crates/papyrus_rpc/src/v0_7/api/mod.rs +++ b/crates/papyrus_rpc/src/v0_7/api/mod.rs @@ -551,7 +551,7 @@ impl From for starknet_api::transaction::DeployAccount nonce_data_availability_mode, fee_data_availability_mode, }) => Self::V3(starknet_api::transaction::DeployAccountTransactionV3 { - resource_bounds: resource_bounds.into(), + resource_bounds, tip, signature, nonce, @@ -610,7 +610,7 @@ impl From for starknet_api::transaction::InvokeTransaction { nonce_data_availability_mode, fee_data_availability_mode, }) => Self::V3(starknet_api::transaction::InvokeTransactionV3 { - resource_bounds: resource_bounds.into(), + resource_bounds, tip, signature, nonce, diff --git a/crates/papyrus_rpc/src/v0_7/broadcasted_transaction.rs b/crates/papyrus_rpc/src/v0_7/broadcasted_transaction.rs index 496eea2b8bf..169a1ea8587 100644 --- a/crates/papyrus_rpc/src/v0_7/broadcasted_transaction.rs +++ b/crates/papyrus_rpc/src/v0_7/broadcasted_transaction.rs @@ -21,12 +21,13 @@ use starknet_api::transaction::{ Tip, TransactionSignature, TransactionVersion, + ValidResourceBounds, }; use starknet_client::writer::objects::transaction as client_transaction; use starknet_client::writer::objects::transaction::DeprecatedContractClass; use super::state::ContractClass; -use super::transaction::{DeployAccountTransaction, InvokeTransaction, ResourceBoundsMapping}; +use super::transaction::{DeployAccountTransaction, InvokeTransaction}; use crate::compression_utils::compress_and_encode; /// Transactions that are ready to be broadcasted to the network and are not included in a block. @@ -106,7 +107,7 @@ pub struct BroadcastedDeclareV3Transaction { pub signature: TransactionSignature, pub nonce: Nonce, pub contract_class: ContractClass, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, @@ -174,7 +175,7 @@ impl TryFrom for client_transaction::DeclareTrans .to_hash_map(), abi: declare_v3.contract_class.abi, }, - resource_bounds: declare_v3.resource_bounds.into(), + resource_bounds: declare_v3.resource_bounds, tip: declare_v3.tip, signature: declare_v3.signature, nonce: declare_v3.nonce, diff --git a/crates/papyrus_rpc/src/v0_7/broadcasted_transaction_test.rs b/crates/papyrus_rpc/src/v0_7/broadcasted_transaction_test.rs index 134ae838cb2..3f014dc0a73 100644 --- a/crates/papyrus_rpc/src/v0_7/broadcasted_transaction_test.rs +++ b/crates/papyrus_rpc/src/v0_7/broadcasted_transaction_test.rs @@ -23,9 +23,9 @@ use starknet_api::transaction::{ AccountDeploymentData, Fee, PaymasterData, - ResourceBounds, Tip, TransactionSignature, + ValidResourceBounds, }; use starknet_client::writer::objects::transaction::DeprecatedContractClass; use starknet_types_core::felt::Felt; @@ -37,7 +37,6 @@ use super::{ BroadcastedDeclareV2Transaction, BroadcastedDeclareV3Transaction, DeclareType, - ResourceBoundsMapping, }; use crate::test_utils::{get_starknet_spec_api_schema_for_components, SpecFile}; use crate::version_config::VERSION_0_7 as Version; @@ -82,7 +81,7 @@ auto_impl_get_test_instance! { pub signature: TransactionSignature, pub nonce: Nonce, pub contract_class: ContractClass, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, @@ -105,11 +104,6 @@ auto_impl_get_test_instance! { pub enum DeclareType { Declare = 0, } - - pub struct ResourceBoundsMapping { - pub l1_gas: ResourceBounds, - pub l2_gas: ResourceBounds, - } } #[test] diff --git a/crates/papyrus_rpc/src/v0_7/transaction.rs b/crates/papyrus_rpc/src/v0_7/transaction.rs index 033699436ed..2e3307bf42b 100644 --- a/crates/papyrus_rpc/src/v0_7/transaction.rs +++ b/crates/papyrus_rpc/src/v0_7/transaction.rs @@ -29,7 +29,6 @@ use starknet_api::data_availability::DataAvailabilityMode; use starknet_api::serde_utils::bytes_from_hex_str; use starknet_api::transaction::{ AccountDeploymentData, - AllResourceBounds, Calldata, ContractAddressSalt, DeployTransaction, @@ -37,13 +36,12 @@ use starknet_api::transaction::{ L1HandlerTransaction, MessageToL1, PaymasterData, - Resource, - ResourceBounds, Tip, TransactionExecutionStatus, TransactionHash, TransactionSignature, TransactionVersion, + ValidResourceBounds, }; use starknet_client::writer::objects::transaction as client_transaction; use starknet_types_core::felt::Felt; @@ -148,56 +146,9 @@ impl From for DeclareTransactio } } -// The serialization of the struct in SN_API is in capital letters, not following the spec. -#[derive(Debug, Clone, Eq, PartialEq, Hash, Deserialize, Serialize, PartialOrd, Ord)] -pub struct ResourceBoundsMapping { - pub l1_gas: ResourceBounds, - pub l2_gas: ResourceBounds, -} - -impl From for starknet_api::transaction::DeprecatedResourceBoundsMapping { - fn from(value: ResourceBoundsMapping) -> Self { - Self([(Resource::L1Gas, value.l1_gas), (Resource::L2Gas, value.l2_gas)].into()) - } -} - -impl From for ResourceBoundsMapping { - fn from(value: starknet_api::transaction::DeprecatedResourceBoundsMapping) -> Self { - Self { - l1_gas: value.0.get(&Resource::L1Gas).cloned().unwrap_or_default(), - l2_gas: value.0.get(&Resource::L2Gas).cloned().unwrap_or_default(), - } - } -} - -impl From for starknet_api::transaction::ValidResourceBounds { - fn from(value: ResourceBoundsMapping) -> Self { - if !value.l2_gas.is_zero() { - panic!("Resource bounds mapping l2 gas is expected to be zero. Got: {:?}", value.l2_gas) - } - Self::L1Gas(value.l1_gas) - } -} - -impl From for ResourceBoundsMapping { - fn from(value: starknet_api::transaction::ValidResourceBounds) -> Self { - match value { - starknet_api::transaction::ValidResourceBounds::L1Gas(l1_gas) => { - Self { l1_gas, l2_gas: ResourceBounds::default() } - } - // TODO(Nimrod): Don't allow this conversion. - starknet_api::transaction::ValidResourceBounds::AllResources(AllResourceBounds { - l1_gas, - l2_gas, - .. - }) => Self { l1_gas, l2_gas }, - } - } -} - #[derive(Debug, Clone, Eq, PartialEq, Hash, Deserialize, Serialize, PartialOrd, Ord)] pub struct DeclareTransactionV3 { - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub signature: TransactionSignature, pub nonce: Nonce, @@ -214,7 +165,7 @@ pub struct DeclareTransactionV3 { impl From for DeclareTransactionV3 { fn from(tx: starknet_api::transaction::DeclareTransactionV3) -> Self { Self { - resource_bounds: tx.resource_bounds.into(), + resource_bounds: tx.resource_bounds, tip: tx.tip, signature: tx.signature, nonce: tx.nonce, @@ -258,7 +209,7 @@ pub struct DeployAccountTransactionV3 { pub contract_address_salt: ContractAddressSalt, pub constructor_calldata: Calldata, pub version: TransactionVersion3, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub nonce_data_availability_mode: DataAvailabilityMode, @@ -317,7 +268,7 @@ impl TryFrom for DeployAcco contract_address_salt, constructor_calldata, version: TransactionVersion3::Version3, - resource_bounds: resource_bounds.into(), + resource_bounds, tip, nonce_data_availability_mode, fee_data_availability_mode, @@ -350,7 +301,7 @@ impl From for client_transaction::DeployAccountTransac nonce: deploy_account_tx.nonce, signature: deploy_account_tx.signature, version: TransactionVersion::THREE, - resource_bounds: deploy_account_tx.resource_bounds.into(), + resource_bounds: deploy_account_tx.resource_bounds, tip: deploy_account_tx.tip, nonce_data_availability_mode: client_transaction::ReservedDataAvailabilityMode::Reserved, @@ -419,7 +370,7 @@ pub struct InvokeTransactionV3 { pub version: TransactionVersion3, pub signature: TransactionSignature, pub nonce: Nonce, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, @@ -435,7 +386,7 @@ impl From for client_transaction::InvokeTransaction { version: TransactionVersion::THREE, signature: tx.signature, nonce: tx.nonce, - resource_bounds: tx.resource_bounds.into(), + resource_bounds: tx.resource_bounds, tip: tx.tip, nonce_data_availability_mode: client_transaction::ReservedDataAvailabilityMode::Reserved, @@ -521,7 +472,7 @@ impl TryFrom for InvokeTransaction version: TransactionVersion3::Version3, signature, nonce, - resource_bounds: resource_bounds.into(), + resource_bounds, tip, nonce_data_availability_mode, fee_data_availability_mode, diff --git a/crates/papyrus_rpc/src/v0_7/transaction_test.rs b/crates/papyrus_rpc/src/v0_7/transaction_test.rs index 5bd9f0d7090..3ed3447f9a0 100644 --- a/crates/papyrus_rpc/src/v0_7/transaction_test.rs +++ b/crates/papyrus_rpc/src/v0_7/transaction_test.rs @@ -18,6 +18,7 @@ use starknet_api::transaction::{ Transaction, TransactionSignature, TransactionVersion, + ValidResourceBounds, }; use starknet_api::{calldata, contract_address, felt, patricia_key}; use starknet_client::writer::objects::transaction as client_transaction; @@ -31,7 +32,6 @@ use super::{ InvokeTransactionV0, InvokeTransactionV1, InvokeTransactionV3, - ResourceBoundsMapping, TransactionVersion0, TransactionVersion1, TransactionVersion3, @@ -83,7 +83,7 @@ auto_impl_get_test_instance! { pub contract_address_salt: ContractAddressSalt, pub constructor_calldata: Calldata, pub version: TransactionVersion3, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub nonce_data_availability_mode: DataAvailabilityMode, @@ -116,7 +116,7 @@ auto_impl_get_test_instance! { pub version: TransactionVersion3, pub signature: TransactionSignature, pub nonce: Nonce, - pub resource_bounds: ResourceBoundsMapping, + pub resource_bounds: ValidResourceBounds, pub tip: Tip, pub paymaster_data: PaymasterData, pub account_deployment_data: AccountDeploymentData, diff --git a/crates/starknet_api/src/transaction.rs b/crates/starknet_api/src/transaction.rs index f729b70533d..e563bb40d51 100644 --- a/crates/starknet_api/src/transaction.rs +++ b/crates/starknet_api/src/transaction.rs @@ -871,8 +871,10 @@ impl From for Felt { )] pub enum Resource { #[serde(rename = "L1_GAS")] + #[serde(alias = "l1_gas")] // Backwards compatibility. L1Gas, #[serde(rename = "L2_GAS")] + #[serde(alias = "l2_gas")] // Backwards compatibility. L2Gas, #[serde(rename = "L1_DATA_GAS")] L1DataGas,