ido: keep offeredTokenTotalSupply in Active parameters

IdoActiveParameters dropped offeredTokenTotalSupply, so clients couldn't compute the offered-vs-total-supply share for live (non-PREINIT) IDOs. Carry it forward from the preinit parameters at the PreInit->Active transition and add it to the struct. A serde default of -1 (the pre-existing-token "unknown supply" sentinel) lets ido_state rows written before this field existed still deserialize.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hossein Zoda 2026-07-17 21:52:52 +00:00
parent a73dff52df
commit 0eb86131f4

View file

@ -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<u8>,
#[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<IdoAddResult> {
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(),