The deployment of SablierV2MerkleLL and SablierV2MerkleLT uses create op-code , This is valunerable to re-orgs Because there could be funds in these contract as the user need to transfer the assets to SablierV2MerkleLL and SablierV2MerkleLT before creating streams.
The Protocol provide the factory contract which is responsible to deploy the SablierV2MerkleLL and SablierV2MerkleLT contracts for end users to create Airstream Campaign. After deployments of contracts the users nedd to transfer the assets first to these contract after that the user can create new stream via calling claim function. let break this down according to contract flow. here I will focus on SablierV2MerkleLL.
User call the createMerkleLL function to create new MerkleLockup.
MerkleLockup will give max approvals to its core stream type which in this case is Linear.
User transfer the assets to this newly created MerkleLockup contract. this thing is done out side the contract.
User will call claim function to create new stream.
The claim function will call LOCKUP_LINEAR.createWithDurations function. which will call the _create function , _create function apart form other things also transfer the assets from SablierV2MerkleLL contract to LOCKUP_LINEAR contract.
The following case could occur:
User create New SablierV2MerkleLL and transfer 100 tokens to it at block 10.
user create stream for 50 token at block 11.
re-org occur now block 10 gets drop.
User will lose his token hold by SablierV2MerkleLL.
As the Smart contract are suppose to compatible with all EVM based chain. Re-org is known issue on Ethereum and other chains. If this happens the user funds locks in contract will be lost.
Manual Review
Use CREATE2 op-code with the salt compose of user defined number and msg.sender.
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.