The _getBaseWeight() function doesn't use the account parameter and instead uses address(this) for every call.
The function at any given moment, will give the same result no matter the account for which the weight is asked for.
This is not the intended behaviour as it transpires from the implementation.
This mistake results in all functions that rely on _getBaseWeight() to give wrong results.
These functions include getUserWeight() and earned(), which are crucial to compute the rewards to be given to the users that interact with the gauge system of the protocol, clearly compromising its functionality.
Manual review.
Use the account address parameter instead of address(this).
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.