#47116 [SC-Insight] Undocumented Redemption Pool Fee Share potentially leading to confusion

Submitted on Jun 9th 2025 at 03:04:13 UTC by @a090325 for Audit Comp | Flare | FAssets

  • Report ID: #47116

  • Report Type: Smart Contract

  • Report severity: Insight

  • Target: https://github.com/flare-foundation/fassets/blob/main/contracts/assetManager/library/Agents.sol

  • Impacts:

Description

Brief/Intro

It's possible for agents to set/update Redemption Pool Fee Share. This feature is implemented in several files (listed in "references" section). But the docs (https://dev.flare.network/fassets/redemption#redemption-fee) said:

This fee is meant only to cover the agent's transaction fee on the underlying chain, so it is not shared with the collateral pool.

So there's a clear mismatch between the docs and the implemented feature.

Vulnerability Details

  • This feature is exposed through AgentSettingsFacet (https://github.com/flare-foundation/fassets/blob/fc727ee70a6d36a3d8dec81892d76d01bb22e7f1/contracts/assetManager/facets/AgentSettingsFacet.sol) but ultimately this function will be called if an agent decide to set/update Redemption Pool Fee Share: https://github.com/flare-foundation/fassets/blob/fc727ee70a6d36a3d8dec81892d76d01bb22e7f1/contracts/assetManager/library/Agents.sol#L67

 function setRedemptionPoolFeeShareBIPS(
        Agent.State storage _agent,
        uint256 _redemptionPoolFeeShareBIPS
    )
        internal
    {
        require(_redemptionPoolFeeShareBIPS <= SafePct.MAX_BIPS, "value too high");
        _agent.redemptionPoolFeeShareBIPS = _redemptionPoolFeeShareBIPS.toUint16();
    }
  • Besides above functions, there're several other related functions as well. Digging into those functions, I conclude that this (Redemption Pool Fee Share) is a fully implemented feature.

Impact Details

This undocumented feature could cause confusion to:

  • Agents: could use this feature the wrong way.

  • Auditors: could spend time on an unused (but implemented) feature.

References

  • https://dev.flare.network/fassets/redemption#redemption-fee

  • https://github.com/flare-foundation/fassets/blob/fc727ee70a6d36a3d8dec81892d76d01bb22e7f1/contracts/assetManager/library/AgentSettingsUpdater.sol#L15

  • https://github.com/flare-foundation/fassets/blob/fc727ee70a6d36a3d8dec81892d76d01bb22e7f1/contracts/assetManager/library/Agents.sol#L67 https://github.com/flare-foundation/fassets/blob/fc727ee70a6d36a3d8dec81892d76d01bb22e7f1/contracts/assetManager/library/RedemptionRequests.sol#L356

Proof of Concept

Proof of Concept

Please check those files (listed in references) and also the docs (https://dev.flare.network/fassets/redemption#redemption-fee).

Was this helpful?