Dreamster Info

Dreamster isn't your average music app. We're passionate music lovers building a revolutionary way to experience the music you adore. Think of it as the future of music.

Dreamster Logo

Team and KYC Verification

The team has securely submitted their personal information to SolidProof.io for verification.

In the event of any fraudulent activities, this information will be promptly reported to the relevant authorities to ensure accountability and compliance.

TrustNet Score

The TrustNet Score evaluates crypto projects based on audit results, security, KYC verification, and social media presence. This score offers a quick, transparent view of a project's credibility, helping users make informed decisions in the Web3 space.

96.00
Poor Excellent

Real-Time Threat Detection

Real-time threat detection, powered by Cyvers.io, is currently not activated for this project.

This advanced feature provides continuous monitoring and instant alerts to safeguard your assets from potential security threats. Real-time detection enhances your project's security by proactively identifying and mitigating risks. For more information, click here.

Security Assessments

Select the audit
"Static Analysis Dynamic Analysis Symbolic Execution SWC Check Manual Review"
Contract address
0x1918...355e
Network
Ethereum - Sepolia Testnet
License N/A
Compiler N/A
Type N/A
Language Solidity
Onboard date 2025/08/26
Revision date 2025/08/27

Summary and Final Words

No crucial issues found

The contract does not contain issues of high or medium criticality. This means that no known vulnerabilities were found in the source code.

Contract owner cannot mint

It is not possible to mint new tokens.

Contract owner cannot blacklist addresses.

It is not possible to lock user funds by blacklisting addresses.

Contract owner cannot set high fees

The fees, if applicable, can be a maximum of 25% or lower. The contract can therefore not be locked. Please take a look in the comment section for more details.

Contract cannot be locked

Owner cannot lock any user funds.

Token cannot be burned

There is no burning within the contract without any allowances

Ownership is not renounced

The owner retains significant control, which could potentially be used to modify key contract parameters.

Contract is upgradeable

The contract uses a proxy pattern or similar mechanism, enabling future upgrades. This can introduce risks if the upgrade mechanism is not securely managed.

Scope of Work

This audit encompasses the evaluation of the files listed below, each verified with a SHA-1 Hash. The team referenced above has provided the necessary files for assessment.

The auditing process consists of the following systematic steps:

  1. Specification Review: Analyze the provided specifications, source code, and instructions to fully understand the smart contract's size, scope, and functionality.
  2. Manual Code Examination: Conduct a thorough line-by-line review of the source code to identify potential vulnerabilities and areas for improvement.
  3. Specification Alignment: Ensure that the code accurately implements the provided specifications and intended functionalities.
  4. Test Coverage Assessment: Evaluate the extent and effectiveness of test cases in covering the codebase, identifying any gaps in testing.
  5. Symbolic Execution: Analyze the smart contract to determine how various inputs affect execution paths, identifying potential edge cases and vulnerabilities.
  6. Best Practices Evaluation: Assess the smart contracts against established industry and academic best practices to enhance efficiency, maintainability, and security.
  7. Actionable Recommendations: Provide detailed, specific, and actionable steps to secure and optimize the smart contracts.

A file with a different Hash has been intentionally or otherwise modified after the security review. A different Hash may indicate a changed condition or potential vulnerability that was not within the scope of this review.

Final Words

The following provides a concise summary of the audit report, accompanied by insightful comments from the auditor. This overview captures the key findings and observations, offering valuable context and clarity.


Ownership Privileges
DreamsterYieldV2.sol
  • The owner can pause/unpause the distribution and claim yield functionality.
  • The owner can recover ETH from the contract.

Note - This Audit report consists of a security analysis of the Dreamster smart contract. This analysis did not include functional testing (or unit testing) of the contract’s logic. Moreover, we only audited the mentioned contract for the Dreamster team. Other contracts associated with the project were not audited by our team. We recommend investors do their own research before investing.

Files and details

Functions
public

/

State variables
public

/

Total lines
of code

/

Capabilities
Hover on items

/

Findings and Audit result

medium Issues | 2 findings

Resolved

#1 medium Issue
Financial Loss and Trapped ETH Due to Precision Loss in Yield Calculation.
DreamsterYieldV2.sol
L197-245
Description

The yield calculation ((epoch.amount * userShares) / epoch.totalSupply) uses standard integer division, which discards any remainder. This causes a small fraction of ETH ("dust") to be lost by the user during the calculation for every single epoch claimed. While the loss per epoch is tiny, it compounds across all users and all epochs, leading to a significant and growing amount of ETH that is mathematically owed to users but is instead left behind, permanently locked and inaccessible within the contract's balance.

Resolved

#2 medium Issue
Owner Can Unilaterally Halt All Yield Distribution and Claiming Functions.
DreamsterYieldV2.sol
L331-333
Description

The contract owner has the exclusive and centralized power to invoke the pause() function at any time. This action effectively freezes the contract's core operations, as both distributeYield and claimYield are protected by the whenNotPaused modifier. This creates a significant centralization risk, as it allows a single entity to unilaterally prevent new yield from being distributed and, more critically, block all users from withdrawing the yield they are rightfully owed. Should the owner's account be compromised, the keys lost, or the owner act maliciously, all user funds within the contract could be frozen indefinitely.

low Issues | 3 findings

Resolved

#1 low Issue
Denial of Service (DoS) via Unbounded Loop in distributeYield.
DreamsterYieldV2.sol
L120-150
Description

The function iterates through an array containing every NFT holder (getHolders()) to snapshot their balance. The gas cost of this loop grows linearly with the number of holders. As the community grows, the gas required to execute this function will inevitably exceed the Ethereum block gas limit, causing the transaction to fail every time. This will make the distributeYield function permanently unusable and halt all future yield distributions to your community.

Resolved

#2 low Issue
Redundant onTokenTransfer Logic Wastes User Gas on Every Transfer
DreamsterYieldV2.sol
L162-180
Description

The onTokenTransfer function is designed to be called by the NFT contract upon every single token transfer. Each time it runs, it updates the epochBalances mapping and consumes gas, which is paid for by the user initiating the transfer. However, this entire process is made redundant by the distributeYield function. When a new epoch is created, distributeYield discards any data tracked by onTokenTransfer and creates a fresh, authoritative snapshot of all holder balances by iterating through them directly. Consequently, the onTokenTransfer function serves no practical purpose in the yield calculation, and its only real effect is to needlessly increase the gas cost of every single transfer, sale, and purchase for your users.

Resolved

#3 low Issue
Redundant Local Variable Assignment.
DreamsterYieldV2.sol
L197-245
Description

The function assigns the state variable currentEpoch to a local variable userLastEpoch on line 233 before using it to update the user's lastClaimedEpoch. Since currentEpoch's value does not change during the function's execution, this assignment is unnecessary. It adds a minor gas cost for the extra operation and slightly reduces the clarity of the code's intent.

informational Issues | 1 findings

Pending

#1 informational Issue
Floating pragma solidity version.
DreamsterYieldV2.sol
L2
Description

Adding the constant version of solidity is recommended, as this prevents the unintentional deployment of a contract with an outdated compiler that contains unresolved bugs.