Under normal behavior, the getOrderDetailsString(uint256 _orderId)
function provides a human-readable summary of an order, including the token being sold, its amount, price, deadline, and status.
However, the implementation only supports symbol display for a hardcoded list of core tokens (wETH, wBTC, wSOL). Tokens added later via setAllowedSellToken()
are not handled. As a result, orders using newly allowed tokens display an empty or missing token symbol, reducing off-chain readability and user clarity.
Likelihood: Low
A protocol owner must add a new ERC20 token via setAllowedSellToken
.
A user must create an order with that token and query getOrderDetailsString
.
Impact: Low
Token symbol will be missing in the output string.
This affects only off-chain UX (e.g., logs, frontends using this string).
Does not impact order creation, execution, or funds.
The getOrderDetailsString()
function only recognizes a hardcoded list of core tokens (wETH
, wBTC
, wSOL
) and assigns their symbols manually.
When a new ERC20 token is allowed via setAllowedSellToken()
, any orders created with it will not display a token symbol in the order details string — leading to incomplete or confusing output.
Add a fallback that uses IERC20Metadata(order.tokenToSell).symbol()
to fetch the token symbol dynamically.
Wrap it in a try/catch
block in case the token doesn't implement symbol()
(or fails for any reason), and fallback to "Unknown"
if needed.
This makes the UI/debug output complete for both core and custom 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.