The performUpkeep()
function in the WithdrawalPool
, when called by the upkeep, it will always revert.
This is because in checkUpkeep()
the following return values is returned whenever upkeep is needed: return (true, "");
. See here.
The second argument is the performUpkeep()
calldata, which if empty it will be empty.
And this is the performUpkeep()
logic used:
Copy-paste this code in remix and see decoding of empty bytes reverts:
The upkeep in WithdrawalPool
will not work. Even in reverts Chainlink automation charges your subscription a fee, so this will drain the subscription slowly. You can read more about Chainlink fees in automation here.
Return the proper calldata in checkUpkeep()
so performUpkeep()
can work properly. This calldata are the vault IDs that will be withdrawn from in case of needing to withdraw.
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.