Flow

Sablier
FoundryDeFi
20,000 USDC
View results
Submission Details
Severity: low
Valid

SablierFlow.sol (SablierFlowBase.sol) is not fully ERC4906 compatible

Summary

ERC4906 is an extension of ERC721 that signals when metadata updates are available for NFTs, allowing for better compatibility with platforms that track these updates. However, currently contract SablierFlow (mostly SablierFlowBase as it's interface (ISablierFlowBase) extendeds IERC4909) doesn't properly support this standart as contract doens't have correct supportsInterface() function. EIP4909

Recommended Mitigation Steps

Add correct supportsInterface() to SablierFlowBase:

diff --git a/src/abstracts/SablierFlowBase.sol b/src/abstracts/SablierFlowBase.sol
index 31cae3e..2414abc 100644
--- a/src/abstracts/SablierFlowBase.sol
+++ b/src/abstracts/SablierFlowBase.sol
@@ -5,6 +5,7 @@ import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import { IERC721Metadata } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
+import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import { UD21x18 } from "@prb/math/src/UD21x18.sol";
import { UD60x18 } from "@prb/math/src/UD60x18.sol";
@@ -107,6 +108,10 @@ abstract contract SablierFlowBase is
CONSTANT FUNCTIONS
//////////////////////////////////////////////////////////////////////////*/
+ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, IERC165) returns (bool) {
+ return interfaceId == bytes4(0x49064906) || super.supportsInterface(interfaceId);
+ }
+
/// @inheritdoc ISablierFlowBase
function getBalance(uint256 streamId) external view override notNull(streamId) returns (uint128 balance) {
balance = _streams[streamId].balance;
Updates

Lead Judging Commences

inallhonesty Lead Judge 8 months ago
Submission Judgement Published
Validated
Assigned finding tags:

EIP4906

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.