There is no way to recover funds if the stream recipient doesn't or is unable to claim streamed amount.
When creating a stream, all the funds are deposited by the stream sender inside the Lockup
contracts i.e LockupDynamic
, LockupLinear
and LockupTranched
. These funds are released over time for the recipient to withdraw as per the type of stream.
The problem is recipient is a single point for failure. Meaning, recipient can't be changed when created.
Suppose
Stream NFT is non transferable.
USDC/USDT
is deposited as asset, the recipient
gets blacklisted, the streamed funds are stuck forever.
Funds may get stuck inside the contract forever.
Manual Analysis
Have a functionality like clawback()
function in the SablierV2MerkleLockup.sol
where the stream sender is able to recover streamed but not withdrawn funds after certain time from when the stream ends. Let's say about a year from when the stream ends.
https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity
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.