Skip to content

Instantly share code, notes, and snippets.

@yuradmt
Created August 11, 2022 15:17
Show Gist options
  • Save yuradmt/e84d4e268129f18194161a4b8870280b to your computer and use it in GitHub Desktop.
Save yuradmt/e84d4e268129f18194161a4b8870280b to your computer and use it in GitHub Desktop.
delegationToZeroAlwaysPossible - aave token v3/certora
rule delegationToZeroAlwaysPossible() {
env e;
require e.msg.value == 0;
require validDelegationState(e.msg.sender); // _balances[e.msg.sender].delegationState < 4
address v_delegateFrom = getVotingDelegate(e.msg.sender);
address p_delegateFrom = getPropositionDelegate(e.msg.sender);
mathint dvbFrom = getDelegatedVotingBalance(v_delegateFrom);
mathint pvbFrom = getDelegatedPropositionBalance(p_delegateFrom);
require dvbFrom >= balanceOf(e.msg.sender) / DELEGATED_POWER_DIVIDER();
require pvbFrom >= balanceOf(e.msg.sender) / DELEGATED_POWER_DIVIDER();
delegate@withrevert(e, 0);
assert !lastReverted;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment