Omniscia MetaSoccer Audit

MetaSoccerScouting Manual Review Findings

MetaSoccerScouting Manual Review Findings

MSS-01M: Non-Standard Usage of ERC721 Functions

Description:

The _startScouting function will allow the _owner of an existing scouting operation to react as it invokes the _safeTransfer function when transferring the scouting to the _owner, however, a direct _mint operation is performed when the scouting is newly created.

Example:

contracts/MetaSoccerScouting.sol
319if (_exists(_scoutId)) {
320 _safeTransfer(address(this), _owner, _scoutId, "");
321} else {
322 _mint(_owner, _scoutId);
323}

Recommendation:

We advise behaviour to be streamlined in both instances and the non-reactive _transfer to be utilized in place of _safeTransfer, disallowing re-entrancies and allowing traditional wallets to interact with the contract. Additionally, we advise the last linked safeTransferFrom function invocation to be revised to a direct transferFrom, ensuring non-smart contract wallets can interact properly with the system.

Alleviation:

A direct _transfer invocation is now utilized in the first instance, however, in the second linked instance the safeTransferFrom function remains utilized thereby partially alleviating this exhibit.