When market parameters are updated via setMarketParameters
, it causes a round increment for all existing buyers. This can cause sellers to lose their listing fees (royaltyFee) as their listings become invalid for the new round. This is a critical issue as it disrupts market operation and seller expectations.
A seller pays a royalty fee to list an asset in the current round.
The owner can update market parameters at any time via setMarketParameters.
When market parameters are updated, all existing buyers increment their round count. This causes the asset to become stranded in the previous round, making it inaccessible to buyers in the new round. The seller loses the listing fee without the possibility of a sale. This is a critical issue as it disrupts market operation and seller expectations.
When new market parameters are added:
All existing buyers increment their round count
Assets listed for the original round become inaccessible
Sellers have already paid royalty fees for these listings
According to the readme
Changing any of the intervals (withdrawInterval, sellInterval, buyInterval) is a disruptive action, it will automatically increase the round count of all existing buyers by 1; this is intended.
This known issue doesn't address the financial loss from listing fees that sellers incur when their assets become stranded in the previous round.
We can see this behavior in the following code snippet:
https://github.com/Cyfrin/2024-10-swan-dria/blob/c8686b199daadcef3161980022e12b66a5304f8e/contracts/swan/BuyerAgent.sol#L341-L373
Then we can see that when the buyer calls oraclePurchaseRequest to request a llm purchase response, it will get a different round number than the seller
HIGH - Multiple critical issues:
Sellers lose listing fees without possibility of sale
Assets become stranded in incorrect rounds
No refund mechanism for affected sellers
Protocol owner can force this state change at any time
Disrupts market operation and seller expectations
A seller lists an asset in round 5 and pays a listing fee
The protocol owner updates market parameters, causing a round increment
The asset becomes stranded in round 5 and is inaccessible to buyers in round 6 when it calls oraclePurchaseRequest
From the existing test file that confirms this behavior:
Add parameter update delay and notification:
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.