From e970d5825a249ddb43f0ceecc110cad6f10a6c9d Mon Sep 17 00:00:00 2001 From: Gabe Rodriguez Date: Tue, 27 Aug 2024 17:27:27 +0200 Subject: [PATCH] Add position to OwnedPositionIdsResponse --- crates/bin/pcli/src/command/tx.rs | 10 +++--- .../src/gen/proto_descriptor.bin.no_lfs | Bin 102002 -> 82425 bytes crates/proto/src/gen/penumbra.view.v1.rs | 4 +++ .../proto/src/gen/penumbra.view.v1.serde.rs | 17 ++++++++++ .../proto/src/gen/proto_descriptor.bin.no_lfs | Bin 549864 -> 530186 bytes crates/view/src/client.rs | 18 ++++++---- crates/view/src/service.rs | 9 ++--- crates/view/src/storage.rs | 32 +++++++++++++++--- proto/penumbra/penumbra/view/v1/view.proto | 1 + 9 files changed, 70 insertions(+), 21 deletions(-) diff --git a/crates/bin/pcli/src/command/tx.rs b/crates/bin/pcli/src/command/tx.rs index 90c49d523d..58e16aad47 100644 --- a/crates/bin/pcli/src/command/tx.rs +++ b/crates/bin/pcli/src/command/tx.rs @@ -1177,9 +1177,9 @@ impl TxCmd { .set_gas_prices(gas_prices) .set_fee_tier((*fee_tier).into()); - for position_id in positions_to_close_now { + for (id, _) in positions_to_close_now { // Close the position - planner.position_close(*position_id); + planner.position_close(*id); } let final_plan = planner @@ -1229,13 +1229,13 @@ impl TxCmd { .set_gas_prices(gas_prices) .set_fee_tier((*fee_tier).into()); - for position_id in positions_to_withdraw_now { + for (id, _) in positions_to_withdraw_now { // Withdraw the position // Fetch the information regarding the position from the view service. let position = client .liquidity_position_by_id(LiquidityPositionByIdRequest { - position_id: Some((*position_id).into()), + position_id: Some((*id).into()), }) .await? .into_inner(); @@ -1254,7 +1254,7 @@ impl TxCmd { .pair .expect("missing trading function pair"); planner.position_withdraw( - *position_id, + *id, reserves.try_into().expect("invalid reserves"), pair.try_into().expect("invalid pair"), ); diff --git a/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs b/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs index f41da7426e0409c58117d4e9d6a186a1632aff36..09181ca63e0d92d8142235c3003f76694fd27e4c 100644 GIT binary patch delta 15253 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, + #[prost(message, optional, tag = "2")] + pub position: ::core::option::Option< + super::super::core::component::dex::v1::Position, + >, } impl ::prost::Name for OwnedPositionIdsResponse { const NAME: &'static str = "OwnedPositionIdsResponse"; diff --git a/crates/proto/src/gen/penumbra.view.v1.serde.rs b/crates/proto/src/gen/penumbra.view.v1.serde.rs index 140a24f431..8349f6bfcf 100644 --- a/crates/proto/src/gen/penumbra.view.v1.serde.rs +++ b/crates/proto/src/gen/penumbra.view.v1.serde.rs @@ -4307,10 +4307,16 @@ impl serde::Serialize for OwnedPositionIdsResponse { if self.position_id.is_some() { len += 1; } + if self.position.is_some() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.view.v1.OwnedPositionIdsResponse", len)?; if let Some(v) = self.position_id.as_ref() { struct_ser.serialize_field("positionId", v)?; } + if let Some(v) = self.position.as_ref() { + struct_ser.serialize_field("position", v)?; + } struct_ser.end() } } @@ -4323,11 +4329,13 @@ impl<'de> serde::Deserialize<'de> for OwnedPositionIdsResponse { const FIELDS: &[&str] = &[ "position_id", "positionId", + "position", ]; #[allow(clippy::enum_variant_names)] enum GeneratedField { PositionId, + Position, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -4351,6 +4359,7 @@ impl<'de> serde::Deserialize<'de> for OwnedPositionIdsResponse { { match value { "positionId" | "position_id" => Ok(GeneratedField::PositionId), + "position" => Ok(GeneratedField::Position), _ => Ok(GeneratedField::__SkipField__), } } @@ -4371,6 +4380,7 @@ impl<'de> serde::Deserialize<'de> for OwnedPositionIdsResponse { V: serde::de::MapAccess<'de>, { let mut position_id__ = None; + let mut position__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::PositionId => { @@ -4379,6 +4389,12 @@ impl<'de> serde::Deserialize<'de> for OwnedPositionIdsResponse { } position_id__ = map_.next_value()?; } + GeneratedField::Position => { + if position__.is_some() { + return Err(serde::de::Error::duplicate_field("position")); + } + position__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -4386,6 +4402,7 @@ impl<'de> serde::Deserialize<'de> for OwnedPositionIdsResponse { } Ok(OwnedPositionIdsResponse { position_id: position_id__, + position: position__, }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index 049d2776782e15931731ee25bc163b11d42ee9ca..dfc65a94acaa5252efc116d352be9a1d2f6aa07a 100644 GIT binary patch delta 17777 zcmb7s37AyHwSV7pm+rYeGxXdUwqcoOV1OBh)s0OM1QA?FaLIGGnQ558VP>430r8R7 zZXintfdPu(g29EwrxHhOi9Yq|dk;ulBGIViy%^C%AOenx3TSx0Q&qQbCwc#T-`_9# z^{=YV@0>bys_InLogCWJZ^e^w%YDDv6+hWwmagghO5W#HZrHQ?h93C&;aaEPI5*Fw zNQGyXhsL=P*NAv#|Imf9Fe-nxzn7iK1 zZ^BJvxb6SpW;zx}yHePV&$wdd0Q+B@r4NAh`LL*Y(LrC1;F}{1= zh31}-Zu{-2czfNo@8GemWmhAG~j@w1_ z`=c=+^WUEsC8oL9?JDA*8eK)+pN(t9X`Avh6OS5$%!=<{HGS69DKYXqxA4+Qlc!#K z)2ylAn>y)Al$qr+H(>OspKpVO)|T_GL{=+i%r*vUw>oFa0bQ(m48HH{7K_OF0B>b zX`_tRTA8y>8yDz?e?DW>^{dK@916$oz&|v@idZqbJmuy~gJw3j);Be##LsM+LoXZR zE~2Xy*Xt&Q=|MyM)}*mql8oMOxP@0J>qL=5!(}P`fkd7|I~ZJ(nHr{Vjm!-(sx;^= zLo6$z8e_gVT14|{^1p~%qh>czT0-+mUMG(0L7|Od!`;!vHS!T^nT;j%csN}d>Y+n! zNN9?TI812%sp7CY2xI=K3WtV9`eDpJRpGGEd9o0T1picp!x6f?av+NNrz#wQnZt#c zL?gOpXVKZA-fkMDd7gQ;c(*s*VU7-s71#Emc~^{%aHy(v!5l+_-F&qQSRRn;BL^tj z*GHIlW6Jvb$OIZV$Q_PJgt$CEbglSBe;QtRex#Q>2E+yy9CL#Bx<8E@JwY>~%tm3f zNOAyyae~*)M_`=Lv(&AU(x{p!<_)0g(G#=M2Barur7<1MiC#}FZ9sZr?>_F?Qkpz- zvUpoOXqt0Ew|EK3pr$z{

G#Chl{9HqJkeMi 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 b3?H3bxZ{H|=gO7@E~TaWd$fjsef)m`1P2&$ delta 37437 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 TSXN^;*_`U=o;2Kk^8Nn@POw>r diff --git a/crates/view/src/client.rs b/crates/view/src/client.rs index be7edbccd8..d9621f91a6 100644 --- a/crates/view/src/client.rs +++ b/crates/view/src/client.rs @@ -185,7 +185,7 @@ pub trait ViewClient { &mut self, position_state: Option, trading_pair: Option, - ) -> Pin>> + Send + 'static>>; + ) -> Pin>> + Send + 'static>>; /// Generates a full perspective for a selected transaction using a full viewing key fn transaction_info_by_hash( @@ -697,7 +697,7 @@ where &mut self, position_state: Option, trading_pair: Option, - ) -> Pin>> + Send + 'static>> { + ) -> Pin>> + Send + 'static>> { // should the return be streamed here? none of the other viewclient responses are, probably fine for now // but might be an issue eventually let mut self2 = self.clone(); @@ -717,11 +717,15 @@ where let position_ids = pb_position_ids .into_iter() .map(|p| { - position::Id::try_from(p.position_id.ok_or_else(|| { - anyhow::anyhow!("empty OwnedPositionsIdsResponse message") - })?) + let id = position::Id::try_from(p.position_id.ok_or_else(|| { + anyhow::anyhow!("OwnedPositionsIdsResponse missing position_id") + })?)?; + let position = Position::try_from(p.position.ok_or_else(|| { + anyhow::anyhow!("OwnedPositionsIdsResponse missing position") + })?)?; + Ok((id, position)) }) - .collect::>>()?; + .collect::>>()?; Ok(position_ids) } @@ -1048,6 +1052,6 @@ where Ok(resp) } - .boxed() + .boxed() } } diff --git a/crates/view/src/service.rs b/crates/view/src/service.rs index e0dccbeeff..fcaad6a2b3 100644 --- a/crates/view/src/service.rs +++ b/crates/view/src/service.rs @@ -1725,16 +1725,17 @@ impl ViewService for ViewServer { .map_err(|e: anyhow::Error| e.context("could not decode trading pair")) .map_err(|e| tonic::Status::invalid_argument(format!("{:#}", e)))?; - let ids = self + let positions = self .storage - .owned_position_ids(position_state, trading_pair) + .owned_positions(position_state, trading_pair) .await - .map_err(|e| tonic::Status::unavailable(format!("error getting position ids: {e}")))?; + .map_err(|e| tonic::Status::unavailable(format!("error getting positions: {e}")))?; let stream = try_stream! { - for id in ids { + for (id, position) in positions { yield pb::OwnedPositionIdsResponse{ position_id: Some(id.into()), + position: Some(position.into()) } } }; diff --git a/crates/view/src/storage.rs b/crates/view/src/storage.rs index 8da8a3d74c..2718bcaaa1 100644 --- a/crates/view/src/storage.rs +++ b/crates/view/src/storage.rs @@ -21,6 +21,7 @@ use url::Url; use penumbra_app::params::AppParameters; use penumbra_asset::{asset, asset::Id, asset::Metadata, Value}; +use penumbra_dex::lp::{BareTradingFunction, TradingFunction}; use penumbra_dex::{ lp::position::{self, Position, State}, TradingPair, @@ -1097,7 +1098,7 @@ impl Storage { tx.commit()?; Ok::<(), anyhow::Error>(()) - }) + }) .await??; Ok(()) @@ -1679,11 +1680,11 @@ impl Storage { Ok(()) } - pub async fn owned_position_ids( + pub async fn owned_positions( &self, position_state: Option, trading_pair: Option, - ) -> anyhow::Result> { + ) -> anyhow::Result> { let pool = self.pool.clone(); let state_clause = match position_state { @@ -1714,8 +1715,29 @@ impl Storage { pool.get()? .prepare_cached(&q)? .query_and_then([], |row| { - let position_id: Vec = row.get("position_id")?; - Ok(position::Id(position_id.as_slice().try_into()?)) + let position_id_bytes: Vec = row.get("position_id")?; + let id = position::Id(position_id_bytes.as_slice().try_into()?); + + let position_state_str: String = row.get("position_state")?; + let trading_pair_str: String = row.get("trading_pair")?; + + // TODO: DB currently does not save full position. Hence, default backups are used below. + // We should save the full position in the db to be able to provide the full correct data. + let position = Position { + state: State::from_str(&position_state_str)?, + phi: TradingFunction { + component: BareTradingFunction { + fee: 0, + p: Default::default(), + q: Default::default(), + }, + pair: TradingPair::from_str(&trading_pair_str)?, + }, + reserves: Default::default(), + nonce: [0u8; 32], + close_on_fill: false, + }; + Ok((id, position)) })? .collect() }) diff --git a/proto/penumbra/penumbra/view/v1/view.proto b/proto/penumbra/penumbra/view/v1/view.proto index 3a11c35f03..dde370e57f 100644 --- a/proto/penumbra/penumbra/view/v1/view.proto +++ b/proto/penumbra/penumbra/view/v1/view.proto @@ -689,6 +689,7 @@ message OwnedPositionIdsRequest { message OwnedPositionIdsResponse { core.component.dex.v1.PositionId position_id = 1; + core.component.dex.v1.Position position = 2; } // Requests information on an asset by asset id