Skip to main content

QuoteGenerator

Struct QuoteGenerator 

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

Quote generator for creating payment quotes.

Uses the node’s signing capabilities to sign quotes, which clients use to pay for storage on the Arbitrum network.

Implementations§

Source§

impl QuoteGenerator

Source

pub fn new( rewards_address: RewardsAddress, metrics_tracker: QuotingMetricsTracker, ) -> Self

Create a new quote generator without signing capability.

Call set_signer to enable quote signing.

§Arguments
  • rewards_address - The EVM address for receiving payments
  • metrics_tracker - Tracker for quoting metrics
Source

pub fn set_signer<F>(&mut self, pub_key: Vec<u8>, sign_fn: F)
where F: Fn(&[u8]) -> Vec<u8> + Send + Sync + 'static,

Set the signing function for quote generation.

§Arguments
  • pub_key - The node’s public key bytes
  • sign_fn - Function that signs bytes and returns signature
Source

pub fn can_sign(&self) -> bool

Check if the generator has signing capability.

Source

pub fn probe_signer(&self) -> Result<()>

Probe the signer with test data to verify it produces a non-empty signature.

§Errors

Returns an error if no signer is set or if signing produces an empty signature.

Source

pub fn create_quote( &self, content: XorName, data_size: usize, data_type: u32, ) -> Result<PaymentQuote>

Generate a payment quote for storing data.

§Arguments
  • content - The XorName of the content to store
  • data_size - Size of the data in bytes
  • data_type - Type index of the data (0 for chunks)
§Returns

A signed PaymentQuote that the client can use to pay on-chain.

§Errors

Returns an error if signing is not configured.

Source

pub fn rewards_address(&self) -> &RewardsAddress

Get the rewards address.

Source

pub fn current_metrics(&self) -> QuotingMetrics

Get current quoting metrics.

Source

pub fn record_payment(&self)

Record a payment received (delegates to metrics tracker).

Source

pub fn record_store(&self, data_type: u32)

Record data stored (delegates to metrics tracker).

Source

pub fn create_merkle_candidate_quote( &self, data_size: usize, data_type: u32, merkle_payment_timestamp: u64, ) -> Result<MerklePaymentCandidateNode>

Create a merkle candidate quote for batch payment using ML-DSA-65.

Returns a MerklePaymentCandidateNode constructed with the node’s ML-DSA-65 public key and signature. This uses the same post-quantum signing stack as regular payment quotes, rather than the ed25519 signing that the upstream ant-evm library assumes.

The pub_key field stores the raw ML-DSA-65 public key bytes, and signature stores the ML-DSA-65 signature over bytes_to_sign(). Clients verify these using verify_merkle_candidate_signature().

§Errors

Returns an error if signing is not configured.

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> 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<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, 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