Submitted by adriro, also found by immeas, bin2chen, and ladboy233
Protocol admins can modify the loan term settings. This action can inadvertently default existing loans created under different terms.
Positions in the Particle LAMM protocol are created for a configurable period of time, defined by the LOAN_TERM variable. If the loan exceeds this duration, and the LP owner stops renewals that affect their position, the lien can be liquidated.
https://github.com/code-423n4/2023-12-particle/blob/a3af40839b24aa13f5764d4f84933dbfa8bc8134/contracts/protocol/ParticlePositionManager.sol#L358-L368
The liquidation condition in line 365 does the check using the current value of LOAN_TERM. As the loan term can be updated using updateLoanTerm(), this means that reducing this value may inadvertently cause the liquidation of existing positions that were originally intended for a longer period of time.
Lets say the current configured loan term in ParticlePositionManager is 2 weeks.
Store the loan term value at the time the position was created in the Lien structure, e.g. in lien.loanTerm. When checking the liquidation condition, calculate the end time using this value to honor the original loan term.
wukong-particle (Particle) acknowledged and commented:
adriro (Warden) commented:
wukong-particle (Particle) commented:
