Kelp DAO | rsETH - catellatech's results

A collective DAO designed to unlock liquidity, DeFi and higher rewards for restaked assets through liquid restaking.

General Information

Platform: Code4rena

Start Date: 10/11/2023

Pot Size: $28,000 USDC

Total HM: 5

Participants: 185

Period: 5 days

Judge: 0xDjango

Id: 305

League: ETH

Kelp DAO

Findings Distribution

Researcher Performance

Rank: 147/185

Findings: 1

Award: $2.76

QA:
grade-b

🌟 Selected for report: 0

🚀 Solo Findings: 0

Awards

2.7592 USDC - $2.76

Labels

bug
grade-b
insufficient quality report
QA (Quality Assurance)
Q-96

External Links

QA report for Kelp DAO contest by Catellatech

[QA-01] onlyLRTManager can approve the max asset in NodeDelegator::maxApproveToEigenStrategyManager even when the contract is paused

Consider add the whenNotPaused modifier to the function NodeDelegator::maxApproveToEigenStrategyManager as well.

    function maxApproveToEigenStrategyManager(address asset)
        external
        override
        onlySupportedAsset(asset)
        onlyLRTManager
    {
        address eigenlayerStrategyManagerAddress = lrtConfig.getContract(LRTConstants.EIGEN_STRATEGY_MANAGER);
        IERC20(asset).approve(eigenlayerStrategyManagerAddress, type(uint256).max);
    }

[QA-02] Remove/resolve the comments like the following

in LRTDepositPool::getAssetDistributionData in line 78 the following comment it was not remove // Question: is here the right place to have this? Could it be in LRTConfig?. Please remove or resolve that comment.

[QA-03] in the LRTConfig.sol contract the team did not consider adding a function to remove assets

Context: The contract handles addNewSupportedAsset and updateAssetStrategy but does not account for a scenario where they have to remove an asset from the LRTConfig; in that case, it won't be possible.

[QA-04] Inconsistent Use of NatSpec

NatSpec is a boon to all Solidity developers. Not only does it provide a structure for developers to document their code within the code itself, it encourages the practice of documenting code. When future developers read code documented with NatSpec, they are able to increase their capacity to understand, upgrade, and fix code. Without code documented with NatSpec, that capacity is hindered.

The Centrifuge codebase does have a high level of documentation with NatSpec. However there are numerous instances of functions missing NatSpec.

Possible Risks

  1. Lack of understanding of code without adequate documentation.
  2. Difficulty in understanding, upgrading, and fixing code without documentation.
  • Practice consistent use of NatSpec on all parts of the project codebase.
  • Include the need for NatSpec comments for code reviews to pass.

[QA-05] Crucial information is missing on important functions in all contracts

In the constructor functions it is not specified in the documentation if the admin/roles will be an EOA or a contract. Consider improving the docstrings to reflect the exact intended behaviour, and using Address.isContract function from OpenZeppelin’s library to detect if an address is effectively a contract.

#0 - c4-pre-sort

2023-11-18T00:54:08Z

raymondfam marked the issue as insufficient quality report

#1 - c4-judge

2023-12-01T16:29:51Z

fatherGoose1 marked the issue as grade-b

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter