Introduction
We express our gratitude to the Launchly team for the collaborative engagement that enabled the execution of this Smart Contract Security Assessment.
Launchly implements a Uniswap v4 hook that intercepts swap execution to collect a fixed 2% fee on swaps involving the chain’s native currency, withdrawing the fee via the PoolManager and forwarding it to an immutable fee recipient through before-swap and after-swap accounting adjustments.
Document | |
|---|---|
| Name | Smart Contract Code Review and Security Analysis Report for Launchly |
| Audited By | Panagiotis Konstantinidis |
| Approved By | |
| Website | https://launchly.app→ |
| Changelog | 13/01/2026 - Preliminary Report |
| 28/01/2026 - Final Report | |
| Platform | Binance Smart Chain (BSC) |
| Language | Solidity |
| Tags | DEX, AMM |
| Methodology | https://docs.hacken.io/methodologies/smart-contracts→ |
Document
- Name
- Smart Contract Code Review and Security Analysis Report for Launchly
- Audited By
- Panagiotis Konstantinidis
- Approved By
- Website
- https://launchly.app→
- Changelog
- 13/01/2026 - Preliminary Report
- 28/01/2026 - Final Report
- Platform
- Binance Smart Chain (BSC)
- Language
- Solidity
- Tags
- DEX, AMM
Review Scope | |
|---|---|
| Repository | https://github.com/ashutoshchaturvedi08/audit-v4-hook→ |
| Initial Commit | db6d9f0e9cd9500527aa3a6d916d0368f55b9ec1 |
| Final Commit | a8f07f47bb03a49c45757b6a1d375ca3e2e68b61 |
Review Scope
- Initial Commit
- db6d9f0e9cd9500527aa3a6d916d0368f55b9ec1
- Final Commit
- a8f07f47bb03a49c45757b6a1d375ca3e2e68b61
Audit Summary
The system users should acknowledge all the risks summed up in the risks section of the report
{Finding_Table?columns=title,severity,status&setting.filter.type=Vulnerability}
Documentation quality
Functional requirements and fee policy assumptions are not clearly specified.
Technical design details are not documented.
Function-level NatSpec comments are minimal and do not fully describe intended behavior and revert conditions.
Code quality
The implementation leverages standard Uniswap v4 core/periphery interfaces and libraries rather than duplicating common functionality.
The code is concise and generally follows Solidity best practices.
Some protocol-specific assumptions are encoded implicitly in logic rather than expressed as explicit invariants.
Test coverage
Code coverage of the project is 44.45% (branch coverage).
Deployment, pool initialization, liquidity minting, and basic swap flows are covered.
Fee collection is exercised for native-input swaps and verified via balance/event checks, but edge cases around exact-output and hook delta semantics are not covered.
Multi-user or adversarial interaction scenarios are not tested.
System Overview
Launchly is a Uniswap v4 hook-based fee module that includes the LaunchlyBNBHook contract, designed to attach to a Uniswap v4 pool and impose an additional hook-level fee on swaps that involve the chain’s native currency. The hook is configured to run on the swap lifecycle only (before and after swap callbacks) and forwards collected fees to an immutable FEE_RECIPIENT address set at deployment time.
Operationally, the hook detects whether the native currency is on the input side or the output side of a swap, computes a 2% fee based on the relevant amount, and collects that fee using poolManager.take() function. To keep the swap’s accounting consistent with the fee extraction, it returns hook deltas (BeforeSwapDelta and the afterSwap delta) that are intended to adjust the swap’s settlement to reflect the deducted fee.
The contract intentionally rejects direct native currency deposits via receive() and fallback() to prevent accidental funds from being sent to the hook address, keeping the hook’s role limited to fee collection during PoolManager-mediated swap execution.
Privileged roles
LaunchlyBNBHookhas no owner or admin roles and no post-deployment privileged configuration functions.The
FEE_RECIPIENTis set once during deployment and is the immutable address to which all hook fees are transferred during swap execution.
Potential Risks
Dependence on Uniswap v4 Core Contracts: The correctness and safety of LaunchlyBNBHook relies heavily on Uniswap v4 core contracts (e.g., PoolManager, hook execution logic, delta accounting). Any vulnerabilities, specification changes, or unexpected behaviour in these external components may directly impact the hook’s correctness, fee accounting, or availability.
Reliance on Uniswap v4 Hook Semantics: The hook’s logic depends on precise Uniswap v4 semantics, such as specified/unspecified currency handling, delta application rules, and swap lifecycle guarantees. Misinterpretation or future changes in these semantics could result in incorrect fee application or swap reverts.
Unaudited or Independently Audited Dependencies: The audit does not cover the internal implementation of Uniswap v4 core or periphery libraries used by the contract. Any issues in these external libraries fall outside the scope of this assessment.
Fee Recipient Availability Risk: The system relies on a single, immutable FEE_RECIPIENT address to receive all collected fees. If this address is misconfigured (e.g., a contract that cannot receive native currency or reverts on receipt), swaps involving fee collection may revert, leading to partial or complete loss of protocol availability.
No Recovery Mechanism: Because the fee recipient is immutable and there are no administrative controls, there is no on-chain mechanism to recover from a misconfigured fee recipient without redeploying the hook and migrating liquidity.
Rounding-Based Fee Evasion for Small Swaps: Fee calculation uses integer division and explicitly skips fee collection when the calculated fee rounds down to zero. This allows very small swaps to avoid paying hook fees entirely. While typically mitigated by gas costs, this may allow fee minimization strategies through trade splitting.
Asymmetric Fee Application Model: Fees are charged pre-swap when native currency is the input and post-swap when native currency is the output. This asymmetric design may lead to different effective fee bases for economically similar swaps routed through different paths or swap modes, potentially affecting predictability for integrators and users.
Lack of Administrative Controls: The contract intentionally has no owner, admin, pause, or upgrade functionality. While this reduces governance risk, it also means that any discovered issues, economic misconfigurations, or integration incompatibilities cannot be addressed without redeploying the hook and updating dependent pools.
Findings
Code ― | Title | Status | Severity | |
|---|---|---|---|---|
| F-2026-1465 | Incorrect BeforeSwapDelta Mapping Causes Fee To Be Applied To Wrong Swap Side | fixed | High | |
| F-2026-1466 | Exact-Output Swaps With Native Input Revert Due To Unsupported amountSpecified Sign | accepted | Medium | |
| F-2026-1465 | AfterSwap Return Delta Applied To Unspecified Currency Breaks Exact-Output Fee Charging | fixed | Medium | |
| F-2026-1466 | Fee Recipient Can Cause Swap Reverts Leading To Operational Denial Of Servic | accepted | Low | |
| F-2026-1469 | Floating Pragma | fixed | Observation |
Appendix 1. Definitions
Severities
When auditing smart contracts, Hacken is using a risk-based approach that considers Likelihood, Impact, Exploitability and Complexity metrics to evaluate findings and score severities.
Reference on how risk scoring is done is available through the repository in our Github organization:
Severity | Description |
|---|---|
Critical | Critical vulnerabilities are usually straightforward to exploit and can lead to the loss of user funds or contract state manipulation. |
High | High vulnerabilities are usually harder to exploit, requiring specific conditions, or have a more limited scope, but can still lead to the loss of user funds or contract state manipulation. |
Medium | Medium vulnerabilities are usually limited to state manipulations and, in most cases, cannot lead to asset loss. Contradictions and requirements violations. Major deviations from best practices are also in this category. |
Low | Major deviations from best practices or major Gas inefficiency. These issues will not have a significant impact on code execution. |
Severity
- Critical
Description
- Critical vulnerabilities are usually straightforward to exploit and can lead to the loss of user funds or contract state manipulation.
Severity
- High
Description
- High vulnerabilities are usually harder to exploit, requiring specific conditions, or have a more limited scope, but can still lead to the loss of user funds or contract state manipulation.
Severity
- Medium
Description
- Medium vulnerabilities are usually limited to state manipulations and, in most cases, cannot lead to asset loss. Contradictions and requirements violations. Major deviations from best practices are also in this category.
Severity
- Low
Description
- Major deviations from best practices or major Gas inefficiency. These issues will not have a significant impact on code execution.
Potential Risks
The "Potential Risks" section identifies issues that are not direct security vulnerabilities but could still affect the project’s performance, reliability, or user trust. These risks arise from design choices, architectural decisions, or operational practices that, while not immediately exploitable, may lead to problems under certain conditions. Additionally, potential risks can impact the quality of the audit itself, as they may involve external factors or components beyond the scope of the audit, leading to incomplete assessments or oversight of key areas. This section aims to provide a broader perspective on factors that could affect the project's long-term security, functionality, and the comprehensiveness of the audit findings.
Appendix 2. Scope
The scope of the project includes the following smart contracts from the provided repository:
Scope Details | |
|---|---|
| Repository | https://github.com/ashutoshchaturvedi08/audit-v4-hook→ |
| Initial Commit | db6d9f0e9cd9500527aa3a6d916d0368f55b9ec1 |
| Final Commit | a8f07f47bb03a49c45757b6a1d375ca3e2e68b61 |
| Whitepaper | https://launchly.app/dashboard/docs→ |
| Requirements | README.md |
| Technical Requirements | README.md |
Scope Details
- Initial Commit
- db6d9f0e9cd9500527aa3a6d916d0368f55b9ec1
- Final Commit
- a8f07f47bb03a49c45757b6a1d375ca3e2e68b61
- Whitepaper
- https://launchly.app/dashboard/docs→
- Requirements
- README.md
- Technical Requirements
- README.md
Assets in Scope
Appendix 3. Additional Valuables
Additional Recommendations
The smart contracts in the scope of this audit could benefit from the introduction of automatic emergency actions for critical activities, such as unauthorized operations like ownership changes or proxy upgrades, as well as unexpected fund manipulations, including large withdrawals or minting events. Adding such mechanisms would enable the protocol to react automatically to unusual activity, ensuring that the contract remains secure and functions as intended.
To improve functionality, these emergency actions could be designed to trigger under specific conditions, such as:
Detecting changes to ownership or critical permissions.
Monitoring large or unexpected transactions and minting events.
Pausing operations when irregularities are identified.
These enhancements would provide an added layer of security, making the contract more robust and better equipped to handle unexpected situations while maintaining smooth operations.
Frameworks and Methodologies
This security assessment was conducted in alignment with recognised penetration testing standards, methodologies and guidelines, including the NIST SP 800-115 – Technical Guide to Information Security Testing and Assessment →, and the Penetration Testing Execution Standard (PTES) →, These assets provide a structured foundation for planning, executing, and documenting technical evaluations such as vulnerability assessments, exploitation activities, and security code reviews. Hacken’s internal penetration testing methodology extends these principles to Web2 and Web3 environments to ensure consistency, repeatability, and verifiable outcomes.