The FlapTaxTokenV3 contract is an upgradeable ERC20 token designed with a dynamic tax mechanism, anti-farmer features, and a state machine to manage its lifecycle. It leverages OpenZeppelin's upgradeable contracts for robustness. The audit identified a high level of centralization of control by the owner, critical dependencies on external contracts, and a potential integer overflow in a time-based calculation. The contract implements reentrancy guards for its tax liquidation process, which is a positive security practice.

On-chain security analysis — is it a scam or legit?
Is Giggle Mascot Safe?
Not verified
This record has not gone through deep verification and is not being monitored. The score is a dated snapshot — the token’s risk can change at any time.Own this token? Put it under verification →The FlapTaxTokenV3 contract is an upgradeable ERC20 token designed with a dynamic tax mechanism, anti-farmer features, and a state machine to manage its lifecycle.
Read the full analysis- Proxy contract
- Non-standard proxy storage
- Token age < 30 days
- 1 High finding(s) from audit
- 2 Medium finding(s) from audit
- 1 Low finding(s) from audit
Exact factors
- Proxy contract (upgradeable — admin can replace logic)
- Non-standard proxy storage (Etherscan-confirmed)
- Token age < 30 days (still settling)
- 1 High finding(s) from audit
- 2 Medium finding(s) from audit
- 1 Low finding(s) from audit
Each factor is an on-chain fact recorded at the time of this analysis. The score is computed from them by a deterministic function, so the same contract returns the same score for anyone who runs the audit. How scores are computed
Security Checklist
as of audit · Sep 4Holders
as of audit · Sep 4, 2026- Contractstreasury, vesting, bridge, staking10.1%
- Walletsanonymous holders, free to sell8.9%
- Everyone elsethe rest of the supply81.0%
How holder types affect the score
Share held by contracts — treasury, vesting, bridge or staking — is discounted against share held by wallets when the score is computed: a contract cannot decide to sell the way an anonymous holder can, though it can still be drained or voted to sell. Effective concentration is the figure the risk score is actually calculated from.
Holder balances as recorded by the audit of Sep 4, 2026
Liquidity
as of audit · Sep 4The risk score reads depth across every pair.
The LP tokens of the analysed pool are locked or burned.
0x00f9…1bcdNo privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighCentralization of Control
The Owner role has significant control over critical contract parameters and state transitions. Functions like startMigration, finalizeMigration, and the ability to set taxProcessor, dividendContract, v2Router, quoteToken, and pools are restricted to the owner. This centralization introduces a single point of failure and a high trust assumption in the owner's integrity and operational security, as a compromised owner key could lead to severe economic manipulation or system disruption.H-01
Issue
The Owner role has significant control over critical contract parameters and state transitions. Functions like startMigration, finalizeMigration, and the ability to set taxProcessor, dividendContract, v2Router, quoteToken, and pools are restricted to the owner. This centralization introduces a single point of failure and a high trust assumption in the owner's integrity and operational security, as a compromised owner key could lead to severe economic manipulation or system disruption.
Fix
Consider implementing a multi-signature wallet for the Owner role to distribute control and enhance security. For highly sensitive operations, explore mechanisms for decentralized governance or time-locked changes to provide transparency and allow community oversight.
Status
Unresolved
MediumPotential Integer Overflow in antiFarmerExpirationTime
The antiFarmerExpirationTime is stored as a uint48. In the finalizeMigration function, this value is set by block.timestamp + antiFarmerDuration. If block.timestamp + antiFarmerDuration exceeds the maximum value of uint48 (approximately 2.8e14 seconds or ~8921 years from epoch), an integer overflow will occur. This would result in an incorrect, much smaller expiration time, potentially disrupting the intended anti-farmer mechanism and leading to unexpected behavior.M-01
antiFarmerExpirationTimeIssue
The antiFarmerExpirationTime is stored as a uint48. In the finalizeMigration function, this value is set by block.timestamp + antiFarmerDuration. If block.timestamp + antiFarmerDuration exceeds the maximum value of uint48 (approximately 2.8e14 seconds or ~8921 years from epoch), an integer overflow will occur. This would result in an incorrect, much smaller expiration time, potentially disrupting the intended anti-farmer mechanism and leading to unexpected behavior.
Fix
Implement a require statement to ensure that block.timestamp + antiFarmerDuration does not exceed type(uint48).max. Alternatively, consider using a larger integer type (e.g., uint64) for antiFarmerExpirationTime if the intended duration could realistically exceed the uint48 limit.
Status
Unresolved
MediumCritical External Dependencies
The FlapTaxTokenV3 contract relies heavily on external contracts, specifically ITaxProcessor and IDividend, for its core tax processing and dividend distribution logic. The security and correctness of these external contracts are paramount to the overall system's integrity. If these external contracts contain vulnerabilities, are maliciously implemented, or are controlled by a compromised entity, they could lead to fund loss, incorrect tax calculations, or disruption of dividend distribution.M-02
Issue
The FlapTaxTokenV3 contract relies heavily on external contracts, specifically ITaxProcessor and IDividend, for its core tax processing and dividend distribution logic. The security and correctness of these external contracts are paramount to the overall system's integrity. If these external contracts contain vulnerabilities, are maliciously implemented, or are controlled by a compromised entity, they could lead to fund loss, incorrect tax calculations, or disruption of dividend distribution.
Fix
Conduct thorough security audits of the ITaxProcessor and IDividend contracts. Ensure that their implementations are robust, secure, and align with the expected behavior. Implement strict access control on these external contracts and consider mechanisms to update their addresses safely in case of a vulnerability or upgrade.
Status
Unresolved
LowStorage Collision Risk in Upgrades
While the contract correctly uses OpenZeppelin's Initializable pattern for upgradeability, adding new state variables to the contract in future implementations without careful consideration of storage slot packing, especially with the PackedPoolState struct, could lead to storage collisions. If new variables are inserted before existing ones or if the PackedPoolState struct's internal layout changes in a way that shifts its slot, it could corrupt existing data.L-01
Issue
While the contract correctly uses OpenZeppelin's Initializable pattern for upgradeability, adding new state variables to the contract in future implementations without careful consideration of storage slot packing, especially with the PackedPoolState struct, could lead to storage collisions. If new variables are inserted before existing ones or if the PackedPoolState struct's internal layout changes in a way that shifts its slot, it could corrupt existing data.
Fix
Adhere strictly to OpenZeppelin's upgradeable storage layout guidelines. When adding new state variables, always append them to the end of the contract's storage. For complex structs like PackedPoolState, ensure any modifications are backward-compatible or use a dedicated storage gap to prevent future collisions.
Status
Unresolved
InfoGas Inefficiency in _liquidateTax State Updates
The _liquidateTax function reads poolState into a local variable currentPoolState, modifies it, writes it back to storage (poolState = currentPoolState), then reads it again (after the external call), modifies it, and writes it back again. While the multiple reads and writes are part of a robust reentrancy guard, this pattern involves multiple SLOAD and SSTORE operations within a single function call. This could be slightly optimized for gas by consolidating storage writes if the reentrancy guard logic allows for it without compromising security.I-01
_liquidateTax State UpdatesIssue
The _liquidateTax function reads poolState into a local variable currentPoolState, modifies it, writes it back to storage (poolState = currentPoolState), then reads it again (after the external call), modifies it, and writes it back again. While the multiple reads and writes are part of a robust reentrancy guard, this pattern involves multiple SLOAD and SSTORE operations within a single function call. This could be slightly optimized for gas by consolidating storage writes if the reentrancy guard logic allows for it without compromising security.
Fix
Review the _liquidateTax function to determine if the poolState variable can be written to storage fewer times without compromising the reentrancy guard. For example, if the second currentPoolState = poolState; read is not strictly necessary for security after the external call, the final poolState = currentPoolState; could potentially be combined.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract demonstrates good technical architecture, utilizing OpenZeppelin's upgradeable standards and a well-defined state machine for its tax and anti-farmer mechanisms. The _liquidateTax function includes a robust reentrancy guard using a notLiquidating flag, which is crucial given its external calls. However, a potential integer overflow exists in the antiFarmerExpirationTime calculation, which could lead to incorrect anti-farmer logic (7.2 Code Security). Additionally, the system's reliance on external ITaxProcessor and IDividend contracts introduces significant external dependency risks (7.6 External).
The contract exhibits a high degree of centralization, with the Owner role possessing extensive control over critical parameters and state transitions (7.5 Governance). The owner can initiate migration phases, set addresses for the taxProcessor, dividendContract, v2Router, and quoteToken, and define pools. This centralized control means the economic model and core functionality are heavily dependent on the owner's integrity and operational security (7.4 Economic).
The contract correctly implements OpenZeppelin's Initializable pattern for upgradeability, including _disableInitializers() in the constructor and the initializer modifier. However, as with all proxy implementations, future upgrades must carefully manage storage layout to prevent collisions, especially considering the PackedPoolState struct (7.7 Upgrades). Adding new state variables without proper slot management could lead to unexpected behavior or data corruption.
It is recommended to implement robust validation and constraints for input parameters, particularly for time-related values, to prevent potential overflows.
A comprehensive audit of all external dependencies, specifically the ITaxProcessor and IDividend contracts, is crucial to ensure the overall security and economic stability of the system. Consider decentralizing critical owner-controlled functions or implementing a multi-signature wallet for sensitive operations to mitigate centralization risks.
Contract & Record
Free for any token on the record. It links to this page and always shows the current score and the date it was checked.
- Sep 4, 202613Low
- Aug 11, 202616Low
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Frequently Asked Questions
What is the MAX contract address?
The Giggle Mascot (MAX) contract on BNB Chain is 0xe9bc5c6a86caa44fd7b469bf3cc7c563e4f77777. Compare it with the address the project itself publishes before trading: other contracts can carry the same name and ticker.
Is Giggle Mascot a scam?
Quantum Audit's risk score for Giggle Mascot is 13/100 (Low risk) as of Sep 4, 2026, computed by a deterministic function from on-chain facts — Contract verified: Verified; Ownership: Renounced; Mint: No mint; Liquidity lock: Locked; Upgradeability: Upgradeable. A score is a dated snapshot of those facts, not a guarantee; each one is listed on this page.
Is MAX liquidity locked?
Liquidity lock: Locked (as of Sep 4, 2026). Total DEX liquidity: $505.1K.
Who holds MAX?
As of Sep 4, 2026, the 10 largest holders own 19.0% of the supply. The Holders section on this page shows who they are by holder type.
Would You Like a More Detailed Audit of Giggle Mascot?
Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, with every scoring factor shown.
Get Detailed Audit Is this your token? Publish your own audit on this page