From 4ed5e7b9c99f4c02608882fb3fc97cfc676e3107 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:13:15 -0400 Subject: [PATCH 01/12] proto(app): add auction params to app --- proto/penumbra/penumbra/core/app/v1/app.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/proto/penumbra/penumbra/core/app/v1/app.proto b/proto/penumbra/penumbra/core/app/v1/app.proto index be62b0b129..51b9b44c89 100644 --- a/proto/penumbra/penumbra/core/app/v1/app.proto +++ b/proto/penumbra/penumbra/core/app/v1/app.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package penumbra.core.app.v1; +import "penumbra/core/component/auction/v1alpha1/auction.proto"; import "penumbra/core/component/community_pool/v1/community_pool.proto"; import "penumbra/core/component/dex/v1/dex.proto"; import "penumbra/core/component/distributions/v1/distributions.proto"; @@ -58,6 +59,8 @@ message AppParameters { core.component.shielded_pool.v1.ShieldedPoolParameters shielded_pool_params = 10; // DEX module parameters. core.component.dex.v1.DexParameters dex_params = 11; + // Auction module parameters. + core.component.auction.v1alpha1.AuctionParameters auction_params = 12; } // Requests the global configuration data for the app. From 6d2fff3b4a096ce3503941c7dd2b4f209c6acfc5 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:14:09 -0400 Subject: [PATCH 02/12] penumbra: regenerate protos --- .../src/gen/proto_descriptor.bin.no_lfs | Bin 98383 -> 95074 bytes crates/proto/src/gen/penumbra.core.app.v1.rs | 5 +++++ .../src/gen/penumbra.core.app.v1.serde.rs | 18 ++++++++++++++++++ .../proto/src/gen/proto_descriptor.bin.no_lfs | Bin 398450 -> 395393 bytes 4 files changed, 23 insertions(+) diff --git a/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs b/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs index 67d781308dc15349cc1633e0986b9be4d49fda1f..d50e1bd8818eb8b4d521b590c16703d42bad4e23 100644 GIT binary patch delta 19801 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 QsWnq;W;8wa^^V#931P9$$^ZZW diff --git a/crates/proto/src/gen/penumbra.core.app.v1.rs b/crates/proto/src/gen/penumbra.core.app.v1.rs index 03f022040f..64efb6b654 100644 --- a/crates/proto/src/gen/penumbra.core.app.v1.rs +++ b/crates/proto/src/gen/penumbra.core.app.v1.rs @@ -89,6 +89,11 @@ pub struct AppParameters { pub dex_params: ::core::option::Option< super::super::component::dex::v1::DexParameters, >, + /// Auction module parameters. + #[prost(message, optional, tag = "12")] + pub auction_params: ::core::option::Option< + super::super::component::auction::v1alpha1::AuctionParameters, + >, } impl ::prost::Name for AppParameters { const NAME: &'static str = "AppParameters"; diff --git a/crates/proto/src/gen/penumbra.core.app.v1.serde.rs b/crates/proto/src/gen/penumbra.core.app.v1.serde.rs index 6175e5c32d..292fbb1f87 100644 --- a/crates/proto/src/gen/penumbra.core.app.v1.serde.rs +++ b/crates/proto/src/gen/penumbra.core.app.v1.serde.rs @@ -39,6 +39,9 @@ impl serde::Serialize for AppParameters { if self.dex_params.is_some() { len += 1; } + if self.auction_params.is_some() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.core.app.v1.AppParameters", len)?; if !self.chain_id.is_empty() { struct_ser.serialize_field("chainId", &self.chain_id)?; @@ -73,6 +76,9 @@ impl serde::Serialize for AppParameters { if let Some(v) = self.dex_params.as_ref() { struct_ser.serialize_field("dexParams", v)?; } + if let Some(v) = self.auction_params.as_ref() { + struct_ser.serialize_field("auctionParams", v)?; + } struct_ser.end() } } @@ -105,6 +111,8 @@ impl<'de> serde::Deserialize<'de> for AppParameters { "shieldedPoolParams", "dex_params", "dexParams", + "auction_params", + "auctionParams", ]; #[allow(clippy::enum_variant_names)] @@ -120,6 +128,7 @@ impl<'de> serde::Deserialize<'de> for AppParameters { FundingParams, ShieldedPoolParams, DexParams, + AuctionParams, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -153,6 +162,7 @@ impl<'de> serde::Deserialize<'de> for AppParameters { "fundingParams" | "funding_params" => Ok(GeneratedField::FundingParams), "shieldedPoolParams" | "shielded_pool_params" => Ok(GeneratedField::ShieldedPoolParams), "dexParams" | "dex_params" => Ok(GeneratedField::DexParams), + "auctionParams" | "auction_params" => Ok(GeneratedField::AuctionParams), _ => Ok(GeneratedField::__SkipField__), } } @@ -183,6 +193,7 @@ impl<'de> serde::Deserialize<'de> for AppParameters { let mut funding_params__ = None; let mut shielded_pool_params__ = None; let mut dex_params__ = None; + let mut auction_params__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::ChainId => { @@ -251,6 +262,12 @@ impl<'de> serde::Deserialize<'de> for AppParameters { } dex_params__ = map_.next_value()?; } + GeneratedField::AuctionParams => { + if auction_params__.is_some() { + return Err(serde::de::Error::duplicate_field("auctionParams")); + } + auction_params__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -268,6 +285,7 @@ impl<'de> serde::Deserialize<'de> for AppParameters { funding_params: funding_params__, shielded_pool_params: shielded_pool_params__, dex_params: dex_params__, + auction_params: auction_params__, }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index 08c1adaeae81d56e2b5d651c5bda3872122abd1d..a183017a8a04c3530c4378bf912e233277d7b86b 100644 GIT binary patch delta 22171 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 delta 25233 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 From a535ab4b0be768feb1f0e5f8b46796e657d71332 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:14:27 -0400 Subject: [PATCH 03/12] app: add `auction_params` to domain type --- crates/core/app/src/params.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/core/app/src/params.rs b/crates/core/app/src/params.rs index ab89d130b0..3d8cb7e841 100644 --- a/crates/core/app/src/params.rs +++ b/crates/core/app/src/params.rs @@ -1,3 +1,4 @@ +use penumbra_auction::params::AuctionParameters; use penumbra_community_pool::params::CommunityPoolParameters; use penumbra_dex::DexParameters; use penumbra_distributions::DistributionsParameters; @@ -19,6 +20,7 @@ pub mod change; #[serde(try_from = "pb::AppParameters", into = "pb::AppParameters")] pub struct AppParameters { pub chain_id: String, + pub auction_params: AuctionParameters, pub community_pool_params: CommunityPoolParameters, pub distributions_params: DistributionsParameters, pub dex_params: DexParameters, From 163c6b3f7f22aff94e002dc41696f1dc937d2584 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:18:13 -0400 Subject: [PATCH 04/12] auction: add get/put auction params --- .../auction/src/component/auction.rs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/crates/core/component/auction/src/component/auction.rs b/crates/core/component/auction/src/component/auction.rs index 41dfcfe334..96acfe1eab 100644 --- a/crates/core/component/auction/src/component/auction.rs +++ b/crates/core/component/auction/src/component/auction.rs @@ -2,10 +2,14 @@ use anyhow::Result; use async_trait::async_trait; use cnidarium::{StateRead, StateWrite}; use cnidarium_component::Component; +use penumbra_proto::StateReadProto; +use penumbra_proto::StateWriteProto; use std::sync::Arc; use tendermint::v0_37::abci; use tracing::instrument; +use crate::{params::AuctionParameters, state_key}; + pub struct Auction {} #[async_trait] @@ -43,14 +47,30 @@ impl Component for Auction { /// Extension trait providing read access to auction data. #[async_trait] pub trait StateReadExt: StateRead { - // Params accessors + async fn get_auction_params(&self) -> Result { + self.get(state_key::parameters::key()) + .await + .expect("no deserialization errors") + .ok_or_else(|| anyhow::anyhow!("Missing AuctionParameters")) + } + + fn auction_params_updated(&self) -> bool { + self.object_get::<()>(state_key::parameters::updated_flag()) + .is_some() + } } impl StateReadExt for T {} /// Extension trait providing write access to auction data. #[async_trait] -pub trait StateWriteExt: StateWrite {} +pub trait StateWriteExt: StateWrite { + /// Writes the provided auction parameters to the chain state. + fn put_auction_params(&mut self, params: AuctionParameters) { + self.object_put(state_key::parameters::updated_flag(), ()); + self.put(state_key::parameters::key().into(), params) + } +} impl StateWriteExt for T {} From f915b50ec27875dd39f28bc527ae5c8551a9b3e2 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:26:43 -0400 Subject: [PATCH 05/12] app: propagate auction param addition --- Cargo.lock | 1 + crates/core/app/src/app/mod.rs | 3 +++ crates/core/app/src/params.rs | 5 +++++ crates/core/app/src/params/change.rs | 12 +++++++++++- crates/core/component/auction/src/params.rs | 6 ++++++ crates/core/component/governance/Cargo.toml | 1 + .../core/component/governance/src/proposal.rs | 3 +++ .../penumbra.core.component.governance.v1.rs | 5 +++++ ...mbra.core.component.governance.v1.serde.rs | 18 ++++++++++++++++++ .../proto/src/gen/proto_descriptor.bin.no_lfs | Bin 395393 -> 395649 bytes .../component/governance/v1/governance.proto | 3 +++ 11 files changed, 56 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 54c2b7f43b..a548a129e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5129,6 +5129,7 @@ dependencies = [ "once_cell", "pbjson-types", "penumbra-asset", + "penumbra-auction", "penumbra-community-pool", "penumbra-dex", "penumbra-distributions", diff --git a/crates/core/app/src/app/mod.rs b/crates/core/app/src/app/mod.rs index e64db70186..deb827905f 100644 --- a/crates/core/app/src/app/mod.rs +++ b/crates/core/app/src/app/mod.rs @@ -6,6 +6,7 @@ use cnidarium::{ArcStateDeltaExt, Snapshot, StateDelta, StateRead, StateWrite, S use cnidarium_component::Component; use ibc_types::core::connection::ChainId; use jmt::RootHash; +use penumbra_auction::component::{StateReadExt as _, StateWriteExt as _}; use penumbra_community_pool::component::{CommunityPool, StateWriteExt as _}; use penumbra_community_pool::StateReadExt as _; use penumbra_compact_block::component::CompactBlockManager; @@ -691,9 +692,11 @@ pub trait StateReadExt: StateRead { let shielded_pool_params = self.get_shielded_pool_params().await?; let stake_params = self.get_stake_params().await?; let dex_params = self.get_dex_params().await?; + let auction_params = self.get_auction_params().await?; Ok(AppParameters { chain_id, + auction_params, community_pool_params, distributions_params, fee_params, diff --git a/crates/core/app/src/params.rs b/crates/core/app/src/params.rs index 3d8cb7e841..691999fb42 100644 --- a/crates/core/app/src/params.rs +++ b/crates/core/app/src/params.rs @@ -43,6 +43,10 @@ impl TryFrom for AppParameters { fn try_from(msg: pb::AppParameters) -> anyhow::Result { Ok(AppParameters { chain_id: msg.chain_id, + auction_params: msg + .auction_params + .ok_or_else(|| anyhow::anyhow!("proto response missing auction params"))? + .try_into()?, community_pool_params: msg .community_pool_params .ok_or_else(|| anyhow::anyhow!("proto response missing community pool params"))? @@ -91,6 +95,7 @@ impl From for pb::AppParameters { fn from(params: AppParameters) -> Self { pb::AppParameters { chain_id: params.chain_id, + auction_params: Some(params.auction_params.into()), community_pool_params: Some(params.community_pool_params.into()), distributions_params: Some(params.distributions_params.into()), fee_params: Some(params.fee_params.into()), diff --git a/crates/core/app/src/params/change.rs b/crates/core/app/src/params/change.rs index 78ff79d57d..1b25faf869 100644 --- a/crates/core/app/src/params/change.rs +++ b/crates/core/app/src/params/change.rs @@ -1,6 +1,7 @@ use std::fmt::Display; use anyhow::Result; +use penumbra_auction::params::AuctionParameters; use penumbra_community_pool::params::CommunityPoolParameters; use penumbra_dex::DexParameters; use penumbra_distributions::params::DistributionsParameters; @@ -27,6 +28,7 @@ impl AppParameters { // Tracked by #3593 let AppParameters { chain_id, + auction_params: AuctionParameters {}, community_pool_params: CommunityPoolParameters { community_pool_spend_proposals_enabled: _, @@ -122,6 +124,7 @@ impl AppParameters { pub fn check_valid(&self) -> Result<()> { let AppParameters { chain_id, + auction_params: AuctionParameters {}, community_pool_params: CommunityPoolParameters { community_pool_spend_proposals_enabled: _, @@ -252,6 +255,7 @@ impl AppParameters { /// Converts an `AppParameters` instance to a complete `ChangedAppParameters`. pub fn as_changed_params(&self) -> ChangedAppParameters { ChangedAppParameters { + auction_params: Some(self.auction_params.clone()), community_pool_params: Some(self.community_pool_params.clone()), distributions_params: Some(self.distributions_params.clone()), fee_params: Some(self.fee_params.clone()), @@ -283,7 +287,8 @@ impl AppParameters { || new.ibc_params.is_none() || new.sct_params.is_none() || new.shielded_pool_params.is_none() - || new.stake_params.is_none()) + || new.stake_params.is_none() + || new.auction_params.is_none()) { anyhow::bail!("all parameters must be specified if no old parameters are provided"); } @@ -296,6 +301,11 @@ impl AppParameters { .expect("old should be set if new has any None values") .chain_id .clone(), + auction_params: new.auction_params.clone().unwrap_or_else(|| { + old.expect("old should be set if new has any None values") + .auction_params + .clone() + }), community_pool_params: new.community_pool_params.clone().unwrap_or_else(|| { old.expect("old should be set if new has any None values") .community_pool_params diff --git a/crates/core/component/auction/src/params.rs b/crates/core/component/auction/src/params.rs index b60752e7af..1698b1049e 100644 --- a/crates/core/component/auction/src/params.rs +++ b/crates/core/component/auction/src/params.rs @@ -23,3 +23,9 @@ impl TryFrom for AuctionParameters { Ok(AuctionParameters {}) } } + +impl Default for AuctionParameters { + fn default() -> Self { + AuctionParameters { } + } +} \ No newline at end of file diff --git a/crates/core/component/governance/Cargo.toml b/crates/core/component/governance/Cargo.toml index b0153836ea..48cb7b75e3 100644 --- a/crates/core/component/governance/Cargo.toml +++ b/crates/core/component/governance/Cargo.toml @@ -50,6 +50,7 @@ metrics = {workspace = true} once_cell = {workspace = true} pbjson-types = {workspace = true} penumbra-asset = {workspace = true, default-features = false} +penumbra-auction = {workspace = true, default-features = false} penumbra-community-pool = {workspace = true, default-features = false} penumbra-distributions = {workspace = true, default-features = false} penumbra-fee = {workspace = true, default-features = false} diff --git a/crates/core/component/governance/src/proposal.rs b/crates/core/component/governance/src/proposal.rs index fc1f75429a..46b82e1b20 100644 --- a/crates/core/component/governance/src/proposal.rs +++ b/crates/core/component/governance/src/proposal.rs @@ -14,6 +14,7 @@ use penumbra_proto::{penumbra::core::component::governance::v1 as pb, DomainType use penumbra_sct::params::SctParameters; use penumbra_shielded_pool::params::ShieldedPoolParameters; use penumbra_stake::params::StakeParameters; +use penumbra_auction::params::AuctionParameters; /// A governance proposal. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] @@ -436,6 +437,7 @@ impl ProposalPayload { into = "pb::ChangedAppParameters" )] pub struct ChangedAppParameters { + pub auction_params: Option, pub community_pool_params: Option, pub distributions_params: Option, pub ibc_params: Option, @@ -457,6 +459,7 @@ impl TryFrom for ChangedAppParameters { fn try_from(msg: pb::ChangedAppParameters) -> anyhow::Result { Ok(ChangedAppParameters { + auction_params: msg.auction_params.map(TryInto::try_into).transpose()?, community_pool_params: msg .community_pool_params .map(TryInto::try_into) diff --git a/crates/proto/src/gen/penumbra.core.component.governance.v1.rs b/crates/proto/src/gen/penumbra.core.component.governance.v1.rs index a6a86c12b5..59ede0ba17 100644 --- a/crates/proto/src/gen/penumbra.core.component.governance.v1.rs +++ b/crates/proto/src/gen/penumbra.core.component.governance.v1.rs @@ -1046,6 +1046,11 @@ pub struct ChangedAppParameters { /// DEX component parameters #[prost(message, optional, tag = "10")] pub dex_params: ::core::option::Option, + /// Auction module parameters. + #[prost(message, optional, tag = "11")] + pub auction_params: ::core::option::Option< + super::super::auction::v1alpha1::AuctionParameters, + >, } impl ::prost::Name for ChangedAppParameters { const NAME: &'static str = "ChangedAppParameters"; diff --git a/crates/proto/src/gen/penumbra.core.component.governance.v1.serde.rs b/crates/proto/src/gen/penumbra.core.component.governance.v1.serde.rs index 7782c8ea80..a531d38884 100644 --- a/crates/proto/src/gen/penumbra.core.component.governance.v1.serde.rs +++ b/crates/proto/src/gen/penumbra.core.component.governance.v1.serde.rs @@ -248,6 +248,9 @@ impl serde::Serialize for ChangedAppParameters { if self.dex_params.is_some() { len += 1; } + if self.auction_params.is_some() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.core.component.governance.v1.ChangedAppParameters", len)?; if let Some(v) = self.sct_params.as_ref() { struct_ser.serialize_field("sctParams", v)?; @@ -279,6 +282,9 @@ impl serde::Serialize for ChangedAppParameters { if let Some(v) = self.dex_params.as_ref() { struct_ser.serialize_field("dexParams", v)?; } + if let Some(v) = self.auction_params.as_ref() { + struct_ser.serialize_field("auctionParams", v)?; + } struct_ser.end() } } @@ -309,6 +315,8 @@ impl<'de> serde::Deserialize<'de> for ChangedAppParameters { "shieldedPoolParams", "dex_params", "dexParams", + "auction_params", + "auctionParams", ]; #[allow(clippy::enum_variant_names)] @@ -323,6 +331,7 @@ impl<'de> serde::Deserialize<'de> for ChangedAppParameters { FundingParams, ShieldedPoolParams, DexParams, + AuctionParams, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -355,6 +364,7 @@ impl<'de> serde::Deserialize<'de> for ChangedAppParameters { "fundingParams" | "funding_params" => Ok(GeneratedField::FundingParams), "shieldedPoolParams" | "shielded_pool_params" => Ok(GeneratedField::ShieldedPoolParams), "dexParams" | "dex_params" => Ok(GeneratedField::DexParams), + "auctionParams" | "auction_params" => Ok(GeneratedField::AuctionParams), _ => Ok(GeneratedField::__SkipField__), } } @@ -384,6 +394,7 @@ impl<'de> serde::Deserialize<'de> for ChangedAppParameters { let mut funding_params__ = None; let mut shielded_pool_params__ = None; let mut dex_params__ = None; + let mut auction_params__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::SctParams => { @@ -446,6 +457,12 @@ impl<'de> serde::Deserialize<'de> for ChangedAppParameters { } dex_params__ = map_.next_value()?; } + GeneratedField::AuctionParams => { + if auction_params__.is_some() { + return Err(serde::de::Error::duplicate_field("auctionParams")); + } + auction_params__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -462,6 +479,7 @@ impl<'de> serde::Deserialize<'de> for ChangedAppParameters { funding_params: funding_params__, shielded_pool_params: shielded_pool_params__, dex_params: dex_params__, + auction_params: auction_params__, }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index a183017a8a04c3530c4378bf912e233277d7b86b..458a9703d06f8ec3f6c7bb5183de3c22baaa2245 100644 GIT binary patch delta 10302 zcmY*fd3;qxmcCV|xOwj;;UzaKFFOfIcu5`v5_SO*B@BXqfM_F%Y$7_et+v}}jA0cK z1hEiEyEMP19o$8+5gkQDu^VX{aRe7yu~BIqly(7hbiPx!Zl3c8zhAyn=X`bQ)TvXa z?xXGQ!nQSqw=EP4Ko2c-Sn3mscc(arcz?ttrhfkseCH3 zZPIXhlXOn?r$&CS$oOX<7Nt1pK*am*K=}JY+L0>`gMBx7g~5}eiz4iNa^fZ zB3D0k9#!ab-=g%^7BA{aQa+_QeaxR-e2O^dm_J>gqE?#bljjUF(uhy#RvPsw!~W^{ zlxfYf!Y<`WPzKLnlzvh+-MD8q8RnRT?7b7guyQ^GaWpIaR^D5?W=E zLNl-Ac`NkR37EG+MvNt7(5Q%JhX_0sxq04T%q!WrQfEx0Ge%T)>hrvn(ZCC6K)=$@ zG4qnIs-1>lUV>IN!q*HQ;(2TJ@`=$$Kv3*&gAN3`{x;~YuLe11 z2Xwv*wLy_?CMquT4bcZLpqk$J8+1b~9T4<}*w_PsZU|yuh}F2f=R@`2$rMivwa!4s z!n`1sK+qqGSXLW-#D2JLolLcf;WE!S@0!>T&+i^0=nwBvZF11%jToWdnv5JAAq%Vq zXUmAf>JYI?&xBnCO2J6oa|-r$WG6rG+Q|H3tFNFxvaH-hH_cb0oN+-o(x5fU?rj=J zV>It=V`8-3Rmh+*+U_b4ct+b@P2)I>;awfx8-F7g#@M|D;vu`YK(HEvz2%ddCJ~LX zdgcWutnW~e(toFYr(>E)9ypI!dj1=r3_ zdd6FfV69W^&I5sCirsl2a7@9@_cn6^OqE6P%7A0WmDkNKUoc1i&s3^NPL)}fj<9oi2ELGDv%$YY!m839_mv&EKn9su53S7gDGe=$?y2krI$IG(R zeCxE*+)m$s!9BOrx8Mev+vyrGxaYz(!yUo0=gBKAcZ8QQ5BC{gk5OLq6)Gr>0HD1> zr3djb>%Af)D5KGthVzR20&547`6|ebs5xZwRgi{2JeD35b0D}fAIYAMYt{3+EO2fY z!PaeH}{p)Z}_-vw^@#%U!^kN#8xZYMg z$iRPnVWkNY5UW(zcuhth$Kpo4`C{sqxUth8J`FcUORPShh8xQ(yt9oy9KTtoO{YUR9OViORr9*R}K<~iOOUIt7#hNaqVJ(XVstTJ!2%W_OWyM0UEf%ON%$DK1 z%Y<{MWy^r(G7*WJjwXZImg_q%r88QVhini+XL-m52)5-RTc+>cC7d;uEfbn|3EbF2 z;9DlMtG_+w=$Oa*FR)uVUU|Yp(d_iO)<FT@p3gwUiT4A%TC?~- ziEVJERm^uc3Fp6rh<7iaq#t~yORkN{prwf-3tlOGqJZ=w-HhYIE=getcTz-a9t$Vmw>#}gvAC?&ugPl(boZ>DjY ze0Qsm&+5gq>9WaN1uiAt{}^%qt)59y1A`iZkQxF|Ka-+{0MySgH9uHlDE{uBgnUt- zF^B3}|0K+F2XZFfE>OWa^gy5m^g;;I?Hm(33d-#q5x!4ioE^^#Rcr@w&oRslp&9L3 z5JH$fFHnHlv^9qAMePtOZbwnj7-obJwmU>-UI<~kLlg$LcMQc?y&!N`1wIi>0fXGZ zAWUBnxUKA{QO0f6gjCA%-JQbuKnOi&E;af)MWnz~fh=T@yGzK|^uu#$aP}@vmh%yJ z$T>W_^|y0ra^vnWS&SId><*K~2r$uZ4oxlAm&IPZp>MvN68Ud%O7a$D;V8I!h5Rcr zs94`RkK(21*w{^sKz}bQPB7D&OxmYkn}<$x_&jo(_HkS}FQIC7dY?dKI|Z0~AIFx< zZ5D1KcfXMD=$q!zknH`OL;irm&9g|c|vhf=njLV%$ySFA%RTU_CQ zHv6(TgWe0%00^dlK^g$U^t~_*0Ac!`KpONy8f5#f`nzyG)y4BE8T&gQ1rA&`FXUr= z;d~m_@Ug(P&07N@m_8QKATk^?mo4a9+?$uB5uyF%ik~`hm!2cfZgt zUr7TRz6gmR1ko4a+<=(-3!a-_$3D+;TvuO3jSa_BChYEU5$$Rg3>}yp7umikNj``9 zgkE?R&F+07Wx_-!L^Ri$aClGf-P4n2;e7d4$p6*d{+()DzYP<`XRYtTdI5wT0}Sc~ zASl1%B;>FI8f9BAd;~##pE6Z21q@BmSpjyMqO}4HOO21GhB_%!PfOedwtzu_z#wc- zirlJj6t*WtO|407pOfm8P`&LS9v%#XT8TlJo)QIh;V4W`iDWNpif8O;p(1;CZz1d=14! z(>jS8f(xXP!_9TFTTMy;&UG?T=RFphLZf5bv1_TfXzuu>DIboGUz+mq=wQ>Y0(Vet ze=p@9^?ARgpYL*TZkC0$)}5fcgAxV!l7 z(^5X8J8q=Ar##K!;}*jw{&=OfO50)@3~mTQZu1EXg7l#0G#ZG-R*7?Ox5o9|?NaX0 z3vZ$|7i^avUm(oQAF|Z*DQ@#Iiv=OK`JM$qC%5^e1p&B+;xU87d`UWQND=R?D~eQH zFTI({T3?b8{?>*szRdr!l%qK986m(g%Ob%CXi9 zE{40LYw9c3!%g%qnU@GhjdFAA7&|SBIRx4`wgye8!uVTZXoz9wB$YIqdJ zugOH{B$v|HbD49$UUe(A^w}S>K?t4wGFrqQvJTkx zOEl!y850a1kg_;FclCGqy1bR9wEzZPN3MBJ9+3EY5twqG9gyZqlPVAGm~`H=j^u&o z-EeVv?8u>DarhgHI}~yPLi13#I6!b73Ky5}yB|pBnB~le<_Eku{yv<~oQHMGZB*NE zSjwO|gAh80WqNQc0fOx?S80w%KBxXi9FGzD@NMMw`6%=PBRmua1rT;0aZt`OcG%)0 z5??i&^(6~LneNv{6@4HG!jf;=x+5|gys`mdd_>}v%@NIK^p9Ugbjl#e5CaH90zO#( z2;+)TV}iKy%RZmGj8CPE$E$*uW}zN+JLNS%6kOX-fcd8~E4WSpVg9Ma!-Si`d~P&8 z*UN6F!O731EHPULAxu7(rOhFP$>(ywKyNrws=#-@l+IWB#O*XJ_N9!JnG7x9fFI{g z9Fja9x(*?Tj)&U^2%_V>ea#>$^xc0+=Ue@s?bLMMzhoq6Bnp}68z~#j+(0-nfZam~ z!f#|{eF#DLjqKIi>kGnezI#$SKce9F(7#)PpSngZq};5NoM*T3J<^S-PwV*$>GtGl zG~b2;LQtNTX+gLEL3vu@XAW+=o0m6J4A-%>Sd`0M_$XTV=FQKtnD=1Q8a;1pFx03Xk?bO@^0C!e~?f`;s zCE0QY2)>nMQ>NH=*O0SLU%Hf2%-+cM^diyCG5fd`nzQ~Mfa0Eju5hx z>~REy$^C@m*v?s9!U^(_zVr@S)aRkpG|co6MN928oCpsQez}}$On^3#>=D0EKfWBl z%??;jXC)yBQliAXYc^5TT%wqOQ(_ZUR(Veb6Cx)z>xY-q)5*;#8_t8x6s@omavp3Z z{FK}i0V?&~E#y3=@3@m{V_OIx@VQ8ra)2JyFGHAol<>P1hZaH*JxT?&Aq3H*R9Ej! z15ugpK1I$RU9f_F6?=*!%|vBPv{kpQ0MS+~%UD7PqODXNyo3Njw3Yfc@pTOo3_eTx zky2HwpSTO>k=vwaNe;5c9P?*s@c0nI_*puClGk925%T9qN6J)HV2nlr0@>GUGx>AW zban_~{2aB6w$1`=Cw*y|Dq&+Uxjp4FpT+GdmpSm;*=7DfQ^sd;2k9rvRGFEzk^7<@ zB!ia`hGD#e68-F~yaPLE;2=9IPT7lk=t_j>#ngOU=wD3DhY$9En2&#HE8|7IM0#?$ zstH!f4bV#@2igg^TY8BGnJ$#IVf+$Jm}ov3lu5KhJ4ruLt||g&x%JsevcVeTOFm$7 zNC;uPlZFj9Z~iiVOzzTSR^iRRi{t>S!;i>aG|=>$n2#TkyJ-9b8yq|$ck72&Q6jlJ zwLX43?oO?b-;TSfZ?kpL^VRE!XN7g~Tn{e3p4vtH$OG79dPmIX!T5DLdz5Lc%6<3G zi_`k{M+F<1%&F` zVSNPz>Dydi`A3}!PTY4$*2Mekua;7Q-nyFVMne!(K@6L5TLl4O{0>(^_Ncq>9wg_m z^{6{E4^kxI;kBz&cXsK+ZMADCUyS}RbOusreMr%O9uRyV^5wyNmA?BCIiFa*N@#vW zkv?XHl}vXeSm8JTtnf%k3JBFB;R*pkdW2WVq*cCql$?KB(kf^krAS|I5`3&;($BQF zmZmg(M)nsZ2%+;C;d>ibCqS@$M)9@8t<(pfW(g;A<9Q92gh6@V}~#!=$` zozuftUy@U9esbyo>o56MWY4O7_c%ExtY_62I?fkd4@^_do_(zw@1>gL*Wo%LgwEID z%@2razUI5^3b57Sa~3(L_2PSJUhG?TzZ66@O!U3}>0T;t_&y|p5JcZo)I2>|2Snc! zeuv}V9cwrxPU$h4y0@H4nQ$VU3S$f%n4Ah@TWOq3AS2x;3xeI zuFjU9!X5%b==?-k!6gj{wx2?_p1#|roP{blX+5FYrXm&Q!tTjz?YjFq>e;(cL zblO!x@OcanZ0*W?9+N8JyNi{x%(5k*xma1>63n(#uUQA*mMYudKnR_s%K8Qfwx!Bu zQ=RWFSI%9Qtqz*Y6}FQb^Ezf*aqoT9)UpE4S(81GL1l%?30_x#AX}l(>2U(o`|c{` ztg&SE&|Ia^x-wZkldabO!ECFQ{W%gs=&V-R!GjABY^#-ha5ebuTIH;>Yz@#{%M0an zYG5|4Pu@p0En3<36+-A}W!qOkuxW+%m3>S4?t0~PShgfI*RyX`U`sOFMm={uRkv&m z*&u|@#*hsVY#T$iUcP(3!hgaGwzL;C?^n3W*|%QI_Mkqno@&Y-4A~%r&VwNvAlM#U RQnZ2aPi-sO&}Gh5{|7=q*xvvE delta 10086 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 Date: Tue, 23 Apr 2024 10:27:42 -0400 Subject: [PATCH 06/12] governance: complete conversion trait for changed app params --- crates/core/component/auction/src/params.rs | 4 ++-- crates/core/component/governance/src/proposal.rs | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/core/component/auction/src/params.rs b/crates/core/component/auction/src/params.rs index 1698b1049e..a257468c28 100644 --- a/crates/core/component/auction/src/params.rs +++ b/crates/core/component/auction/src/params.rs @@ -26,6 +26,6 @@ impl TryFrom for AuctionParameters { impl Default for AuctionParameters { fn default() -> Self { - AuctionParameters { } + AuctionParameters {} } -} \ No newline at end of file +} diff --git a/crates/core/component/governance/src/proposal.rs b/crates/core/component/governance/src/proposal.rs index 46b82e1b20..15acff232e 100644 --- a/crates/core/component/governance/src/proposal.rs +++ b/crates/core/component/governance/src/proposal.rs @@ -5,6 +5,7 @@ use serde::{Deserialize, Serialize}; use std::str::FromStr; use crate::params::GovernanceParameters; +use penumbra_auction::params::AuctionParameters; use penumbra_community_pool::params::CommunityPoolParameters; use penumbra_dex::DexParameters; use penumbra_distributions::params::DistributionsParameters; @@ -14,7 +15,6 @@ use penumbra_proto::{penumbra::core::component::governance::v1 as pb, DomainType use penumbra_sct::params::SctParameters; use penumbra_shielded_pool::params::ShieldedPoolParameters; use penumbra_stake::params::StakeParameters; -use penumbra_auction::params::AuctionParameters; /// A governance proposal. #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] @@ -486,6 +486,7 @@ impl TryFrom for ChangedAppParameters { impl From for pb::ChangedAppParameters { fn from(params: ChangedAppParameters) -> Self { pb::ChangedAppParameters { + auction_params: params.auction_params.map(Into::into), community_pool_params: params.community_pool_params.map(Into::into), distributions_params: params.distributions_params.map(Into::into), fee_params: params.fee_params.map(Into::into), From a02acfc27167d07940fb62571d8bf248f8151f6b Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:33:45 -0400 Subject: [PATCH 07/12] auction: expose genesis module --- crates/core/component/auction/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/core/component/auction/src/lib.rs b/crates/core/component/auction/src/lib.rs index cf2f70ab1d..1c41a72740 100644 --- a/crates/core/component/auction/src/lib.rs +++ b/crates/core/component/auction/src/lib.rs @@ -4,6 +4,7 @@ pub mod auction; pub mod params; +pub mod genesis; pub mod state_key; #[cfg(feature = "component")] From ad2a36b7fe0d2916ea3a1aa9daf6d908777244c7 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:58:13 -0400 Subject: [PATCH 08/12] pcli: add auction content to proposal template --- crates/bin/pcli/src/command/tx/proposal.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/bin/pcli/src/command/tx/proposal.rs b/crates/bin/pcli/src/command/tx/proposal.rs index 7027a884cd..19e1585240 100644 --- a/crates/bin/pcli/src/command/tx/proposal.rs +++ b/crates/bin/pcli/src/command/tx/proposal.rs @@ -97,6 +97,7 @@ impl ProposalKindCmd { ProposalKindCmd::ParameterChange => ProposalPayload::ParameterChange { old: Box::new(app_params.as_changed_params()), new: Box::new(ChangedAppParameters { + auction_params: None, community_pool_params: None, distributions_params: None, ibc_params: None, From bca0e99af398bfdd7fc3a8ac1078a0787bb9f0b0 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:58:16 -0400 Subject: [PATCH 09/12] proto(app): add auction to genesis content message --- proto/penumbra/penumbra/core/app/v1/app.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proto/penumbra/penumbra/core/app/v1/app.proto b/proto/penumbra/penumbra/core/app/v1/app.proto index 51b9b44c89..32f51d495f 100644 --- a/proto/penumbra/penumbra/core/app/v1/app.proto +++ b/proto/penumbra/penumbra/core/app/v1/app.proto @@ -100,4 +100,6 @@ message GenesisContent { core.component.funding.v1.GenesisContent funding_content = 10; // DEX component genesis state. core.component.dex.v1.GenesisContent dex_content = 11; + // Auction component genesis state. + core.component.auction.v1alpha1.GenesisContent auction_content = 12; } From b66a2c6c917898ba4cc7ece5ff393bed155f42ee Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 10:59:51 -0400 Subject: [PATCH 10/12] penumbra: regenerate protos --- crates/core/app/src/genesis.rs | 2 ++ crates/proto/src/gen/penumbra.core.app.v1.rs | 5 +++++ .../src/gen/penumbra.core.app.v1.serde.rs | 18 ++++++++++++++++++ .../proto/src/gen/proto_descriptor.bin.no_lfs | Bin 395649 -> 395839 bytes 4 files changed, 25 insertions(+) diff --git a/crates/core/app/src/genesis.rs b/crates/core/app/src/genesis.rs index 942cd80331..0768255fb2 100644 --- a/crates/core/app/src/genesis.rs +++ b/crates/core/app/src/genesis.rs @@ -47,6 +47,8 @@ pub struct Content { pub stake_content: StakeContent, /// Dex component genesis state. pub dex_content: DexContent, + /// Auction component genesis state. + pub auction_content: AuctionContent, } impl DomainType for Content { diff --git a/crates/proto/src/gen/penumbra.core.app.v1.rs b/crates/proto/src/gen/penumbra.core.app.v1.rs index 64efb6b654..0fea6965d8 100644 --- a/crates/proto/src/gen/penumbra.core.app.v1.rs +++ b/crates/proto/src/gen/penumbra.core.app.v1.rs @@ -206,6 +206,11 @@ pub struct GenesisContent { pub dex_content: ::core::option::Option< super::super::component::dex::v1::GenesisContent, >, + /// Auction component genesis state. + #[prost(message, optional, tag = "12")] + pub auction_content: ::core::option::Option< + super::super::component::auction::v1alpha1::GenesisContent, + >, } impl ::prost::Name for GenesisContent { const NAME: &'static str = "GenesisContent"; diff --git a/crates/proto/src/gen/penumbra.core.app.v1.serde.rs b/crates/proto/src/gen/penumbra.core.app.v1.serde.rs index 292fbb1f87..9b910dd7fe 100644 --- a/crates/proto/src/gen/penumbra.core.app.v1.serde.rs +++ b/crates/proto/src/gen/penumbra.core.app.v1.serde.rs @@ -616,6 +616,9 @@ impl serde::Serialize for GenesisContent { if self.dex_content.is_some() { len += 1; } + if self.auction_content.is_some() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.core.app.v1.GenesisContent", len)?; if !self.chain_id.is_empty() { struct_ser.serialize_field("chainId", &self.chain_id)?; @@ -650,6 +653,9 @@ impl serde::Serialize for GenesisContent { if let Some(v) = self.dex_content.as_ref() { struct_ser.serialize_field("dexContent", v)?; } + if let Some(v) = self.auction_content.as_ref() { + struct_ser.serialize_field("auctionContent", v)?; + } struct_ser.end() } } @@ -682,6 +688,8 @@ impl<'de> serde::Deserialize<'de> for GenesisContent { "fundingContent", "dex_content", "dexContent", + "auction_content", + "auctionContent", ]; #[allow(clippy::enum_variant_names)] @@ -697,6 +705,7 @@ impl<'de> serde::Deserialize<'de> for GenesisContent { DistributionsContent, FundingContent, DexContent, + AuctionContent, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -730,6 +739,7 @@ impl<'de> serde::Deserialize<'de> for GenesisContent { "distributionsContent" | "distributions_content" => Ok(GeneratedField::DistributionsContent), "fundingContent" | "funding_content" => Ok(GeneratedField::FundingContent), "dexContent" | "dex_content" => Ok(GeneratedField::DexContent), + "auctionContent" | "auction_content" => Ok(GeneratedField::AuctionContent), _ => Ok(GeneratedField::__SkipField__), } } @@ -760,6 +770,7 @@ impl<'de> serde::Deserialize<'de> for GenesisContent { let mut distributions_content__ = None; let mut funding_content__ = None; let mut dex_content__ = None; + let mut auction_content__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::ChainId => { @@ -828,6 +839,12 @@ impl<'de> serde::Deserialize<'de> for GenesisContent { } dex_content__ = map_.next_value()?; } + GeneratedField::AuctionContent => { + if auction_content__.is_some() { + return Err(serde::de::Error::duplicate_field("auctionContent")); + } + auction_content__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -845,6 +862,7 @@ impl<'de> serde::Deserialize<'de> for GenesisContent { distributions_content: distributions_content__, funding_content: funding_content__, dex_content: dex_content__, + auction_content: auction_content__, }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index 458a9703d06f8ec3f6c7bb5183de3c22baaa2245..6ffdd0c103c9ca6b612e691c0d692d5a5233ebfd 100644 GIT binary patch delta 201 zcmZpiEU|xzL_-T>3sVd87M5MSOsmbd@8M;6$icLWWBYtDmg~%-LWx}biKWRUnfZC~ z$@zIDsd*(5Jku4ES>&e+oMRRgcTderEzT@0mttXJ?c2^aaJIvx-`dln5Y)srj%;`*SQc4Pr5NoF2RcBFD=4Jy48*uS( dv4Yev0(piGFdj3I=j__9sKK&bQG+$%App`!G&BGJ delta 79 zcmV-V0I>hRlo)}N7=VNUgaU*Ev;?{h0_`-nybT252m;p!x1SaS*8`W?8U*_Zt{Dmj l5(EGMW|t9U0Tj3K8w9op0cN+TBm~?8hu Date: Tue, 23 Apr 2024 11:07:41 -0400 Subject: [PATCH 11/12] app: connect auction component to application --- crates/core/app/src/app/mod.rs | 11 ++++++++++- crates/core/app/src/genesis.rs | 6 ++++++ .../core/component/auction/src/component/auction.rs | 6 ++++-- crates/core/component/auction/src/component/mod.rs | 1 + crates/core/component/auction/src/genesis.rs | 4 ++-- crates/core/component/auction/src/lib.rs | 2 +- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/crates/core/app/src/app/mod.rs b/crates/core/app/src/app/mod.rs index deb827905f..f918e1c642 100644 --- a/crates/core/app/src/app/mod.rs +++ b/crates/core/app/src/app/mod.rs @@ -6,7 +6,7 @@ use cnidarium::{ArcStateDeltaExt, Snapshot, StateDelta, StateRead, StateWrite, S use cnidarium_component::Component; use ibc_types::core::connection::ChainId; use jmt::RootHash; -use penumbra_auction::component::{StateReadExt as _, StateWriteExt as _}; +use penumbra_auction::component::{Auction, StateReadExt as _, StateWriteExt as _}; use penumbra_community_pool::component::{CommunityPool, StateWriteExt as _}; use penumbra_community_pool::StateReadExt as _; use penumbra_compact_block::component::CompactBlockManager; @@ -119,6 +119,7 @@ impl App { ) .await; Ibc::init_chain(&mut state_tx, Some(&genesis.ibc_content)).await; + Auction::init_chain(&mut state_tx, Some(&genesis.auction_content)).await; Dex::init_chain(&mut state_tx, Some(&genesis.dex_content)).await; CommunityPool::init_chain(&mut state_tx, Some(&genesis.community_pool_content)) .await; @@ -246,6 +247,9 @@ impl App { if let Some(dex_params) = app_params.new.dex_params { state_tx.put_dex_params(dex_params); } + if let Some(auction_params) = app_params.new.auction_params { + state_tx.put_auction_params(auction_params); + } } // Run each of the begin block handlers for each component, in sequence: @@ -258,6 +262,7 @@ impl App { begin_block, ) .await; + Auction::begin_block(&mut arc_state_tx, begin_block).await; Dex::begin_block(&mut arc_state_tx, begin_block).await; CommunityPool::begin_block(&mut arc_state_tx, begin_block).await; Governance::begin_block(&mut arc_state_tx, begin_block).await; @@ -388,6 +393,7 @@ impl App { ShieldedPool::end_block(&mut arc_state_tx, end_block).await; Distributions::end_block(&mut arc_state_tx, end_block).await; Ibc::end_block(&mut arc_state_tx, end_block).await; + Auction::end_block(&mut arc_state_tx, end_block).await; Dex::end_block(&mut arc_state_tx, end_block).await; CommunityPool::end_block(&mut arc_state_tx, end_block).await; Governance::end_block(&mut arc_state_tx, end_block).await; @@ -497,6 +503,9 @@ impl App { Ibc::end_epoch(&mut arc_state_tx) .await .expect("able to call end_epoch on IBC component"); + Auction::end_epoch(&mut arc_state_tx) + .await + .expect("able to call end_epoch on auction component"); Dex::end_epoch(&mut arc_state_tx) .await .expect("able to call end_epoch on dex component"); diff --git a/crates/core/app/src/genesis.rs b/crates/core/app/src/genesis.rs index 0768255fb2..32d01944bf 100644 --- a/crates/core/app/src/genesis.rs +++ b/crates/core/app/src/genesis.rs @@ -1,3 +1,4 @@ +use penumbra_auction::genesis::Content as AuctionContent; use penumbra_community_pool::genesis::Content as CommunityPoolContent; use penumbra_dex::genesis::Content as DexContent; use penumbra_distributions::genesis::Content as DistributionsContent; @@ -80,6 +81,7 @@ impl From for pb::GenesisContent { fn from(genesis: Content) -> Self { pb::GenesisContent { chain_id: genesis.chain_id, + auction_content: Some(genesis.auction_content.into()), community_pool_content: Some(genesis.community_pool_content.into()), distributions_content: Some(genesis.distributions_content.into()), fee_content: Some(genesis.fee_content.into()), @@ -118,6 +120,10 @@ impl TryFrom for Content { fn try_from(msg: pb::GenesisContent) -> Result { Ok(Content { chain_id: msg.chain_id, + auction_content: msg + .auction_content + .ok_or_else(|| anyhow::anyhow!("proto response missing Auction content"))? + .try_into()?, community_pool_content: msg .community_pool_content .ok_or_else(|| anyhow::anyhow!("proto response missing Community Pool content"))? diff --git a/crates/core/component/auction/src/component/auction.rs b/crates/core/component/auction/src/component/auction.rs index 96acfe1eab..25df0bff58 100644 --- a/crates/core/component/auction/src/component/auction.rs +++ b/crates/core/component/auction/src/component/auction.rs @@ -14,13 +14,15 @@ pub struct Auction {} #[async_trait] impl Component for Auction { - type AppState = (); + // Note: this is currently empty, but will make future + // addition easy to do. + type AppState = crate::genesis::Content; #[instrument(name = "auction", skip(_state, app_state))] async fn init_chain(_state: S, app_state: Option<&Self::AppState>) { match app_state { None => { /* perform upgrade specific check */ } - Some(&()) => {} + Some(_) => {} } } diff --git a/crates/core/component/auction/src/component/mod.rs b/crates/core/component/auction/src/component/mod.rs index 05a7f8e761..2089a3f3d8 100644 --- a/crates/core/component/auction/src/component/mod.rs +++ b/crates/core/component/auction/src/component/mod.rs @@ -5,6 +5,7 @@ mod dutch_auction; pub mod metrics; pub mod rpc; +pub use auction::Auction; pub use auction::{StateReadExt, StateWriteExt}; pub(crate) use auction_store::AuctionStoreRead; pub(crate) use dutch_auction::DutchAuctionManager; diff --git a/crates/core/component/auction/src/genesis.rs b/crates/core/component/auction/src/genesis.rs index 77a6f93fee..84ee043ec1 100644 --- a/crates/core/component/auction/src/genesis.rs +++ b/crates/core/component/auction/src/genesis.rs @@ -18,7 +18,7 @@ impl DomainType for Content { impl From for pb::GenesisContent { fn from(value: Content) -> Self { pb::GenesisContent { - auction_params: Some(value.auction_params.into()), + params: Some(value.auction_params.into()), } } } @@ -29,7 +29,7 @@ impl TryFrom for Content { fn try_from(msg: pb::GenesisContent) -> Result { Ok(Content { auction_params: msg - .auction_params + .params .context("auction params not present in protobuf message")? .try_into()?, }) diff --git a/crates/core/component/auction/src/lib.rs b/crates/core/component/auction/src/lib.rs index 1c41a72740..fead922719 100644 --- a/crates/core/component/auction/src/lib.rs +++ b/crates/core/component/auction/src/lib.rs @@ -3,8 +3,8 @@ #![deny(clippy::unwrap_used)] pub mod auction; -pub mod params; pub mod genesis; +pub mod params; pub mod state_key; #[cfg(feature = "component")] From b6a431717c04c9f6eb021f523c0c1a8ba278ab00 Mon Sep 17 00:00:00 2001 From: Erwan Or Date: Tue, 23 Apr 2024 11:44:13 -0400 Subject: [PATCH 12/12] auction: write auction parameters on bootstrap --- crates/core/component/auction/src/component/auction.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/core/component/auction/src/component/auction.rs b/crates/core/component/auction/src/component/auction.rs index 25df0bff58..c6e74ee3e5 100644 --- a/crates/core/component/auction/src/component/auction.rs +++ b/crates/core/component/auction/src/component/auction.rs @@ -18,11 +18,13 @@ impl Component for Auction { // addition easy to do. type AppState = crate::genesis::Content; - #[instrument(name = "auction", skip(_state, app_state))] - async fn init_chain(_state: S, app_state: Option<&Self::AppState>) { + #[instrument(name = "auction", skip(state, app_state))] + async fn init_chain(mut state: S, app_state: Option<&Self::AppState>) { match app_state { None => { /* perform upgrade specific check */ } - Some(_) => {} + Some(content) => { + state.put_auction_params(content.auction_params.clone()); + } } }