clawback
is implemented to retrieve unclaimed funds from a campaign when necessary, this can be useful in cases where something is not functioning as it should. as the docs state:
Keep in mind that this is merely one example of many situations where clawback
can be invoked:
Inside function clawback, a check is performed for the grace period. This grace period is 7 days after the first claim has been made.
A recipient calls function claim
to claim his funds which will later be unlocked for withdrawal.
Inside function claim
, _checkClaim
is called. Inside _checkClaim
a check is performed to see if the claim
is the first one made in the campaign.
When the recipient calls claim
, a stream
is created, and the funds are transferred to the core contracts.
Furthermore, the team confirms the following, as per the discord message:
This means that if clawback
is called, it will no longer be able to retrieve these funds. It can only retrieve funds from a recipient who has not yet called claim
, since ultimately calling claim
results in funds being transferred.
Considering all of this, the following scenario will always occur whenever clawback
is called after the _firstClaim
has been set:
Bob is the first person in his campaign to call claim
.
_firstClaimTime
is set to the block.timestamp
of Bob's call.
The admin notices an issue with the campaign, which, according to the docs, "can result in "potentially leading to unclaimable assets or unexpected behavior."
The admin calls clawback
, but since Bob has already called claim
, his funds have been transferred to the core contracts.
clawback will be unable to retrieve Bob's funds.
Bob loses his funds.
There is another scenario that does not require a _FirstClaim
to be made:
Alice is a malicious recipient.
Alice notices clawback
being called and frontruns it by calling claim
.
The admin will no longer be able to retrieve her funds.
Alice can either safely withdraw her funds later, or, the funds become stuck and the stream sender loses those funds.
As we can see, whether the environment is honest or dishonest, this will result in a loss of funds, hence the HIGH label.
Manual Review
allow clawback
to retrieve the funds inside the core contracts.
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.