diff --git a/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs b/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs index aea1e9b9c1..d50e1bd881 100644 Binary files a/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs and b/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs differ diff --git a/crates/core/component/shielded-pool/src/ics20_withdrawal.rs b/crates/core/component/shielded-pool/src/ics20_withdrawal.rs index 1c7941f13f..e548b471fb 100644 --- a/crates/core/component/shielded-pool/src/ics20_withdrawal.rs +++ b/crates/core/component/shielded-pool/src/ics20_withdrawal.rs @@ -144,6 +144,7 @@ impl From for pb::FungibleTokenPacketData { denom: w.denom.to_string(), receiver: w.destination_chain_address, sender: w.return_address.to_string(), + memo: "".to_string(), } } } diff --git a/crates/proto/src/gen/penumbra.core.component.ibc.v1.rs b/crates/proto/src/gen/penumbra.core.component.ibc.v1.rs index 0a554e8ceb..6b2c8ca9c4 100644 --- a/crates/proto/src/gen/penumbra.core.component.ibc.v1.rs +++ b/crates/proto/src/gen/penumbra.core.component.ibc.v1.rs @@ -29,6 +29,9 @@ pub struct FungibleTokenPacketData { /// the recipient address on the destination chain #[prost(string, tag = "4")] pub receiver: ::prost::alloc::string::String, + /// optional memo + #[prost(string, tag = "5")] + pub memo: ::prost::alloc::string::String, } impl ::prost::Name for FungibleTokenPacketData { const NAME: &'static str = "FungibleTokenPacketData"; diff --git a/crates/proto/src/gen/penumbra.core.component.ibc.v1.serde.rs b/crates/proto/src/gen/penumbra.core.component.ibc.v1.serde.rs index 5dc907c6f3..a12442b052 100644 --- a/crates/proto/src/gen/penumbra.core.component.ibc.v1.serde.rs +++ b/crates/proto/src/gen/penumbra.core.component.ibc.v1.serde.rs @@ -558,6 +558,9 @@ impl serde::Serialize for FungibleTokenPacketData { if !self.receiver.is_empty() { len += 1; } + if !self.memo.is_empty() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.core.component.ibc.v1.FungibleTokenPacketData", len)?; if !self.denom.is_empty() { struct_ser.serialize_field("denom", &self.denom)?; @@ -571,6 +574,9 @@ impl serde::Serialize for FungibleTokenPacketData { if !self.receiver.is_empty() { struct_ser.serialize_field("receiver", &self.receiver)?; } + if !self.memo.is_empty() { + struct_ser.serialize_field("memo", &self.memo)?; + } struct_ser.end() } } @@ -585,6 +591,7 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData { "amount", "sender", "receiver", + "memo", ]; #[allow(clippy::enum_variant_names)] @@ -593,6 +600,7 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData { Amount, Sender, Receiver, + Memo, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -619,6 +627,7 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData { "amount" => Ok(GeneratedField::Amount), "sender" => Ok(GeneratedField::Sender), "receiver" => Ok(GeneratedField::Receiver), + "memo" => Ok(GeneratedField::Memo), _ => Ok(GeneratedField::__SkipField__), } } @@ -642,6 +651,7 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData { let mut amount__ = None; let mut sender__ = None; let mut receiver__ = None; + let mut memo__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::Denom => { @@ -668,6 +678,12 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData { } receiver__ = Some(map_.next_value()?); } + GeneratedField::Memo => { + if memo__.is_some() { + return Err(serde::de::Error::duplicate_field("memo")); + } + memo__ = Some(map_.next_value()?); + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -678,6 +694,7 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData { amount: amount__.unwrap_or_default(), sender: sender__.unwrap_or_default(), receiver: receiver__.unwrap_or_default(), + memo: memo__.unwrap_or_default(), }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index e6976b5326..35cbd9de60 100644 Binary files a/crates/proto/src/gen/proto_descriptor.bin.no_lfs and b/crates/proto/src/gen/proto_descriptor.bin.no_lfs differ