#49413 [SC-Insight] discrepancy between document and codebase

Submitted on Jul 15th 2025 at 16:27:45 UTC by @danial for Audit Comp | Folks Smart Contract Library

  • Report ID: #49413

  • Report Type: Smart Contract

  • Report severity: Insight

  • Target: https://github.com/Folks-Finance/algorand-smart-contract-library/blob/main/contracts/library/RateLimiter.py

  • Impacts:

    • Contract fails to deliver promised returns, but doesn't lose value

Description

Brief/Intro

discrepancy in code base and document

Vulnerability Details

the document says this about _fill_amount in RateLimiter.py

_fill_amount(byte[32] bucket_id, uint64 amount) returns void. Fills an amount inside a bucket. Will not exceed the bucket’s limit. It emits the BucketFilled event.

says this functioni will get uint64 as amount input however in the codebase it takes uint256:

 def _fill_amount(self, bucket_id: Bytes32, amount: UInt256) -> None:

also about get_rate_duration document says it should return uint256

get_rate_duration(byte[32] bucket_id) returns uint256. Returns the rate duration of the given bucket.

but codebase returns uint64:

get_rate_duration(byte[32] bucket_id) returns uint256. Returns the rate duration of the given bucket.

Impact Details

although this doesnt make direct risk but its a discrepancy that should be fixed hence reported Low severity that might cause issue

References

(https://github.com/Folks-Finance/algorand-smart-contract-library/blob/7673a43fa5183af736b65f17d1a297fdea672059/contracts/library/RateLimiter.py#L96-L97)

(https://github.com/Folks-Finance/algorand-smart-contract-library/blob/7673a43fa5183af736b65f17d1a297fdea672059/contracts/library/RateLimiter.py#L222-L223)

Proof of Concept

Proof of Concept

discrepancy in code base and document

Was this helpful?