#[non_exhaustive]pub enum ChunkQuoteResponse {
Success {
quote: Vec<u8>,
already_stored: bool,
commitment: Option<Vec<u8>>,
},
Error(ProtocolError),
}Expand description
Response with a storage quote.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Success
Quote generated successfully.
When already_stored is true the node already holds this chunk and no
payment is required — the client should skip the pay-then-PUT cycle for
this address. The quote is still included for informational purposes.
Fields
commitment: Option<Vec<u8>>ADR-0004: the serialized signed storage commitment the quote’s price
was derived from, so the client can verify the binding before paying
(“the commitment arrived with the quote”) and forward it as a sidecar
in the PUT bundle. None for a baseline quote (no commitment to
pin), or from a node that has not yet rotated a commitment. Opaque
bytes: ant-protocol stays agnostic of ant-node’s commitment type;
the client resolves it only to match the quote’s commitment_pin.
NOTE: this enum is encoded with postcard (see ChunkMessage::encode),
which is non-self-describing — #[serde(default)] does NOT make an
old-format Success (without this field) decode against new code, and
vice versa. ADR-0004 is a HARD CUTOVER: the whole fleet and clients
upgrade together, so old/new ChunkQuoteResponse never interoperate.
The attribute only keeps Default-based construction ergonomic; it is
not a wire-compat guarantee. (Contrast PaymentQuote/PaymentProof,
which ARE rmp-encoded, where tail serde(default) is decode-compatible.)
Error(ProtocolError)
Quote generation failed.
Trait Implementations§
Source§impl Clone for ChunkQuoteResponse
impl Clone for ChunkQuoteResponse
Source§fn clone(&self) -> ChunkQuoteResponse
fn clone(&self) -> ChunkQuoteResponse
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ChunkQuoteResponse
impl Debug for ChunkQuoteResponse
Source§impl<'de> Deserialize<'de> for ChunkQuoteResponse
impl<'de> Deserialize<'de> for ChunkQuoteResponse
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for ChunkQuoteResponse
impl RefUnwindSafe for ChunkQuoteResponse
impl Send for ChunkQuoteResponse
impl Sync for ChunkQuoteResponse
impl Unpin for ChunkQuoteResponse
impl UnsafeUnpin for ChunkQuoteResponse
impl UnwindSafe for ChunkQuoteResponse
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<'de, T> BorrowedRpcObject<'de> for T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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