-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add vat.live
check to DssVestSuckable pay
#48
Conversation
Hmmm well this is a circuit breaker that requires keeper intervention. We should evaluate if in this case the extra storage load is too sensitive. |
Agree |
Still some backchannel discussion over And this solution potentially adds some more keeper overhead despite the permissionless nature of the function, we should probably have a bigger |
You guys might have finalized on this and if so it's ok, but note that the dai vest contract had only 16 calls in the last 30 days so maybe the cost of doing an external read on each vest is neglible and we can avoid the need for a keeper. |
I've included implementation approaches, following up with Gonza in chat, related to what discussed so far, including a keeper-free, authed |
I think specifically for |
based on the comments so far, I think emerging consensus is leaning towards a |
I'm ok with this. Usage of this is light and this gives peace of mind. |
@brianmcmichael @gbalabasquer @talbaneth The PR should be ready for review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes look ok to me, see small comments.
Not sure if this was debated but I'll mention anyway - this change does have a social aspect as it means ES truncates also vested (but unclaimed) dai immediately.
We can theoritaclly use End.when()
and End.wait()
to still allow payments up to when End.thaw
is possible (with the cost of introducing dependency on End
).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
In general I think it's preferable next time to separate the Echina version upgrade and the disabling of the time mutable tests to separate PRs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm!
…rn + Switch modifier order + others * Switch modifier order (#42) * Follow DSS Slot Pattern (#43) * Add `vat.live` check to DssVestSuckable `pay` (#48) * `kill` * tests(refactor): fetch from chainlog * rename to `cage` * tests(refactor): split interfaces for contract and tests + cleanups * tests(refactor): keep ds-token and gem/dai interfaces separated * suckable(breaker): add `vat.live` check in `pay` * echidna(suckable): add `mutlive` + `vat.live` revert case in `vest` and `vest_amt` * echidna(`v2.0.0`): update config and readme * certora(suckable): add `vat.live` revert case in `vest_revert` and `vest_amt_revert` * readme(suckable): document `vat.suck` circuit breaker * echidna(fix): extend `mutlock` behaviour * echidna(fix): address `add` warnings + remove math `sub` where unused * vest(errmsg): rename error messages to vest-specific contract * tests(refactor): replace `Award` with `DssVest.Award` * echidna(refactor): replace `Award` with `DssVest.Award` * echidna(fix): address math warnings + remove unused math * transferrable(errmsg): add missing error message in `pay` check * echidna(transferrable): update `vest` and `vest_amt` with transfer error message * readme(review): disable `vest()` * echidna(transferrable): fix `vest` and `vest_amt` catch error block * echidna(transferrable): remove transfer error message as won't be reached * echidna(transferrable): cleanup * echidna(mutations): disbale time-based fuzz mutations * tests(doc): add comment for `vat.sin(VOW)` check Co-authored-by: Nazzareno Massari <nazzareno@nazzarenomassari.com> Co-authored-by: Nazzareno Massari <nas@naszam.co>
vat.live
check toDssVestSuckable
pay
vat.suck
circuit breaker in the readme