The smart contracts—including Swan, SwanManager, LLMOracleCoordinator, LLMOracleRegistry, LLMOracleManager, BuyerAgent, and SwanAsset—do not implement receive() or fallback() functions.
In Solidity, these special functions are designated to handle plain Ether transfers (receive()) and calls with data that do not match any existing function signatures (fallback()). Without these functions, any attempt to send Ether directly to these contracts without invoking a specific function will result in the transaction reverting.
The Swan protocol is intended to handle transactions using both raw Ether (ETH) and Wrapped Ether (WETH). This dual support implies that users may interact with the protocol using either form of Ether.
A user, intending to send Ether to participate in the Swan protocol, initiates the transfer to one of the Swan protocol's contracts (e.g., Swan, BuyerAgent, SwanAsset).
Since the contracts lack receive() or fallback() functions, the EVM automatically rejects the transaction, causing it to revert.
The user's attempt to interact with the protocol using Ether fails, rendering them unable to perform essential interactions with the protocol.
Users attempting to interact with the protocol using raw Ether will be unable to do so, effectively blocking their participation.
Manual Review
Add both receive() and fallback() functions to all Swan protocol contracts that are intended to accept raw Ether.
Contest details specifically state that: "Payments within Swan are made with an ERC20 compatible token", WETH's address is mentioned as well. Everything is done through ERC20 functionality.
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.