MinterGateway.updateIndex

MinterGateway.updateIndex()MinterGateway.updateIndex()

  • Calculates and updates minterIndexminterIndex AND earnerIndexearnerIndex to their current values

    • Distributes excess M, claimable by ZERO holders, in Distribution Vault excessM=totalOwedMāˆ’totalSupplyā€…ā€Šofā€…ā€ŠMToken,ā€…ā€Šifā€…ā€ŠtotalOwedM>totalSupplyā€…ā€Šofā€…ā€ŠMexcessM = totalOwedM - totalSupply\; of\; M Token,\; if\; totalOwedM > totalSupply\; of\;M

    • Calculates and updates minterIndexminterIndex: minterIndexnow=fn(minterIndexminterIndexLastUpdatedlTimestamp,rate,nowāˆ’minterIndexLastUpdatedTimestamp)minterIndex_{now} =fn(minter_{IndexminterIndexLastUpdatedlTimestamp}, rate, now - minterIndexLastUpdatedTimestamp)

    • Sets latestMinterRate=minterInterestRateModel.getRate()latestMinterRate = minterInterestRateModel.getRate()

    • Sets minterIndexLastUpdatedTimestamp=nowminterIndexLastUpdatedTimestamp = now

    • Calculates and updates earnerIndexearnerIndex : earnerIndexnow=fn(earnerIndexearnerIndexLastUpdatedTimestamp,rate,nowāˆ’earnerIndexLastUpdatedTimestamp)earnerIndex_{now}=fn( earnerIndex_{earnerIndexLastUpdatedTimestamp}, rate, now - earnerIndexLastUpdatedTimestamp)

    • Sets latestEarnerRate=earnerInterestRateModel.getRate()latestEarnerRate = earnerInterestRateModel.getRate()

    • Sets earnerIndexLastUpdatedlTimestamp=nowearnerIndexLastUpdatedlTimestamp = now

NOTE: index2=index1āˆ—e(rateāˆ—timeElapsed),index2 = index1 * e(rate *timeElapsed), using Pade(4, 4) approximation timeElapsed=nowāˆ’indexLastUpdatedTimestamptimeElapsed = now - indexLastUpdatedTimestamp, e(x)=(1+x/2+3(x2)/28+x3/84+x4/1680)/(1āˆ’x/2+3(x2)/28āˆ’x3/84+x4/1680) e(x) = (1 + x/2 + 3(x^2)/28 + x^3/84 + x^4/1680) / (1 - x/2 + 3(x^2)/28 - x^3/84 + x^4/1680)

Last updated

Copyright 2024 M^0 Foundation