From cb555b1e54ab54f368bf39d533a8678e96ea0ea2 Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Mon, 12 Feb 2024 19:47:49 -0800 Subject: [PATCH] proto: add fields for crossreferencing swaps/swap claims cc @grod220 @turbocrime --- .../src/gen/proto_descriptor.bin.no_lfs | Bin 95074 -> 81319 bytes crates/core/component/dex/src/swap/view.rs | 2 + .../core/component/dex/src/swap_claim/view.rs | 2 + .../src/gen/penumbra.core.component.dex.v1.rs | 24 ++++++++++++ .../penumbra.core.component.dex.v1.serde.rs | 36 ++++++++++++++++++ .../proto/src/gen/proto_descriptor.bin.no_lfs | Bin 357931 -> 344948 bytes .../penumbra/core/component/dex/v1/dex.proto | 19 +++++++++ 7 files changed, 83 insertions(+) diff --git a/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs b/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs index d50e1bd8818eb8b4d521b590c16703d42bad4e23..aea1e9b9c172697fe70b023165adfdd88442d114 100644 GIT binary patch delta 13921 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 UiRxdgND)cZsVLoW;n0Ks0tec5DgXcg delta 27601 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 QE-W2aH@NH3pMC!S0s4nhvH$=8 diff --git a/crates/core/component/dex/src/swap/view.rs b/crates/core/component/dex/src/swap/view.rs index 7b55e7184b..9248191d53 100644 --- a/crates/core/component/dex/src/swap/view.rs +++ b/crates/core/component/dex/src/swap/view.rs @@ -59,6 +59,8 @@ impl From for pb::SwapView { swap_view: Some(sv::SwapView::Visible(sv::Visible { swap: Some(swap.into()), swap_plaintext: Some(swap_plaintext.into()), + // Swap claim crossreferencing is not yet supported in the Rust stack. + claim_tx: None, })), }, SwapView::Opaque { swap } => Self { diff --git a/crates/core/component/dex/src/swap_claim/view.rs b/crates/core/component/dex/src/swap_claim/view.rs index 2fe7d20eaf..0da5ef8b60 100644 --- a/crates/core/component/dex/src/swap_claim/view.rs +++ b/crates/core/component/dex/src/swap_claim/view.rs @@ -67,6 +67,8 @@ impl From for pbd::SwapClaimView { swap_claim: Some(swap_claim.into()), output_1: Some(output_1.into()), output_2: Some(output_2.into()), + // Swap claim crossreferencing is not yet supported in the Rust stack. + swap_tx: None, })), }, SwapClaimView::Opaque { swap_claim } => Self { diff --git a/crates/proto/src/gen/penumbra.core.component.dex.v1.rs b/crates/proto/src/gen/penumbra.core.component.dex.v1.rs index d0f24acd12..3fc7302b34 100644 --- a/crates/proto/src/gen/penumbra.core.component.dex.v1.rs +++ b/crates/proto/src/gen/penumbra.core.component.dex.v1.rs @@ -240,10 +240,25 @@ pub mod swap_view { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Visible { + /// The underlying Swap action being viewed. #[prost(message, optional, tag = "1")] pub swap: ::core::option::Option, + /// The plaintext of the encrypted swap. #[prost(message, optional, tag = "3")] pub swap_plaintext: ::core::option::Option, + /// Optionally, a transaction hash for the transaction that claimed this + /// swap. + /// + /// Presence of this field signals that the swap outputs have been claimed + /// and that the claim transaction is known to the view server. Absence of + /// this field does not indicate anything about the state of the swap. + /// + /// This field allows frontends to more easily crossreference the sequence of + /// Swap/SwapClaim actions. + #[prost(message, optional, tag = "4")] + pub claim_tx: ::core::option::Option< + super::super::super::super::txhash::v1::TransactionId, + >, } impl ::prost::Name for Visible { const NAME: &'static str = "Visible"; @@ -306,6 +321,15 @@ pub mod swap_claim_view { pub output_2: ::core::option::Option< super::super::super::shielded_pool::v1::NoteView, >, + /// Optionally, a transaction hash for the transaction that created the swap + /// this action claims. + /// + /// This field allows frontends to more easily crossreference the sequence of + /// Swap/SwapClaim actions. + #[prost(message, optional, tag = "4")] + pub swap_tx: ::core::option::Option< + super::super::super::super::txhash::v1::TransactionId, + >, } impl ::prost::Name for Visible { const NAME: &'static str = "Visible"; diff --git a/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs b/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs index cee94400ab..6b025bbf3f 100644 --- a/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs +++ b/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs @@ -6106,6 +6106,9 @@ impl serde::Serialize for swap_claim_view::Visible { if self.output_2.is_some() { len += 1; } + if self.swap_tx.is_some() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.core.component.dex.v1.SwapClaimView.Visible", len)?; if let Some(v) = self.swap_claim.as_ref() { struct_ser.serialize_field("swapClaim", v)?; @@ -6116,6 +6119,9 @@ impl serde::Serialize for swap_claim_view::Visible { if let Some(v) = self.output_2.as_ref() { struct_ser.serialize_field("output2", v)?; } + if let Some(v) = self.swap_tx.as_ref() { + struct_ser.serialize_field("swapTx", v)?; + } struct_ser.end() } } @@ -6132,6 +6138,8 @@ impl<'de> serde::Deserialize<'de> for swap_claim_view::Visible { "output1", "output_2", "output2", + "swap_tx", + "swapTx", ]; #[allow(clippy::enum_variant_names)] @@ -6139,6 +6147,7 @@ impl<'de> serde::Deserialize<'de> for swap_claim_view::Visible { SwapClaim, Output1, Output2, + SwapTx, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -6164,6 +6173,7 @@ impl<'de> serde::Deserialize<'de> for swap_claim_view::Visible { "swapClaim" | "swap_claim" => Ok(GeneratedField::SwapClaim), "output1" | "output_1" => Ok(GeneratedField::Output1), "output2" | "output_2" => Ok(GeneratedField::Output2), + "swapTx" | "swap_tx" => Ok(GeneratedField::SwapTx), _ => Ok(GeneratedField::__SkipField__), } } @@ -6186,6 +6196,7 @@ impl<'de> serde::Deserialize<'de> for swap_claim_view::Visible { let mut swap_claim__ = None; let mut output_1__ = None; let mut output_2__ = None; + let mut swap_tx__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::SwapClaim => { @@ -6206,6 +6217,12 @@ impl<'de> serde::Deserialize<'de> for swap_claim_view::Visible { } output_2__ = map_.next_value()?; } + GeneratedField::SwapTx => { + if swap_tx__.is_some() { + return Err(serde::de::Error::duplicate_field("swapTx")); + } + swap_tx__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -6215,6 +6232,7 @@ impl<'de> serde::Deserialize<'de> for swap_claim_view::Visible { swap_claim: swap_claim__, output_1: output_1__, output_2: output_2__, + swap_tx: swap_tx__, }) } } @@ -7614,6 +7632,9 @@ impl serde::Serialize for swap_view::Visible { if self.swap_plaintext.is_some() { len += 1; } + if self.claim_tx.is_some() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.core.component.dex.v1.SwapView.Visible", len)?; if let Some(v) = self.swap.as_ref() { struct_ser.serialize_field("swap", v)?; @@ -7621,6 +7642,9 @@ impl serde::Serialize for swap_view::Visible { if let Some(v) = self.swap_plaintext.as_ref() { struct_ser.serialize_field("swapPlaintext", v)?; } + if let Some(v) = self.claim_tx.as_ref() { + struct_ser.serialize_field("claimTx", v)?; + } struct_ser.end() } } @@ -7634,12 +7658,15 @@ impl<'de> serde::Deserialize<'de> for swap_view::Visible { "swap", "swap_plaintext", "swapPlaintext", + "claim_tx", + "claimTx", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { Swap, SwapPlaintext, + ClaimTx, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -7664,6 +7691,7 @@ impl<'de> serde::Deserialize<'de> for swap_view::Visible { match value { "swap" => Ok(GeneratedField::Swap), "swapPlaintext" | "swap_plaintext" => Ok(GeneratedField::SwapPlaintext), + "claimTx" | "claim_tx" => Ok(GeneratedField::ClaimTx), _ => Ok(GeneratedField::__SkipField__), } } @@ -7685,6 +7713,7 @@ impl<'de> serde::Deserialize<'de> for swap_view::Visible { { let mut swap__ = None; let mut swap_plaintext__ = None; + let mut claim_tx__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::Swap => { @@ -7699,6 +7728,12 @@ impl<'de> serde::Deserialize<'de> for swap_view::Visible { } swap_plaintext__ = map_.next_value()?; } + GeneratedField::ClaimTx => { + if claim_tx__.is_some() { + return Err(serde::de::Error::duplicate_field("claimTx")); + } + claim_tx__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -7707,6 +7742,7 @@ impl<'de> serde::Deserialize<'de> for swap_view::Visible { Ok(swap_view::Visible { swap: swap__, swap_plaintext: swap_plaintext__, + claim_tx: claim_tx__, }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index 35cbd9de607e088937d00e25474030bdf0d3c8d2..9fedf447a9a2793d9b047c9ae38fb57b9ce92eb5 100644 GIT binary patch delta 27297 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 delta 40177 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