Prevent bypassing debt ceiling in isolation mode #35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The issue:
The current debt_ceiling will truncate (asset_decimal - 2) digit when incrementing, it means if the borrow asset is 6 decimals, debt_ceiling will only increment to the precision of 1 cent (10^4).
A user who micro borrows slightly than 1 cent (9,999 unir) each time, for as many times as possible, will bypass the debt ceiling each and every time, which break the protocol integrity.
The fix:
Add ceil_div() in math library
Use ceil_div() to replace simple division in borrow logic, isolation mode, validation logic etc.
Add more test cases