When the MoneyShelf module is upgraded from MoneyShelf to MoneyVault, the USDC funds are not moved to MoneyVault.
This should be handled by EmergencyMigration::migrate, but it misses to move the funds.
The following test demonstrates that after migration, the USDC funds are still in MoneyShelf, not MoneyVault:
USDC funds will remain in the MoneyShelf. This makes the whole migration pointless.
The only way to recover the funds is to upgrade the module MoneyVault back to the original MoneyShelf - provided that MoneyShelf is not already blacklisted by authorities or emptied/controlled by another gang.
Manual reivew, Foundry.
Ensure that USDC funds are moved from the MoneyShelf contract to MoneyVault.
For this, the godfather needs to
withdraw every user's USDC deposit from MoneyShelf by repeatedly calling Laundrette::withdrawMoney;
transfer the USDC directly to MoneyVault (using the standard ERC20 function transfer)
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.