The protocol fee is set by the protocol admin per token, this means any token not set to receive protocol fees wont pay any fees, Users can stream tokens that have not been set to pay fees as stream tokens which means they wont pay any fees.
As we can see the protocolFee
is charged per token protocolFee[token] = newProtocolFee;
. If the token being streamed is not added to the protocolFee
array no fees will be paid.
User can exploit this by streaming tokens that have not been added to the protocoFee
array to bypass the protocolFee
Which in turn will lead to reduced revenue for the protocol.
In this proof of concept we set the protocolFee
to a different token from the token being streamed.
-The protocol fee is set per token, which means tokens that haven't been assigned a fee won't incur any charges.
-Users can exploit this by choosing to stream tokens that haven't been assigned a protocol fee, effectively bypassing the fee system.
-This could lead to reduced revenue for the protocol, as users might preferentially use tokens without assigned fees.
-The proof of concept demonstrates that by setting the protocol fee for one token (testToken) but streaming a different token (USDC), the protocol fee amount is zero.
As we can observe here the protocolFeeAmount
is zero which shows the protocol does not receive fees for usdc
tokens.
protocolFeeAmount: 0
Users can use this to avoid paying protocol fees essentially using the protocol streaming service for free.
Ensure all tokens used are charged for fees. Or allow only whitelisted tokens
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.