Sablier

Sablier
DeFiFoundry
53,440 USDC
View results
Submission Details
Severity: low
Invalid

Non Critical issues (61-68) of 73

NC061 - Library declarations should have Natspec @notice annotations:

Explain to an end user what this does

File: v2-core/src/libraries/NFTSVG.sol
9 library NFTSVG {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0

File: v2-core/src/libraries/SVGElements.sol
8 library SVGElements {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0

File: v2-periphery/src/types/DataTypes.sol
9 library BatchLockup {
91 library MerkleLockup {
113 library MerkleLT {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/types/DataTypes.sol#L0:0

NC062 - Library declarations should have Natspec @dev annotations:

Explain to a developer any extra details

Click to show 7 findings
File: v2-core/src/libraries/Errors.sol
9 library Errors {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/Errors.sol#L0:0

File: v2-core/src/libraries/Helpers.sol
11 library Helpers {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/Helpers.sol#L0:0

File: v2-core/src/libraries/NFTSVG.sol
9 library NFTSVG {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0

File: v2-core/src/libraries/SVGElements.sol
8 library SVGElements {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0

File: v2-core/src/types/DataTypes.sol
30 library Lockup {
100 library LockupDynamic {
198 library LockupLinear {
283 library LockupTranched {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/types/DataTypes.sol#L0:0

File: v2-periphery/src/libraries/Errors.sol
6 library Errors {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/libraries/Errors.sol#L0:0

File: v2-periphery/src/types/DataTypes.sol
9 library BatchLockup {
91 library MerkleLockup {
113 library MerkleLT {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/types/DataTypes.sol#L0:0

NC063 - Modifier definitions should have Natspec @notice annotations:

Explain to an end user what this does

File: v2-core/src/abstracts/SablierV2Lockup.sol
65 modifier notNull(uint256 streamId) {
73 modifier updateMetadata(uint256 streamId) {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/SablierV2Lockup.sol#L0:0

NC064 - Modifier definitions should have Natspec @dev annotations:

Explain to a developer any extra details

File: v2-core/src/abstracts/Adminable.sol
22 modifier onlyAdmin() {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/Adminable.sol#L0:0

File: v2-core/src/abstracts/NoDelegateCall.sol
18 modifier noDelegateCall() {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/NoDelegateCall.sol#L0:0

NC065 - Contract definitions should have Natspec @author annotations:

The name of the author

Click to show 8 findings
File: v2-core/src/SablierV2LockupDynamic.sol
37 contract SablierV2LockupDynamic is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0

File: v2-core/src/SablierV2LockupLinear.sol
36 contract SablierV2LockupLinear is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupLinear.sol#L0:0

File: v2-core/src/SablierV2LockupTranched.sol
34 contract SablierV2LockupTranched is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0

File: v2-core/src/SablierV2NFTDescriptor.sol
20 contract SablierV2NFTDescriptor is ISablierV2NFTDescriptor {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2NFTDescriptor.sol#L0:0

File: v2-periphery/src/SablierV2BatchLockup.sol
17 contract SablierV2BatchLockup is ISablierV2BatchLockup {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2BatchLockup.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLL.sol
17 contract SablierV2MerkleLL is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLL.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLT.sol
17 contract SablierV2MerkleLT is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLockupFactory.sol
19 contract SablierV2MerkleLockupFactory is ISablierV2MerkleLockupFactory {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLockupFactory.sol#L0:0

NC066 - Contract definitions should have Natspec @dev annotations:

Explain to a developer any extra details

Click to show 8 findings
File: v2-core/src/SablierV2LockupDynamic.sol
37 contract SablierV2LockupDynamic is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0

File: v2-core/src/SablierV2LockupLinear.sol
36 contract SablierV2LockupLinear is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupLinear.sol#L0:0

File: v2-core/src/SablierV2LockupTranched.sol
34 contract SablierV2LockupTranched is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0

File: v2-core/src/SablierV2NFTDescriptor.sol
20 contract SablierV2NFTDescriptor is ISablierV2NFTDescriptor {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2NFTDescriptor.sol#L0:0

File: v2-periphery/src/SablierV2BatchLockup.sol
17 contract SablierV2BatchLockup is ISablierV2BatchLockup {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2BatchLockup.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLL.sol
17 contract SablierV2MerkleLL is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLL.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLT.sol
17 contract SablierV2MerkleLT is

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLockupFactory.sol
19 contract SablierV2MerkleLockupFactory is ISablierV2MerkleLockupFactory {

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLockupFactory.sol#L0:0

NC067 - State variable declarations should have Natspec @notice annotations:

Explain to an end user what this does

Click to show 11 findings
File: v2-core/src/SablierV2LockupDynamic.sol
50 uint256 public immutable override MAX_SEGMENT_COUNT;
53 mapping(uint256 id => LockupDynamic.Segment[] segments) internal _segments;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0

File: v2-core/src/SablierV2LockupLinear.sol
47 mapping(uint256 id => uint40 cliff) internal _cliffs;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupLinear.sol#L0:0

File: v2-core/src/SablierV2LockupTranched.sol
45 uint256 public immutable override MAX_TRANCHE_COUNT;
48 mapping(uint256 id => LockupTranched.Tranche[] tranches) internal _tranches;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0

File: v2-core/src/abstracts/Adminable.sol
15 address public override admin;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/Adminable.sol#L0:0

File: v2-core/src/abstracts/NoDelegateCall.sol
10 address private immutable ORIGINAL;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/NoDelegateCall.sol#L0:0

File: v2-core/src/abstracts/SablierV2Lockup.sol
36 UD60x18 public constant override MAX_BROKER_FEE = UD60x18.wrap(0.1e18);
39 uint256 public override nextStreamId;
42 ISablierV2NFTDescriptor public override nftDescriptor;
45 mapping(uint256 id => Lockup.Stream stream) internal _streams;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/SablierV2Lockup.sol#L0:0

File: v2-core/src/libraries/NFTSVG.sol
12 uint256 internal constant CARD_MARGIN = 16;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0

File: v2-core/src/libraries/SVGElements.sol
16 string internal constant BACKGROUND =
19 string internal constant BACKGROUND_COLOR = "hsl(230,21%,11%)";
21 string internal constant FLOATING_TEXT =
24 string internal constant GLOW = '<circle id="Glow" r="500" fill="url(#RadialGlow)"/>';
26 string internal constant LOGO =
29 string internal constant HOURGLASS_BACKGROUND_CIRCLE =
32 string internal constant HOURGLASS_FILL =
35 string internal constant HOURGLASS_STROKE =
38 string internal constant HOURGLASS_LOWER_BULB_LARGE =
41 string internal constant HOURGLASS_LOWER_BULB_SMALL =
44 string internal constant HOURGLASS_UPPER_BULB =
47 string internal constant NOISE =
51 string internal constant SIGN_GE = "&#8805;";
54 string internal constant SIGN_GT = "&gt;";
57 string internal constant SIGN_LT = "&lt;";

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLL.sol
29 ISablierV2LockupLinear public immutable override LOCKUP_LINEAR;
32 LockupLinear.Durations public override streamDurations;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLL.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLT.sol
29 ISablierV2LockupTranched public immutable override LOCKUP_TRANCHED;
32 MerkleLT.TrancheWithPercentage[] internal _tranchesWithPercentages;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0

File: v2-periphery/src/abstracts/SablierV2MerkleLockup.sol
28 IERC20 public immutable override ASSET;
31 bool public immutable override CANCELABLE;
34 uint40 public immutable override EXPIRATION;
37 bytes32 public immutable override MERKLE_ROOT;
40 bytes32 internal immutable NAME;
43 bool public immutable override TRANSFERABLE;
46 string public ipfsCID;
49 BitMaps.BitMap internal _claimedBitMap;
52 uint40 internal _firstClaimTime;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/abstracts/SablierV2MerkleLockup.sol#L0:0

NC068 - State variable declarations should have Natspec @dev annotations:

Explain to a developer any extra details

Click to show 9 findings
File: v2-core/src/SablierV2LockupDynamic.sol
50 uint256 public immutable override MAX_SEGMENT_COUNT;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupDynamic.sol#L0:0

File: v2-core/src/SablierV2LockupTranched.sol
45 uint256 public immutable override MAX_TRANCHE_COUNT;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2LockupTranched.sol#L0:0

File: v2-core/src/abstracts/Adminable.sol
15 address public override admin;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/Adminable.sol#L0:0

File: v2-core/src/abstracts/SablierV2Lockup.sol
36 UD60x18 public constant override MAX_BROKER_FEE = UD60x18.wrap(0.1e18);
39 uint256 public override nextStreamId;
42 ISablierV2NFTDescriptor public override nftDescriptor;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/abstracts/SablierV2Lockup.sol#L0:0

File: v2-core/src/libraries/NFTSVG.sol
12 uint256 internal constant CARD_MARGIN = 16;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/NFTSVG.sol#L0:0

File: v2-core/src/libraries/SVGElements.sol
16 string internal constant BACKGROUND =
19 string internal constant BACKGROUND_COLOR = "hsl(230,21%,11%)";
21 string internal constant FLOATING_TEXT =
24 string internal constant GLOW = '<circle id="Glow" r="500" fill="url(#RadialGlow)"/>';
26 string internal constant LOGO =
29 string internal constant HOURGLASS_BACKGROUND_CIRCLE =
32 string internal constant HOURGLASS_FILL =
35 string internal constant HOURGLASS_STROKE =
38 string internal constant HOURGLASS_LOWER_BULB_LARGE =
41 string internal constant HOURGLASS_LOWER_BULB_SMALL =
44 string internal constant HOURGLASS_UPPER_BULB =
47 string internal constant NOISE =

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/libraries/SVGElements.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLL.sol
29 ISablierV2LockupLinear public immutable override LOCKUP_LINEAR;
32 LockupLinear.Durations public override streamDurations;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-core/src/SablierV2MerkleLL.sol#L0:0

File: v2-periphery/src/SablierV2MerkleLT.sol
29 ISablierV2LockupTranched public immutable override LOCKUP_TRANCHED;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/SablierV2MerkleLT.sol#L0:0

File: v2-periphery/src/abstracts/SablierV2MerkleLockup.sol
28 IERC20 public immutable override ASSET;
31 bool public immutable override CANCELABLE;
34 uint40 public immutable override EXPIRATION;
37 bytes32 public immutable override MERKLE_ROOT;
43 bool public immutable override TRANSFERABLE;
46 string public ipfsCID;

https://github.com/Cyfrin/2024-05-Sablier/tree/main/v2-periphery/src/abstracts/SablierV2MerkleLockup.sol#L0:0

Updates

Lead Judging Commences

inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
Assigned finding tags:

Info/Gas/Invalid as per Docs

https://docs.codehawks.com/hawks-auditors/how-to-determine-a-finding-validity

Support

FAQs

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