Function: batchClaimRewards(address receiver, address boostDelegate, IRewards[] rewardContracts)
Claim earned tokens from multiple reward contracts.
Inputs
receiverControl: Controlled by the user.
Constraints: N/A.
Impact: Address to transfer tokens to.
boostDelegateControl: Controlled by the user.
Constraints: N/A.
Impact: Address to delegate boost from during this claim.
rewardContractsControl: Controlled by the user.
Constraints: N/A.
Impact: Array of addresses of registered receiver contracts where the caller has pending rewards to claim.
Branches and code coverage (including function calls)
Intended branches
Successfully claim tokens.
Negative behavior
Reentrancy test.
Function call analysis
batchClaimRewards -> rewardContracts[i].treasuryClaimReward(msg.sender, receiver)What is controllable?
receiver.If return value controllable, how is it used and how can it go wrong? If return value is controllable, the
amountto be claimed will be controlled.What happens if it reverts, reenters, or does other unusual control flow? When it reenters, it would not have a security issue since
pendingRewardFor[msg.sender] = 0;has been done.