Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Bug][Contract] LoanManager refinance_loan fails to update term_ledgers and reset interest_residual

Abierto Apto para principiantes
#2,002 5 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 5 días

@goodness-cpu ya está trabajando en esto.

Desde el 21/10/2026.

  • #2185 de @goodness-cpu — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
rust

Línea de trabajo

Empieza en contracts/loan_manager/src/lib.rs, en LoanManager::refinance_loan, alrededor de las líneas 2284–2295; después, compáralo con approve_loan alrededor de las líneas 1244–1246 y con las rutas de acumulación de intereses de las líneas 389 y 673. Añade una prueba unitaria que refinancie el préstamo a un plazo distinto y compruebe la acumulación posterior de intereses y el momento en que se aplica el recargo por mora; el trabajo estará terminado cuando el comportamiento del nuevo plazo, el saldo residual y el período de gracia coincida con la descripción de la incidencia.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug contracts good first issue smart-contract Stellar Wave
Issue #122

LoanManager refinance_loan Fails to Update term_ledgers and Reset interest_residual

  • Title: [Bug][Contract] LoanManager refinance_loan fails to update term_ledgers and reset interest_residual
  • Labels: bug, contracts, smart-contract, good first issue
  • Location: contracts/loan_manager/src/lib.rs:2284-2295
  • Description:
    In LoanManager::refinance_loan, when resetting the loan state for the new term (loan.amount = new_amount; loan.due_date = current_ledger.checked_add(new_term)...;), loan.term_ledgers is never updated to new_term, loan.interest_residual is not reset to 0, and loan.last_late_fee_ledger is set to loan.due_date instead of loan.due_date + grace_period_ledgers (compare with approve_loan at lines 1244-1246). Because accrue_interest (line 389) and accrue_late_fee (line 673) divide by loan.term_ledgers, a loan refinanced into a different term length continues accruing interest and late fees using the old term_ledgers denominator.
  • Impact:
    Refinancing a loan to a longer or shorter new_term miscalculates all subsequent interest and late fee accruals, and starts accruing late fees before the grace period has elapsed.
  • Suggested Fix:
    In refinance_loan (around line 2290), set loan.term_ledgers = new_term;, loan.interest_residual = 0;, and loan.last_late_fee_ledger = loan.due_date.checked_add(Self::grace_period_ledgers(&env)).expect("grace period overflow");. Add a unit test refinancing a loan with a different new_term and verifying subsequent interest accrual.

Lenguaje dominante
TypeScript
Estrellas
22
Forks
313
Merge medio
5 d 1 h
PR fusionados (30 d)
78

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de LabsCrypt/remitlend

Todos los issues de LabsCrypt/remitlend

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.