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.