Fix interest rate computation in client (#520)

Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
microwavedcola1 2023-03-27 10:39:01 +02:00 committed by microwavedcola1
parent 26d7ec505c
commit c29c41e20f
1 changed files with 8 additions and 10 deletions

View File

@ -398,21 +398,19 @@ export class Bank implements BankForHealth {
}
const utilization = totalBorrows.div(totalDeposits);
if (utilization.gt(this.util1)) {
if (utilization.lte(this.util0)) {
const slope = this.rate0.div(this.util0);
return slope.mul(utilization);
} else if (utilization.lt(this.util1)) {
const extraUtil = utilization.sub(this.util0);
const slope = this.rate1.sub(this.rate0).div(this.util1.sub(this.util0));
return this.rate0.add(slope.mul(extraUtil));
} else {
const extraUtil = utilization.sub(this.util1);
const slope = this.maxRate
.sub(this.rate1)
.div(I80F48.fromNumber(1).sub(this.util1));
return this.rate1.add(slope.mul(extraUtil));
} else if (utilization.gt(this.util0)) {
const extraUtil = utilization.sub(this.util0);
const slope = this.maxRate
.sub(this.rate0)
.div(I80F48.fromNumber(1).sub(this.util0));
return this.rate0.add(slope.mul(extraUtil));
} else {
const slope = this.rate0.div(this.util0);
return slope.mul(utilization);
}
}