59841 sc low the newly added level cannot have its boost price set because the updatelevelboostpriceperblock function is not exposed
Submitted on Nov 16th 2025 at 10:01:13 UTC by @shaflow1 for Audit Comp | Vechain | Stargate Hayabusa
Report ID: #59841
Report Type: Smart Contract
Report severity: Low
Target: https://github.com/immunefi-team/audit-comp-vechain-stargate-hayabusa/tree/main/packages/contracts/contracts/StargateNFT/StargateNFT.sol
Description
Brief/Intro
In the StargateNFT contract, the LEVEL_OPERATOR_ROLE is allowed to call addLevel to add new levels. However, since the updateLevelBoostPricePerBlock function is not exposed, the newly added level cannot have its BoostPricePerBlock set. As a result, users can bypass the maturity period for free and start delegating immediately.
Vulnerability Details
The addLevel function is implemented as follows:
/// @inheritdoc IStargateNFT
function addLevel(
DataTypes.LevelAndSupply memory _levelAndSupply
) public onlyRole(LEVEL_OPERATOR_ROLE) {
Levels.addLevel(_getStargateNFTStorage(), _levelAndSupply);
}LEVEL_OPERATOR_ROLE can call addLevel to add a new level. This function sets the level’s cap, level data, and circulating supply, but it does not set the boostPricePerBlock.
In the library, the updateLevelBoostPricePerBlock function used to update boostPricePerBlock is only called during the V3 contract initialization. After that, it cannot be invoked. As a result, no one is able to set the boostPricePerBlock for newly added levels.
Reference lines:
StargateNFT addLevel: https://github.com/immunefi-team/audit-comp-vechain-stargate-hayabusa/blob/e9c0bc9b0f24dc0c44de273181d9a99aaf2c31b0/packages/contracts/contracts/StargateNFT/StargateNFT.sol#L302
Levels library reference: https://github.com/immunefi-team/audit-comp-vechain-stargate-hayabusa/blob/e9c0bc9b0f24dc0c44de273181d9a99aaf2c31b0/packages/contracts/contracts/StargateNFT/libraries/Levels.sol#L180
Impact Details
For newly added levels, boostPricePerBlock is always zero, so users can call the boost function to skip the maturity period for free.
Proof of Concept
Was this helpful?