Skip to content

Commit

Permalink
refactor(gateway): remove query-only support from user transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
jbcaron committed Dec 20, 2024
1 parent ec9ea6e commit 3dd1a16
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 110 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Next release

- refactor(gateway): remove query-only support from user transactions
- fix(gateway): serialize tip as hex in UserTransaction
- fix: devnet accounts getting deployed in sequencer mode
- fix(rpc): fix BroadcastedDeclareTxn V3 in starknet-types-rpc
- fix: oracle need condition
Expand Down
10 changes: 10 additions & 0 deletions crates/client/rpc/src/errors.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::utils::display_internal_server_error;
use mc_db::MadaraStorageError;
use mp_gateway::error::{StarknetError, StarknetErrorCode};
use mp_gateway::user_transaction::UserTransactionConversionError;
use serde::Serialize;
use serde_json::json;
use starknet_api::StarknetApiError;
Expand Down Expand Up @@ -228,6 +229,15 @@ impl From<StarknetApiError> for StarknetRpcApiError {
}
}

impl From<UserTransactionConversionError> for StarknetRpcApiError {
fn from(err: UserTransactionConversionError) -> Self {
match err {
UserTransactionConversionError::ContractClassDecodeError(_) => StarknetRpcApiError::InvalidContractClass,
UserTransactionConversionError::UnsupportedQueryTransaction => StarknetRpcApiError::UnsupportedTxnVersion,
}
}
}

#[cfg_attr(test, derive(PartialEq, Eq))]
#[derive(Debug)]
pub enum StarknetWsApiError {
Expand Down
29 changes: 17 additions & 12 deletions crates/client/rpc/src/providers/forward_to_provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ impl AddTransactionProvider for ForwardToProvider {
) -> RpcResult<ClassAndTxnHash<Felt>> {
let sequencer_response = match self
.provider
.add_declare_transaction(
declare_transaction.try_into().map_err(|_| StarknetRpcApiError::InvalidContractClass)?,
)
.add_declare_transaction(declare_transaction.try_into().map_err(StarknetRpcApiError::from)?)
.await
{
Ok(response) => response,
Expand All @@ -53,14 +51,17 @@ impl AddTransactionProvider for ForwardToProvider {
&self,
deploy_account_transaction: BroadcastedDeployAccountTxn<Felt>,
) -> RpcResult<ContractAndTxnHash<Felt>> {
let sequencer_response =
match self.provider.add_deploy_account_transaction(deploy_account_transaction.into()).await {
Ok(response) => response,
Err(SequencerError::StarknetError(e)) => {
return Err(StarknetRpcApiError::from(e).into());
}
Err(e) => bail_internal_server_error!("Failed to add deploy account transaction to sequencer: {e}"),
};
let sequencer_response = match self
.provider
.add_deploy_account_transaction(deploy_account_transaction.try_into().map_err(StarknetRpcApiError::from)?)
.await
{
Ok(response) => response,
Err(SequencerError::StarknetError(e)) => {
return Err(StarknetRpcApiError::from(e).into());
}
Err(e) => bail_internal_server_error!("Failed to add deploy account transaction to sequencer: {e}"),
};

Ok(sequencer_response)
}
Expand All @@ -69,7 +70,11 @@ impl AddTransactionProvider for ForwardToProvider {
&self,
invoke_transaction: BroadcastedInvokeTxn<Felt>,
) -> RpcResult<AddInvokeTransactionResult<Felt>> {
let sequencer_response = match self.provider.add_invoke_transaction(invoke_transaction.into()).await {
let sequencer_response = match self
.provider
.add_invoke_transaction(invoke_transaction.try_into().map_err(StarknetRpcApiError::from)?)
.await
{
Ok(response) => response,
Err(SequencerError::StarknetError(e)) => {
return Err(StarknetRpcApiError::from(e).into());
Expand Down
Loading

0 comments on commit 3dd1a16

Please sign in to comment.