The FlapTaxTokenV3 contract implements an upgradeable ERC20 token with dynamic tax mechanisms and state transitions. It utilizes OpenZeppelin's upgradeable contracts for security and follows a structured design with a packed state variable. Key findings include high centralization risk due to owner privileges over state transitions and initial token supply, and significant dependency on external contracts for tax processing. Medium risks relate to immutable liquidation thresholds and reliance on block.timestamp for critical state changes. Overall, the contract demonstrates good use of standard libraries but requires careful management of external dependencies and owner responsibilities.

Early-stage security check — honeypot & rug-pull analysis
Is 金蟾 a Scam?
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 implements an upgradeable ERC20 token with dynamic tax mechanisms and state transitions.
Read the full analysis- Proxy contract
- Non-standard proxy storage
- Top-10 concentration > 20%
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- Liquidity < $50k
- LP top1 unlocked holder = 100.0%
- LP top3 unlocked holders = 100.0%
- Token age < 24h
- 2 High finding(s) from audit
- 2 Medium finding(s) from audit
Exact factors
- Proxy contract (upgradeable — admin can replace logic)
- Non-standard proxy storage (Etherscan-confirmed)
- Top-10 concentration > 20% (51.4% total → 27.5% effective; 11.5% in EOAs, 39.9% in contracts — mild)
- Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
- Liquidity < $50k ($17,375 across 1 pairs — thin market)
- LP top1 unlocked holder = 100.0% (independent LP — depth risk)
- LP top3 unlocked holders = 100.0% (independent LP — depth risk)
- Token age < 24h (brand new — bot activity, unproven)
- 2 High finding(s) from audit
- 2 Medium 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, staking39.9%
- Walletsanonymous holders, free to sell11.5%
- Everyone elsethe rest of the supply48.6%
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 not locked or burned, so whoever holds them can withdraw that liquidity.
0x14e5…be4aNo privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.
Security Findings
HighExternal Contract Dependency Risk
The _liquidateTax function makes an external call to taxProcessor.processTax(taxAmount). The security and correctness of the ITaxProcessor contract are paramount. If taxProcessor is malicious, buggy, or itself vulnerable (e.g., to reentrancy or unauthorized access), it could lead to the loss of all accumulated tax funds held by FlapTaxTokenV3. While a reentrancy guard (notLiquidating) is present for _liquidateTax, it does not mitigate risks stemming from the taxProcessor's own logic or its interactions with other contracts. (7.6 External)H-01
Issue
The _liquidateTax function makes an external call to taxProcessor.processTax(taxAmount). The security and correctness of the ITaxProcessor contract are paramount. If taxProcessor is malicious, buggy, or itself vulnerable (e.g., to reentrancy or unauthorized access), it could lead to the loss of all accumulated tax funds held by FlapTaxTokenV3. While a reentrancy guard (notLiquidating) is present for _liquidateTax, it does not mitigate risks stemming from the taxProcessor's own logic or its interactions with other contracts. (7.6 External)
Fix
Thoroughly audit the ITaxProcessor contract and any other external contracts it interacts with. Ensure robust access controls and security measures are in place for taxProcessor. Consider implementing a timelock for changing critical external contract addresses if they were mutable (though in this case, taxProcessor is immutable after initialization).
Status
Unresolved
HighCentralized Control over Token State Transitions
The startMigration and finalizeMigration functions, which control significant transitions in the token's PoolState (e.g., from BondingCurve to Migrating to TaxEnforcedAntiFarmer), are restricted to onlyOwner. This grants the owner considerable power to alter the token's economic behavior, including tax enforcement and anti-farmer mechanisms, without community input or a timelock. Additionally, the initialize function mints the entire maxSupply to the deployer, concentrating initial token supply with the owner. (7.3 Access Control, 7.5 Governance)H-02
Issue
The startMigration and finalizeMigration functions, which control significant transitions in the token's PoolState (e.g., from BondingCurve to Migrating to TaxEnforcedAntiFarmer), are restricted to onlyOwner. This grants the owner considerable power to alter the token's economic behavior, including tax enforcement and anti-farmer mechanisms, without community input or a timelock. Additionally, the initialize function mints the entire maxSupply to the deployer, concentrating initial token supply with the owner. (7.3 Access Control, 7.5 Governance)
Fix
Consider decentralizing control over critical state transitions through a multi-signature wallet or a decentralized autonomous organization (DAO). Implement a timelock for such sensitive operations to provide users with a window to react. Document the owner's capabilities clearly to manage user expectations.
Status
Unresolved
MediumImmutable Liquidation Threshold
The liquidationThreshold within the PackedPoolState struct is initialized to START_LIQ_THRESHOLD and remains constant throughout the contract's lifecycle. This fixed threshold dictates when accumulated tax (balanceOf(address(this))) is processed by the taxProcessor. If market conditions or the protocol's needs change, this immutable threshold might become suboptimal, leading to inefficient tax processing (e.g., processing too frequently with small amounts or accumulating excessively large amounts before processing). The initialLiquidationThreshold variable is also set but unused. (7.4 Economic)M-01
Issue
The liquidationThreshold within the PackedPoolState struct is initialized to START_LIQ_THRESHOLD and remains constant throughout the contract's lifecycle. This fixed threshold dictates when accumulated tax (balanceOf(address(this))) is processed by the taxProcessor. If market conditions or the protocol's needs change, this immutable threshold might become suboptimal, leading to inefficient tax processing (e.g., processing too frequently with small amounts or accumulating excessively large amounts before processing). The initialLiquidationThreshold variable is also set but unused. (7.4 Economic)
Fix
Consider making the liquidationThreshold configurable by a trusted entity (e.g., owner, multisig, or governance) to allow for adjustments based on evolving protocol requirements or market dynamics. If it's intended to be immutable, ensure this design choice is well-justified and documented. Remove the unused initialLiquidationThreshold variable to improve code clarity.
Status
Unresolved
MediumReliance on block.timestamp for Critical State Transitions
The _liquidateTax function uses block.timestamp to determine if taxExpirationTime or antiFarmerExpirationTime have passed, triggering changes in the PoolState (e.g., to TaxFree or TaxEnforced). While block.timestamp is suitable for relative time checks, miners can manipulate it within a small window (up to 900 seconds on Ethereum, though BSC might differ). This could potentially allow a miner or a sophisticated attacker to slightly influence the timing of these state transitions to their economic advantage, for example, by delaying a block to avoid a tax or accelerating it to trigger a specific state. (7.2 Code Security, 7.4 Economic)M-02
block.timestamp for Critical State TransitionsIssue
The _liquidateTax function uses block.timestamp to determine if taxExpirationTime or antiFarmerExpirationTime have passed, triggering changes in the PoolState (e.g., to TaxFree or TaxEnforced). While block.timestamp is suitable for relative time checks, miners can manipulate it within a small window (up to 900 seconds on Ethereum, though BSC might differ). This could potentially allow a miner or a sophisticated attacker to slightly influence the timing of these state transitions to their economic advantage, for example, by delaying a block to avoid a tax or accelerating it to trigger a specific state. (7.2 Code Security, 7.4 Economic)
Fix
For highly sensitive time-dependent logic where even minor manipulation could have significant economic impact, consider using an oracle-based timestamp (e.g., Chainlink Keepers or similar decentralized time services) if precise, unmanipulable timing is critical. Alternatively, ensure the economic impact of minor block.timestamp manipulation is acceptable for the protocol.
Status
Unresolved
InfoUnused State Variable initialLiquidationThreshold
The state variable initialLiquidationThreshold is set during the initialize function but is never subsequently read or used anywhere else in the contract. This indicates dead code, which can increase contract size, deployment costs, and potentially lead to confusion for future developers. (7.2 Code Security)I-01
initialLiquidationThresholdIssue
The state variable initialLiquidationThreshold is set during the initialize function but is never subsequently read or used anywhere else in the contract. This indicates dead code, which can increase contract size, deployment costs, and potentially lead to confusion for future developers. (7.2 Code Security)
Fix
Remove the initialLiquidationThreshold variable if it serves no purpose, or integrate it into the contract's logic if it was intended to be used.
Status
Unresolved
Analysis
AI Copilotas of audit · Sep 4The contract leverages OpenZeppelin's upgradeable contracts, providing a solid foundation for ERC20 functionality and upgradeability (7.1 Architecture). The use of a PackedPoolState struct is an efficient way to store multiple state variables, optimizing gas costs. However, the contract has a high dependency on external contracts like ITaxProcessor for core tax liquidation logic, introducing external risk (7.6 External). Additionally, critical state transitions rely on block.timestamp, which can be subject to minor miner manipulation (7.2 Code Security).
The contract includes a check ensuring taxDuration is greater than or equal to antiFarmerDuration, which is a positive economic constraint. However, the owner has significant control over critical PoolState transitions via startMigration and finalizeMigration functions, which directly impact the token's economic model (7.5 Governance). The initial minting of all maxSupply to the deployer also centralizes token distribution. Furthermore, the liquidationThreshold for tax processing is immutable, which may not adapt to future market conditions (7.4 Economic).
The contract is designed as an upgradeable proxy using OpenZeppelin's Initializable pattern. The _disableInitializers() call in the constructor correctly prevents re-initialization of the implementation contract. Standard initializer functions (__ERC20_init, __ERC20Permit_init, __Ownable_init) are used, ensuring proper setup during proxy deployment. This approach aligns with best practices for upgradeable contracts (7.7 Upgrades).
It is recommended to thoroughly audit all external contracts, especially ITaxProcessor, to ensure their security and intended behavior.
Consider implementing a multi-signature wallet or a timelock for critical owner-controlled state transitions to enhance decentralization and provide users with a reaction window. Evaluate the immutability of the liquidationThreshold and block.timestamp reliance for state changes, and consider making them configurable or using more robust time sources if the economic impact is significant. Finally, address the unused state variable to improve code clarity.
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, 202675High
- Aug 14, 202648Medium
Score changes are recorded as dated snapshots — history is append-only and cannot be edited.
Would You Like a More Detailed Audit of 金蟾?
This token is brand new. Run a deeper AI-powered analysis of the contract code — free and instant.
Get Detailed Audit Is this your token? Publish your own audit on this page