KVORUM
aaveSource: Aave governor v2 · #166

Rescue Mission Phase 1 Long Executor

executedMar 10, 2023, 11:20 AM UTCby320x329c…3ed4

01Summary

AISummary by Kvorumclaude-haiku-4-5

Activation of Aave Rescue Mission Phase 1 to recover tokens accidentally sent to Aave ecosystem smart contracts (AAVE, LEND, UNI, USDT, stkAAVE). The proposal upgrades the AAVE token and stkAAVE token implementations to include rescue logic that will distribute ~19,845 LEND, ~28,420 AAVE, ~111 UNI, ~15,632 USDT, ~768 AAVE, and ~107 stkAAVE to affected users through AaveMerkleDistributor.

Type
contract upgrade

Key changes

  • Upgrade AAVE token implementation (AaveTokenV2) to include rescue logic for tokens accidentally sent to it(high)
  • Upgrade stkAAVE token implementation (StakedTokenV2Rev4) to include rescue logic for tokens accidentally sent to it(high)
  • Initialize new implementations with rescue amounts for LEND, AAVE, UNI, USDT, and stkAAVE to be sent to AaveMerkleDistributor(high)
  • Recover LEND tokens with automatic conversion to AAVE at 1 AAVE = 100 LEND ratio(medium)

Notable concerns

  • Contract implementations have been upgraded; ensure Certora audit findings are satisfactory
  • New implementations must only differ in rescue logic during initialize function to minimize invasiveness
  • Storage layout compatibility must be verified for both AAVE and stkAAVE tokens
Contracts0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae90x80fB784B7eD66730e8b1DBd9820aFD29931aab030x4da27a545c0c5b758a6ba100e3a049001de870f5
Generated by Kvorum
model: claude-haiku-4-5
provider: anthropic
profile: anthropic-fast-v1
prompt: v1.0
generated: 2mo ago
Read the description ↗

02Description

504 words

Simple Summary

Activation of Aave rescue mission Phase 1, Level 2 (Long) Executor part

Motivation

Since the birth of the Aave ecosystem, multiple people have sent tokens by mistake to incorrect addresses.

In some cases, when the transfer is to another unknown wallet, the tokens are usually locked and lost forever, as it is factually impossible to prove that the transfer was a mistake.

But there are special cases, where the transfer happens to a well-known smart contract address of the ecosystem, for which is simple to understand that the action was really a mistake, as there is no rational reason to send tokens there.

In the case of Aave, the existence of upgradeable smart contracts across the ecosystem makes technically possible the recovery of such tokens sent by mistake. Consequently, given the requests from members of the community affected, we have come up with a plan to “rescue” those funds, providing the affected people a way to recover them.

This initial phase will affect the following:

The LEND sent to the specified contracts will be claimed already as AAVE tokens with the transformation LEND to AAVE already taken into account (1 AAVE = 100 LEND)

Specification

To rescue the tokens specified on Phase 1 that are on AAVE and stkAAVE token contracts, the payload will connect and initialize the new implementations for the AAVE token and the stkAAVE token with appropriate amounts and send them to the AaveMerkleDistributor specified on the Rescue Short Executor Proposal. To be as less invasive as possible, these new implementations only include that extra logic on their initialize() function, with everything else remaining the same.

  • AaveTokenV2: from this new implementations the following tokens will be rescued:
    • LEND: 19845132947543342156792 LEND in WEI (~19845,13 LEND).
    • AAVE: 28420317154904044370842 AAVE in WEI (~28420,32 AAVE).
    • UNI: 110947986090000000000 UNI in WEI (~110,95 UNI).
    • USDT: 15631946764 USDT in WEI (~15631,95 USDT).
  • StakedTokenV2Rev4: from this new implementation the following tokens will be rescued:
    • AAVE: 768271398516378775101 AAVE in WEI (~768,27 AAVE).
    • stkAAVE: 107412975567454603565 stkAAVE in WEI (~107,41 stkAAVE).

References

A list of relevant links like for this proposal:

Security Considerations

The contracts have been audited by Certora, and the report can be found here

Implementation diffs have been generated to see that the new implementations only differ on the rescue logic:

Storage layouts diffs have also been generated for the contracts where the implementation is updated:

  • Aave Token storage layout Diff
  • StkAave Token storage layout Diff

Deployed Contracts

Copyright

Copyright and related rights waived via CC0.

03Mismatch analysis

AIMismatch analysis by Kvorummedium confidenceclaude-sonnet-5
Consistent

The proposal follows the standard Aave Long Executor governance pattern: a single top-level action delegatecalls execute() on a dedicated ProposalPayloadLong contract, which internally performs the detailed logic (upgrading AaveTokenV2 and StakedTokenV2Rev4 implementations, initializing them with rescue amounts, and forwarding tokens to the AaveMerkleDistributor). The decoded calldata shows exactly one action targeting 0x889c0cc3283db588a34e89ad1e8f25b0fc827b4b, which matches the 'ProposalPayloadLong' address explicitly listed in the description's 'Deployed Contracts' section. Since the internal logic of the payload contract is not separately decoded here, we cannot verify byte-for-byte the exact rescue amounts or implementation addresses referenced in the prose (e.g., AaveTokenV2 Implementation, StkAaveTokenV2Rev4 Implementation), but this is expected and standard for this proposal type — the single execute() call is the correct and complete on-chain representation of the described action. No value, target, or scope mismatches are apparent between the description and the one decoded action. Confidence is medium rather than high because the fine-grained rescue amounts and secondary implementation addresses are not independently visible in the decoded action list, so a full line-by-line verification of dollar amounts is not possible from this data alone, but nothing here contradicts the description.

Generated by Kvorum
model: claude-sonnet-5
provider: anthropic
profile: anthropic-strong-v1
prompt: v1.0
generated: 2mo ago
Review the decoded actions ↗

04Actions

1 total
#0fallback()chain 0x1
Target
0x889c…7b4b
Value
0 wei
Function
fallback()
Arguments
{}
Calldata

05Tally

Summed from votes

Voters0
VP participating0
Outcome (current)—
Current support—

06Voters

0 total

No votes recorded yet.

07Forum

No forum thread is confidently linked to this proposal.