LFGROW Info
LFGrow is a complete defi ecosystem, which encompasses a meme coin centric earning platform that brings value to dedicated stakers of our native token. This allows them to profit from short term traders of the token, as well as from revenue generated by the groundbreaking products in our ecosystem.
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.
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
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 not upgradeable
The contract does not use proxy patterns or other mechanisms to allow future upgrades. Its behavior is locked in its current state.
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:
- Specification Review: Analyze the provided specifications, source code, and instructions to fully understand the smart contract's size, scope, and functionality.
- Manual Code Examination: Conduct a thorough line-by-line review of the source code to identify potential vulnerabilities and areas for improvement.
- Specification Alignment: Ensure that the code accurately implements the provided specifications and intended functionalities.
- Test Coverage Assessment: Evaluate the extent and effectiveness of test cases in covering the codebase, identifying any gaps in testing.
- Symbolic Execution: Analyze the smart contract to determine how various inputs affect execution paths, identifying potential edge cases and vulnerabilities.
- Best Practices Evaluation: Assess the smart contracts against established industry and academic best practices to enhance efficiency, maintainability, and security.
- 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
- The owner can set the LFG token address to any arbitrary address, including zero.
- The owner can withdraw any ERC20 token stored in the contract, including user funds.
- The owner can withdraw any ETH stored in the contract.
- The owner can change the bonding recipient's address at any time.
- The owner can enable or disable the entire bonding functionality.
- The owner can add or remove tokens that are eligible for bonding.
- The owner can arbitrarily change token exchange rates at any time.
- The owner can enable or disable the whitelist requirement.
- The owner can add or remove addresses from the whitelist.
Note - This Audit report consists of a security analysis of the LFGROW 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 LFGROW 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 | 5 findings
Pending
#1 medium Issue
Missing 'isContract' check.
The contract lacks a validation check to ensure that specific parameters are contract addresses. Without this check, there is a risk that non-contract addresses (such as externally owned accounts, or EOAs) could be mistakenly set for parameters intended to reference other contracts. This could lead to failures in executing critical interactions within the contract, as EOAs do not support contract-specific functions. To mitigate this, Implement a validation check to ensure that parameters designated as contract addresses are verified as such. This can be done using Solidity’s Address library function isContract, which checks if an address has associated contract code.
Pending
#2 medium Issue
Owner Can Withdraw Reserved LFG Tokens
The withdrawTokens function enables the contract owner to withdraw any ERC20 token, including the LFG token, without restrictions or validation that sufficient tokens remain for users' vesting schedules. This introduces a severe centralization risk where the owner could potentially remove LFG tokens that should be reserved for users who have already bonded ETH or other tokens, causing their claim transactions to fail. Since there are no protective mechanisms, limits on withdrawal amounts, or events to track these actions, users must fully trust the owner, contradicting the trustless principles of blockchain technology. To mitigate this, Implement a reserved token tracking system that prevents owner withdrawals from affecting user claims. This can be achieved by maintaining a separate record of tokens committed to active vesting schedules and restricting the owner from withdrawing beyond the excess amount (contract balance minus reserved tokens).
Pending
#3 medium Issue
Unrestricted Rate Manipulation
The setLFGPerToken function allows the contract owner to arbitrarily modify the exchange rate between input tokens and LFG tokens, including setting it to zero, without any restrictions, validations, or notifications. If the owner sets lfgPerToken to zero for a token, users who bond that token will transfer their assets to the contract but receive a vesting schedule worth 0 LFG tokens. This effectively creates a mechanism where users can unknowingly lose 100% of their contributed value. The absence of minimum value constraints, events for rate changes, and timelocks for parameter modifications creates a severe economic risk and potential attack vector that contradicts the trustless nature of decentralized finance. To mitigate this, mplement safeguards around rate changes, including minimum value constraints that prevent rates from dropping below a reasonable threshold, mandatory timelock delays (e.g., 24-48 hours) before rate changes take effect, and events that notify users of upcoming changes.
Pending
#4 medium Issue
Missing Non-reentrant check.
The contract exhibits reentrancy vulnerabilities in several key functions. In bondETH(), the external ETH transfer to bondingRecipient occurs before state updates in _bond(), allowing potential reentry. More severely, bondToken() uses safeTransferFrom before updating state, creating a high-risk entry point for malicious tokens to exploit. While claim() follows the checks-effects-interactions pattern, it lacks return value validation for token transfers. These vulnerabilities could enable attackers to create multiple vesting schedules for a single deposit, manipulate internal accounting state, or bypass intended distribution limits. To mitigate this, Implement a reentrancy guard modifier on all external functions to prevent reentrant calls. Restructure functions to follow the checks-effects-interactions pattern strictly, ensuring all state changes occur before external calls. Use SafeERC20 for all token transfers and validate return values. Consider implementing a pull-payment pattern for token claims to further reduce reentrancy risk.
Pending
#5 medium Issue
No Balance Verification Before Claim
The claim() function updates vesting schedule state before verifying that sufficient LFG tokens exist in the contract to fulfill the claim. This critical vulnerability violates the atomicity principle where a transaction should either completely succeed or have no effect. When the contract has insufficient token balance, the transaction will revert after state changes have occurred, creating inconsistencies between recorded claims and actual token transfers. This issue is particularly dangerous because it can prevent users from receiving tokens they're entitled to, waste gas on failed transactions, and create accounting discrepancies that undermine the contract's reliability. To mitigate this, Implement a pre-transfer balance check to ensure the contract holds sufficient LFG tokens before modifying any state variables. Additionally, verify the transfer's success by checking its return value. The improved implementation would: 1) validate claim eligibility, 2) check contract token balance, 3) update vesting state only after confirming sufficient balance, 4) verify transfer success, and 5) emit an event to track the claim.
low Issues | 2 findings
Pending
#1 low Issue
Missing events arithmetic.
It is recommended to emit all the critical parameter changes.
Pending
#2 low Issue
Missing zero or dead address check.
It is recommended to check that the address cannot be set to zero or dead address.