Skip to content

Commit

Permalink
ibc: populate ics20 withdrawal with memo field
Browse files Browse the repository at this point in the history
  • Loading branch information
conorsch committed Feb 12, 2024
1 parent e1f7fa9 commit 46fe8ad
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 0 deletions.
Binary file modified crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ impl From<Ics20Withdrawal> for pb::FungibleTokenPacketData {
denom: w.denom.to_string(),
receiver: w.destination_chain_address,
sender: w.return_address.to_string(),
memo: "".to_string(),
}
}
}
3 changes: 3 additions & 0 deletions crates/proto/src/gen/penumbra.core.component.ibc.v1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
17 changes: 17 additions & 0 deletions crates/proto/src/gen/penumbra.core.component.ibc.v1.serde.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)?;
Expand All @@ -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()
}
}
Expand All @@ -585,6 +591,7 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData {
"amount",
"sender",
"receiver",
"memo",
];

#[allow(clippy::enum_variant_names)]
Expand All @@ -593,6 +600,7 @@ impl<'de> serde::Deserialize<'de> for FungibleTokenPacketData {
Amount,
Sender,
Receiver,
Memo,
__SkipField__,
}
impl<'de> serde::Deserialize<'de> for GeneratedField {
Expand All @@ -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__),
}
}
Expand All @@ -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 => {
Expand All @@ -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::<serde::de::IgnoredAny>()?;
}
Expand All @@ -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(),
})
}
}
Expand Down
Binary file modified crates/proto/src/gen/proto_descriptor.bin.no_lfs
Binary file not shown.

0 comments on commit 46fe8ad

Please sign in to comment.