Dria

Swan
NFTHardhat
21,000 USDC
View results
Submission Details
Severity: low
Invalid

No check for _marketParametrs.timestamp = block.timestamp in Swan initializa function

Summary

It is one of the main invariants of the protocol that in every marketParametrs creation contract must do this: _marketParametrs.timestamp = block.timestamp

Function setMarketParametrs implement this behaviour

function setMarketParameters(SwanMarketParameters memory _marketParameters) external onlyOwner {
require(_marketParameters.platformFee <= 100, "Platform fee cannot exceed 100%");
_marketParameters.timestamp = block.timestamp;
marketParameters.push(_marketParameters);
}

But this behavior is not implemented for first marketParametr in initialization

function initialize(
SwanMarketParameters calldata _marketParameters,
LLMOracleTaskParameters calldata _oracleParameters,
// contracts
address _coordinator,
address _token,
address _buyerAgentFactory,
address _swanAssetFactory
) public initializer {
__Ownable_init(msg.sender);
require(_marketParameters.platformFee <= 100, "Platform fee cannot exceed 100%");
// market & oracle parameters
marketParameters.push(_marketParameters);
oracleParameters = _oracleParameters;
// contracts
coordinator = LLMOracleCoordinator(_coordinator);
token = ERC20(_token);
buyerAgentFactory = BuyerAgentFactory(_buyerAgentFactory);
swanAssetFactory = SwanAssetFactory(_swanAssetFactory);
// swan is an operator
isOperator[address(this)] = true;
// owner is an operator
isOperator[msg.sender] = true;
}

Impact

The protocol can only suffer damage if it initializes incorrectly and does not put timestamp on block.timestamp, so severity = low

Tools Used

Manual Review

Recommendations

Add _marketParameters.timestamp = block.timestamp;to initialization function

Updates

Lead Judging Commences

inallhonesty Lead Judge 8 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.