Skip to main content

TxCache

Struct TxCache 

Source
pub struct TxCache { /* private fields */ }
Expand description

Signet’s Transaction Cache helper. Forwards GET and POST requests to a tx cache URL.

Implementations§

Source§

impl TxCache

Source

pub const fn new_with_client(url: Url, client: Client) -> Self

Create a new cache with the given URL and client.

Source

pub fn new(url: Url) -> Self

Instantiate a new cache with the given URL and a new reqwest client.

Source

pub fn new_from_string(url: &str) -> Result<Self>

Create a new cache given a string URL.

Source

pub fn parmigiana() -> Self

Connect to the transaction cache with the Parmigiana URL.

Source

pub fn parmigiana_with_client(client: Client) -> Self

Create a new cache with the Parmigiana URL and a specific reqwest::Client.

Source

pub fn pecorino() -> Self

👎Deprecated:

Pecorino is being deprecated in favor of Parmigiana

Connect to the transaction cache with the Pecorino URL.

Source

pub fn pecorino_with_client(client: Client) -> Self

👎Deprecated:

Pecorino is being deprecated in favor of Parmigiana

Connect to the transaction cache with the Pecorino URL and a specific reqwest::Client.

Source

pub const fn client(&self) -> &Client

Get the client used to send requests

Source

pub const fn url(&self) -> &Url

Get the URL of the transaction cache.

Source

pub async fn forward_raw_transaction( &self, tx: TxEnvelope, ) -> Result<TransactionResponse>

Forward a raw transaction to the transaction cache.

This method submits a signed transaction envelope to the cache for inclusion in a future block. The transaction will be validated and stored, returning a response containing its cache identifier.

§Arguments
  • tx - A signed TxEnvelope containing the transaction to forward.
§Returns

A TransactionResponse containing the transaction’s cache identifier on success.

§Errors

Returns an error if the request fails or the transaction cache rejects the transaction.

Source

pub async fn forward_bundle( &self, bundle: SignetEthBundle, ) -> Result<BundleResponse>

Forward a bundle to the transaction cache.

This method submits a signed bundle to the cache for inclusion in a future block. Bundles allow multiple transactions to be submitted atomically with ordering guarantees.

§Arguments
§Returns

A BundleResponse containing the bundle’s cache identifier (UUID) on success.

§Errors

Returns an error if the request fails or the transaction cache rejects the bundle.

Source

pub async fn forward_order(&self, order: SignedOrder) -> Result<()>

Forward a signed order to the transaction cache.

This method submits a signed order to the cache. Orders represent user intents that can be filled by solvers or market makers.

§Arguments
  • order - A SignedOrder containing the order to forward.
§Errors

Returns an error if the request fails or the transaction cache rejects the order.

Source

pub async fn get_transactions( &self, query: Option<TxKey>, ) -> Result<CacheResponse<TransactionList>>

Get transactions from the transaction cache.

Retrieves transactions from the cache, optionally filtered by a query key for pagination. When no query is provided, returns the first page of transactions.

§Arguments
  • query - An optional TxKey for pagination. Use None to get the first page, or pass the key from a previous response to get subsequent pages.
§Returns

A CacheResponse containing a TransactionList with the transactions and pagination information. If more transactions are available, the response will contain a key to fetch the next page.

§Errors

Returns an error if the request fails or the response cannot be parsed.

Source

pub async fn get_orders( &self, query: Option<OrderKey>, ) -> Result<CacheResponse<OrderList>>

Get signed orders from the transaction cache.

Retrieves signed orders from the cache, optionally filtered by a query key for pagination. When no query is provided, returns the first page of orders.

§Arguments
  • query - An optional OrderKey for pagination. Use None to get the first page, or pass the key from a previous response to get subsequent pages.
§Returns

A CacheResponse containing an OrderList with the orders and pagination information. If more orders are available, the response will contain a key to fetch the next page.

§Errors

Returns an error if the request fails or the response cannot be parsed.

Source

pub async fn update_bundle( &self, bundle_id: &str, bundle: SignetEthBundle, ) -> Result<BundleResponse>

Update an existing bundle in the transaction cache.

This method sends a PUT request to update a bundle that already exists in the cache. The bundle is identified by its UUID and the entire bundle content is replaced with the provided data.

§Arguments
  • bundle_id - The UUID of the bundle to update.
  • bundle - The updated SignetEthBundle to store.
§Returns

A BundleResponse containing the bundle’s UUID on success.

§Errors

Returns TxCacheError::NotFound if the bundle does not exist. Returns an error if the request fails or the response cannot be parsed.

§Example
use signet_tx_cache::TxCache;
use signet_bundle::SignetEthBundle;

async fn example() -> Result<(), signet_tx_cache::TxCacheError> {
    let cache = TxCache::parmigiana();
    let bundle_id = "550e8400-e29b-41d4-a716-446655440000";
    // Create bundle from your transaction data
    let bundle: SignetEthBundle = todo!();

    let response = cache.update_bundle(bundle_id, bundle).await?;
    println!("Updated bundle: {}", response.id);
    Ok(())
}
Source

pub fn stream_transactions( &self, ) -> impl Stream<Item = Result<TxEnvelope>> + Send + '_

Stream all transactions from the transaction cache, automatically paginating through all available pages.

Returns a Stream that yields each TxEnvelope individually, fetching subsequent pages as needed. The stream ends when no more pages are available or on the first error (which is yielded before terminating).

Source

pub fn stream_orders( &self, ) -> impl Stream<Item = Result<SignedOrder>> + Send + '_

Stream all signed orders from the transaction cache, automatically paginating through all available pages.

Returns a Stream that yields each SignedOrder individually, fetching subsequent pages as needed. The stream ends when no more pages are available or on the first error (which is yielded before terminating).

Source

pub async fn update_order( &self, order_id: &str, order: SignedOrder, ) -> Result<OrderResponse>

Update an existing order in the transaction cache.

This method sends a PUT request to update an order that already exists in the cache. The order is identified by its ID and the entire order content is replaced with the provided data.

§Arguments
  • order_id - The ID of the order to update (hex-encoded B256).
  • order - The updated SignedOrder to store.
§Returns

An OrderResponse containing the order’s ID on success.

§Errors

Returns TxCacheError::NotFound if the order does not exist. Returns an error if the request fails or the response cannot be parsed.

§Example
use signet_tx_cache::TxCache;
use signet_types::SignedOrder;

let cache = TxCache::parmigiana();
let order_id = "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";

let response = cache.update_order(order_id, order).await?;
println!("Updated order: {:?}", response.id);

Trait Implementations§

Source§

impl Clone for TxCache

Source§

fn clone(&self) -> TxCache

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TxCache

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryClone for T
where T: Clone,

Source§

fn try_clone(&self) -> Result<T, Error>

Clones self, possibly returning an error.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more