KVORUM
aaveSource: Aave governor v2 · #165

Rescue Mission Phase 1 Short Executor

executedMar 4, 2023, 03:58 AM UTCby320x329c…3ed4

01Summary

AISummary by Kvorumclaude-haiku-4-5

Activation of Aave Rescue Mission Phase 1, Level 1 to recover tokens mistakenly sent to ecosystem smart contracts. Users who sent AAVE, LEND, USDT, or UNI to incorrect contract addresses can claim their tokens via a Merkle tree distribution. The proposal deploys AaveMerkleDistributor contract and upgrades LendToAaveMigrator to enable ~849,608 LEND recovery (converted to AAVE equivalent).

Type
protocol addition

Key changes

  • Deploy AaveMerkleDistributor contract to enable token claims for users who mistakenly sent AAVE, stkAAVE, UNI, and USDT to ecosystem contracts(high)
  • Add AAVE, USDT, UNI, and stkAAVE token distributions to the merkle distributor(high)
  • Upgrade LendToAaveMigrator implementation with rescue logic to recover LEND sent to LendToAaveMigrator (~8,007.72 LEND) and LEND contract (~841,600.72 LEND)(high)
  • Convert total recovered LEND (~849,608.44 LEND) to AAVE equivalent at 1 AAVE = 100 LEND ratio(medium)

Notable concerns

  • Only Phase 1, Level 1 (Short) Executor activation; additional phases may follow for other mistaken transfers
  • LEND to AAVE conversion uses fixed 1:100 ratio
  • Contracts underwent Certora audit; security depends on audit quality and implementation correctness
Contracts0xa88c6D90eAe942291325f9ae3c66f3563B93FE100x7b62461a3570c6AC8a9f8330421576e417B71EE70x4A4c73d563395ad827511F70097d4Ef82E653805
Generated by Kvorum
model: claude-haiku-4-5
provider: anthropic
profile: anthropic-fast-v1
prompt: v1.0
generated: 2mo ago
Read the description ↗

02Description

542 words

Simple Summary

Activation of Aave rescue mission Phase 1, Level 1 (Short) 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

For wallets to be able to claim the tokens they sent to the contracts specified on Phase 1, we have created a different Merkle tree for every claimable token (AAVE, stkAAVE, UNI, USDT).

With the roots and amounts, every wallet will be able to claim by calling the AaveMerkleDistributor contract.

This Rescue Short Proposal will be in charge of the activation of the AaveMerkleDistributor contract and the rescue of LEND sent to the LendToAaveMigrator and to LEND contracts.

  • ProposalPayloadShort: This proposal payload will deploy the AaveMerkleDistributor contract and add the AAVE, USDT, UNI and stkAAVE distributions. It will also connect the new implementation of the LendToAaveMigrator. The LendToAaveMigrator will be initialized with the deployed AaveMerkleDistributor and with the LEND amount calculated by adding:
    • LEND amount sent to LendToAaveMigrator: 8007719287288096435418 LEND in WEI (~8007,72 LEND).
    • LEND amount sent to LEND contract: 841600717506653731350931 LEND in WEI (~841600,72 LEND).<p> This amount will directly be accounted by rescuing AAVE, as the LEND contract will not be updated, but as the LendToAaveMigrator has all remaining AAVE, we can assume that it was sent there, and so it can be migrated with the rest of the LEND amount sent.

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:

  • LendToAaveMigrator Diff

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

  • LendToAaveMigrator storage layout Diff

Deployed Contracts

Copyright

Copyright and related rights waived via CC0.

03Mismatch analysis

AIMismatch analysis by Kvorumclaude-sonnet-5
Consistent

The decoded calldata contains a single action: execute() on the ProposalPayloadShort contract at 0x4a4c73d563395ad827511f70097d4ef82e653805. This address matches exactly the 'Deployed Contracts' address given in the description for ProposalPayloadShort. This is the standard Aave governance pattern where a short executor proposal consists of one delegatecall to a payload contract's execute() function, which internally performs the more granular actions (deploying AaveMerkleDistributor, adding distributions, upgrading LendToAaveMigrator, etc.) described in the prose. Since the decoded action list only exposes the top-level call and not the internal logic of the payload contract, we cannot directly verify line-by-line the LEND amounts or Merkle root additions, but this is expected and consistent with how Aave payload-based proposals are decoded — the description is a legitimate summarization of the payload's internal logic, not a misrepresentation of the on-chain action. There is no target mismatch, no unexplained extra action, and no value discrepancers visible at this decoding level. Confidence is high because the single action's target correctly matches the audited, referenced deployed contract described in the proposal.

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
0x4a4c…3805
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.