diff --git a/polkadot/runtime/parachains/src/on_demand/mod.rs b/polkadot/runtime/parachains/src/on_demand/mod.rs index 7ed14ea46e0f..2ed70264138a 100644 --- a/polkadot/runtime/parachains/src/on_demand/mod.rs +++ b/polkadot/runtime/parachains/src/on_demand/mod.rs @@ -495,9 +495,11 @@ where }, PaymentType::Credits => { // Charge the sending account the spot price in credits. - let credits = Credits::::get(&sender); - ensure!(spot_price <= credits, Error::::InsufficientCredits); - Credits::::insert(&sender, credits.saturating_sub(spot_price)); + Credits::::try_mutate(&sender, |credits| -> DispatchResult { + ensure!(spot_price <= *credits, Error::::InsufficientCredits); + *credits = credits.saturating_sub(spot_price); + Ok(()) + })?; }, }