The NICR hint the SDK sends: the centre of [newNICR, upperBoundNICR] at price.
MUSD the partial takes from it.
true when either tolerance is below REDEMPTION_PRICE_MOVE_TOLERANCE, the measured
two block move. A fragile partial that revertsCallIfCancelled mostly reverts, and
redeem() refuses to send it unless told to (acceptPriceFragilePartial).
The largest price FALL, as a 1e18 fraction of price, the partial survives with that hint.
The largest price RISE, as a 1e18 fraction of price, the partial survives with that hint.
true when it is the first Trove drawn, where a cancel reverts the whole call.
The Trove the partial lands on.
One partial redemption, and the contract's band for it (MK-103).
What cancels a partial.
_redeemCollateralFromTrovecomputes the Trove's resulting NICR at the price when the transaction MINES (TroveManager.sol:1224-1230,:1287-1290) and cancels the partial unlessnewNICR <= hint <= upperBoundNICR(:1299-1306). The upper bound differs fromnewNICRonly by 600 seconds of interest at the GLOBAL rate on the Trove's principal (:1276-1285), a relative width of aboutrate * 600 / year, 1.9e-7 at 1%. A price rise lowers the collateral drawn and liftsnewNICRabove the hint; a fall lowers the upper bound under it. A cancel on the FIRST Trove drawn reverts the whole call (:392,:406-408); a cancel later just redeems less.What the SDK does about it. It sends the CENTRE of the band as the hint, where
getRedemptionHintsreturns its lower edge (HintHelpers.sol:143-160), which tolerated no rise at all. And it reports how far the price can move each way, so a caller can see that the band is narrow by construction: the tolerated move scales withremaining collateral / collateral drawn, so only a partial that draws a very small share of the Trove survives an ordinary block move.