mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-08-25 06:41:13 +00:00
fix: refactor of sequencer to return errors immediately
This commit is contained in:
@@ -35,6 +35,9 @@ path = "../utxo"
|
||||
[dependencies.zkvm]
|
||||
path = "../zkvm"
|
||||
|
||||
[dependencies.rpc_primitives]
|
||||
path = "../rpc_primitives"
|
||||
|
||||
[dependencies.secp256k1-zkp]
|
||||
workspace = true
|
||||
features = ["std", "rand-std", "rand", "serde", "global-context"]
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use rpc_primitives::errors::RpcError;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use storage::{block::Block, transaction::Transaction};
|
||||
|
||||
@@ -74,3 +75,10 @@ pub struct SequencerRpcResponse {
|
||||
pub result: serde_json::Value,
|
||||
pub id: u64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct SequencerRpcError {
|
||||
pub jsonrpc: String,
|
||||
pub error: RpcError,
|
||||
pub id: u64,
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ use anyhow::Result;
|
||||
use json::{
|
||||
GetBlockDataRequest, GetBlockDataResponse, GetGenesisIdRequest, GetGenesisIdResponse,
|
||||
RegisterAccountRequest, RegisterAccountResponse, SendTxRequest, SendTxResponse,
|
||||
SequencerRpcRequest, SequencerRpcResponse,
|
||||
SequencerRpcError, SequencerRpcRequest, SequencerRpcResponse,
|
||||
};
|
||||
use k256::elliptic_curve::group::GroupEncoding;
|
||||
use reqwest::Client;
|
||||
@@ -26,6 +26,8 @@ pub enum SequencerClientError {
|
||||
HTTPError(reqwest::Error),
|
||||
#[error("Serde error")]
|
||||
SerdeError(serde_json::Error),
|
||||
#[error("Internal error")]
|
||||
InternalError(SequencerRpcError),
|
||||
}
|
||||
|
||||
impl From<reqwest::Error> for SequencerClientError {
|
||||
@@ -40,6 +42,12 @@ impl From<serde_json::Error> for SequencerClientError {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<SequencerRpcError> for SequencerClientError {
|
||||
fn from(value: SequencerRpcError) -> Self {
|
||||
SequencerClientError::InternalError(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl SequencerClient {
|
||||
pub fn new(config: NodeConfig) -> Result<Self> {
|
||||
Ok(Self {
|
||||
@@ -62,9 +70,16 @@ impl SequencerClient {
|
||||
|
||||
let call_res = call_builder.json(&request).send().await?;
|
||||
|
||||
let response = call_res.json::<SequencerRpcResponse>().await?;
|
||||
let response_vall = call_res.json::<Value>().await?;
|
||||
|
||||
Ok(response.result)
|
||||
if let Ok(response) = serde_json::from_value::<SequencerRpcResponse>(response_vall.clone())
|
||||
{
|
||||
Ok(response.result)
|
||||
} else {
|
||||
let err_resp = serde_json::from_value::<SequencerRpcError>(response_vall)?;
|
||||
|
||||
Err(err_resp.into())
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get_block(
|
||||
|
||||
Reference in New Issue
Block a user