No referral bonus will be distributed even if referral info is set, due to the key of referralInfoMap mapping is wrongly used.
When a user creates taker, referral bonus is expected to be distributed to referrer if the user's referral info is set.
User can call updateReferrerInfo() to set the referral info, and the info will be recorded in referralInfoMap.
However, the key of the referralInfoMap mapping is wrongly used, it should be msg.sender instead of _referrer. As a result, referral bonus will be wrongly distributed. Image the following scenario:
Alice calls updateReferrerInfo and set Bob as her referrer, referralInfoMap is updated as referralInfoMap[Bob] = Bob;
Bob calls updateReferrerInfo and set Cathy as her referrer, referralInfoMap is updated as referralInfoMap[Cath] = Cathy;
When Bob creates taker, the referral bonus is expected to be distributed to Cathy, but because referralInfoMap[Bob] = Bob, the bonus is wrongly distributed to Bob;
Likewise, when Cathy creates taker, no referral bonus is expected but Cathy will receive bonus due to the referral info set by Bob.
Referral bonus is wrongly distributed.
Manual Review
The key of referralInfoMap mapping should be the caller instead of the _referrer.
Valid high severity. There are two impacts here due to the wrong setting of the `refferalInfoMap` mapping. 1. Wrong refferal info is always set, so the refferal will always be delegated to the refferer address instead of the caller 2. Anybody can arbitrarily change the referrer and referrer rate of any user, resulting in gaming of the refferal system I prefer #1500 description the most, be cause it seems to be the only issue although without a poc to fully describe all of the possible impacts
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.