Omniscia vfat Audit

RamsesGaugeConnector Code Style Findings

RamsesGaugeConnector Code Style Findings

RGC-01C: Redundant Code Duplication

Description:

The RamsesGaugeConnector implementation is identical to the VelodromeGaugeConnector with the main difference being the RamsesGaugeConnector::claim and RamsesGaugeConnector::deposit functions; the former containing an additional IRamsesGauge::claimFees call and the latter containing a new argument to the IRamsesGauge::deposit call.

Example:

contracts/connectors/ramses/RamsesGaugeConnector.sol
15function deposit(
16 Farm calldata farm,
17 address token,
18 bytes memory // _extraData
19) external payable override {
20 uint256 amount = IERC20(token).balanceOf(address(this));
21 SafeTransferLib.safeApprove(token, farm.stakingContract, amount);
22 IRamsesGauge(farm.stakingContract).deposit(amount, 0);
23}
24
25function withdraw(
26 Farm calldata farm,
27 uint256 amount,
28 bytes memory // _extraData
29) external override {
30 IRamsesGauge(farm.stakingContract).withdraw(amount);
31}
32
33function claim(
34 Farm calldata farm,
35 bytes memory _extraData
36) external override {
37 RamsesClaimExtraData memory extraData =
38 abi.decode(_extraData, (RamsesClaimExtraData));
39 IRamsesGauge(farm.stakingContract).claimFees();
40 IRamsesGauge(farm.stakingContract).getReward(
41 address(this), extraData.rewardTokens
42 );
43}

Recommendation:

We advise the contract to inherit from the VelodromeGaugeConnector and to override the VelodromeGaugeConnector::claim and VelodromeGaugeConnector::deposit functions; in the former case by invoking the superlative function (i.e. super.claim(farm, _extraData)) and then proceeding with the additional INuriGauge::claimFees call whilst in the latter by re-implementing the deposit flow.

Alleviation (6ab7af3bb495b817ffec469255ea679b1813eecb):

The vfat team evaluated the level of duplication outlined by this exhibit and opted to retain it as they consider it to be acceptable so as to avoid requiring to move through several dependencies to deduce how a contract operates.