L2ContractMigrationFacet is used to migrate Silo deposits from smart contracts. Owner of that smart contract calls this contract to migrate.
Problem is that during migration it sets all the important values via =
instead of +=
.
Here you can see that it overrides values of several important variables:
s.accts[account].deposits[depositId].amount
s.accts[account].deposits[depositId].bdv
s.accts[account].mowStatuses[depositData.token].bdv
s.sys.silo.balances[depositData.token].deposited
s.sys.silo.balances[depositData.token].depositedBdv
There are several impact depending on certain variable:
Overriden s.sys.deposits
makes account to lose all his benefits from previous deposits. This single impact is already can be High.
Overriden s.accts.mowStatuses.bdv
makes user to lose future rewards in Silo because BDV of his deposits is lower than actual.
Overriden s.sys.silo.balances
breaks Gauge point system calculations, because they are heavily dependant on Silo balances.
Manual Review
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.