Function: optOut(ERC20 strategy, FlywheelCore flywheel)
Performs the check that the
strategyandflywheeladdresses wereoptInbymsg.sender.Accrues rewards for the
msg.senderon a strategy.Decreases the whole amount of
flywheelStrategyGaugeWeight[strategy][flywheel]by the current user balance allocated to the strategy.Deletes the
flywheeladdress fromuserGaugeFlywheels[msg.sender][strategy].Deletes the index of the
flywheeladdress fromuserGaugeflywheelId[msg.sender][strategy][flywheel].
Inputs
strategyConstraints: The
userFlywheelIdshould not be zero for the providedstrategyandflywheel.Impact: The strategy address for which the user will
optOut, but only after theoptIncall.
flywheelConstraints: The
userFlywheelIdshould not be zero for the providedstrategyandflywheel.Impact: The
flywheeladdress for which the user willoptOut, but only after theoptIncall.
Branches and code coverage (including function calls)
Intended branches
The
userGaugeflywheelId== 0 after the call.The
flywheelStrategyGaugeWeightdecremented.
Negative behavior
msg.senderdid notoptInbefore forstrategyandflywheel.msg.senderdid notoptInbefore forstrategy.msg.senderdid notoptInbefore forflywheel.The case when
length != userFlywheelId.
Function call analysis
flywheel.accrue(strategy, msg.sender)What is controllable?
flywheelandstrategy.If return value controllable, how is it used and how can it go wrong? N/A.
What happens if it reverts, reenters, or does other unusual control flow? If reverted, the user will not be able to
optInand the user’s balance will not be able to take into account total supply.
bHermesGauges(owner()).getUserGaugeWeight(msg.sender, address(strategy))What is controllable?
strategy.If return value controllable, how is it used and how can it go wrong? Return the user's allocated weight to that gauge (strategy).
What happens if it reverts, reenters, or does other unusual control flow? No problem --- just view function.