diff --git a/src/db/ido/mod.rs b/src/db/ido/mod.rs index f77a888..1ad4794 100644 --- a/src/db/ido/mod.rs +++ b/src/db/ido/mod.rs @@ -305,6 +305,13 @@ pub struct IdoPreInitParameters { permanentLiquidityMinFee: Integer, } +// Default for `IdoActiveParameters::offeredTokenTotalSupply` so state rows +// written before the field existed still deserialize. `-1` is the +// pre-existing-token "unknown supply" sentinel. +fn default_offered_token_total_supply() -> Integer { + Integer::from(-1i64) +} + #[serde_as] #[derive(Serialize, Deserialize, Clone)] pub struct IdoActiveParameters { @@ -313,6 +320,11 @@ pub struct IdoActiveParameters { collectorNFTH: Vec, #[serde_as(as = "IntegerAsStr")] permanentLiquidityShareNumerator: Integer, + // Carried forward from the preinit parameters so it survives the + // PreInit→Active transition. + #[serde_as(as = "IntegerAsStr")] + #[serde(default = "default_offered_token_total_supply")] + offeredTokenTotalSupply: Integer, #[serde_as(as = "IntegerAsStr")] offeredTokenAmount: Integer, offering: IdoParametersOffering, @@ -2309,6 +2321,9 @@ fn ido_add_tx(context: &IdoContext, tx: &Transaction) -> Result { permanentLiquidityShareNumerator: preinit_params .permanentLiquidityShareNumerator .clone(), + offeredTokenTotalSupply: preinit_params + .offeredTokenTotalSupply + .clone(), offeredTokenAmount: preinit_params.offeredTokenAmount.clone(), offering: preinit_params.offering.clone(), orbPoolParamsCategory: preinit_params.orbPoolParamsCategory.clone(),