ZEON Info

A fixed 1,000,000,000 supply, priced in USDT, with real holder rewards built in from day one. No minting, no hidden levers — every rule is locked on-chain and verifiable before you buy in.

ZEON Logo

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.

76.43
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
N/A
Network N/A
License N/A
Compiler N/A
Type N/A
Language Solidity
Onboard date 2026/08/26
Revision date 2026/09/02

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.

Token transfer can be locked

Owner can lock user funds with owner functions.

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:

  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.


Smart Contract Analysis Statement

Contract Analysis

The ZEON contract implements an ERC20 token with a fixed supply of 1,000,000,000 units minted once at deployment, a fee-on-transfer mechanism that applies only to trades against registered market maker pairs, and a set of anti-whale controls comprising a maximum wallet balance, a maximum transaction size and a per-sender cooldown. Fees are split across three destination wallets for rewards, treasury and liquidity support, and are raised to a flat 7 percent for the first 72 hours after trading first opens. Rate changes are governed by a 24-hour delay and are limited to two changes for the lifetime of the contract. The token is not upgradeable, uses no proxy, contains no mint or burn function beyond the initial supply creation, and makes no external calls at all, which removes reentrancy as a category of risk. Transfers between ordinary holders are not charged a fee.

This statement covers the second re-review of the contract, carried out against the revision submitted as final. The fee arithmetic was sound before and remains so: across extensive automated testing the total supply never changed, the sum of all balances always matched the total supply, the sender was always debited exactly the amount requested, and the effective fee reached but never exceeded the advertised 7 percent ceiling. Every property established in the previous review still holds on this revision, and none of the changes made since disturbed them.

Three of the four items carried into this round are now closed. The two anti-whale figures became compile-time constants with no setter anywhere in the contract, so the 2 percent per wallet and 0.5 percent per transaction the documentation presents can no longer be moved by anyone in either direction. The three setters that previously changed protective state silently now announce every change. Marking a fee wallet or the contract's own address as a trading pair is refused. Most substantially, the shared-privilege side effect that two of the previous revision's own fixes had introduced is fully closed: both writes to the exemption flag now check whether the address being cleared still holds another role before clearing it, and the deployment shortcut that made the problem easy to reach is rejected outright by the constructor. We re-ran both configurations that previously misbehaved and both now behave correctly.

The one item deliberately not changed is the breadth of the exemption itself, and the project has accepted that in writing, in a comment on the mapping. That is a legitimate position and the reasoning given for it is sound. It does, however, interact with the decision to remove the limit setters, in a way worth stating plainly to holders rather than leaving implicit, and that is the substance of our remaining recommendations.

Ownership Privileges

The ownership of the contract has been assigned at deployment to a single externally owned account, with no multi-signature wallet and no delay on any privileged function other than the fee rate change. The owner retains full privileges including:

  • Granting any address a complete exemption from the trading lock, the transaction size limit, the wallet balance cap, the cooldown and all fees in a single call. The exemption is all-or-nothing and cannot be granted in part. This was raised in the previous two reviews and has now been accepted explicitly as a design decision rather than changed. It is announced on chain, which it previously was not, so the privileged set is at least auditable by a holder who watches for it.
  • Waiving either anti-whale limit for a chosen address. The two figures are now immutable, but their enforcement is not: the transaction limit is skipped whenever either party to a transfer is exempt, and the wallet cap is skipped whenever the recipient is exempt, the recipient is a registered pair, or the sender is flagged as a payout source. A holder should read the guarantee as the figures being fixed forever, and exemption from them remaining an owner privilege.
  • Redirecting all future fee revenue by changing any of the three destination wallets, and designating or removing market maker pairs, which determines which transfers are charged a fee at all. De-registering the live pair silently reduces all fees to zero, and so does pointing a fee wallet at the live pair, which the contract still permits.
  • The owner can no longer re-freeze trading. The release is irreversible once taken, cannot be taken twice, and is always announced. The owner can still hold the launch indefinitely before releasing, which is the intended purpose of the control.
  • The owner can no longer raise or lower the wallet cap or the transaction limit. Both are compile-time constants and no function exists to change either. This is the most significant reduction in owner power in this revision.
  • The owner can no longer disable the cooldown. It is bounded between 15 and 120 seconds, where it previously accepted zero. This narrows owner power but also removes an option the design's own reasoning depends on, which is covered in our recommendations.
  • The owner can no longer render the contract unusable. Renouncing while the lock is engaged is refused, and a handover requires the incoming address to accept, so neither an accidental renouncement nor a mistyped destination can remove the ability to open trading.
  • The owner cannot mint new tokens. The supply is created once in the constructor and no mint function exists anywhere in the contract, which we confirmed both by review and by automated testing across several hundred thousand operations.
  • The owner cannot raise fees above 7 percent. The ceiling is a fixed constant that cannot be changed, applies to both the buy and the sell rate, and is enforced when a change is proposed. Only two rate changes are permitted for the lifetime of the contract, after which rates are frozen permanently.
  • The owner cannot bypass the 24-hour delay on a fee change. We verified that an early execution attempt is refused and that the change applies only once the full period has elapsed.
  • The owner cannot burn or seize any holder's balance, cannot blacklist an address, and cannot pause an individual account. There is no blacklist and no burn path in the contract.

Security Features

The contract implements several positive security features:

  • A genuinely hard fee ceiling. Unlike most fee-bearing tokens, where a maximum rate is itself an owner-settable value, the 7 percent limit here is a compile-time constant. Combined with the two-change lifetime budget and the 24-hour delay, this is a real and well-implemented restraint on the parameter most commonly abused in this class of contract.
  • Immutable anti-whale figures. The wallet cap and transaction limit are now constants rather than settable parameters, so the advertised percentages hold in both directions. This closes the half of the previous finding that concerned the values themselves, and it is verified as a standing property across every reachable sequence of privileged calls rather than only by reading the code.
  • An irreversible trading release. The launch can be held back but not undone, which removes the single most common honeypot construction in this class of contract.
  • Role-aware privilege management. Rotating a fee wallet or handing over ownership now moves the exemption with the role and, new in this revision, declines to revoke it from an address that still holds another role. This is the correct shape for the problem and it closes a side effect the previous round's fixes had introduced.
  • Ownership that cannot strand the contract. Renouncement is refused while transfers are frozen, and a handover requires the incoming address to accept, so the two routes to an unrecoverable state are both closed.
  • A fixed, verifiable supply with no inflation surface. The absence of any mint function, rebase mechanism, reflection accounting or hidden allocator was confirmed by review and held as a property throughout automated testing.
  • No external calls and no upgrade path. The contract cannot be altered after deployment and cannot be re-entered, which eliminates two of the most common sources of loss in token contracts. There is no proxy, no delegated code execution and no assembly.
  • Careful handling of the supply creation path. The zero address is excluded from all fee and limit logic in the constructor, the exemption function permanently refuses to change that entry, and the ownership override is written so that renouncing cannot clear it either. We verified that last point specifically, because it is the kind of interaction a fix of this shape can easily break.

Recommendations

Nothing outstanding is blocking, and nothing raised in this round is rated above informational. Four items remain, all small, and three of them are consequences of changes made in this revision rather than survivals from the previous one. None is reachable by anyone other than the owner, none puts a holder's funds at risk, and none grants an owner a capability the exemption flag does not already grant, which is why each is recorded as an observation rather than as a defect to fix before launch.

The comment introducing the newly immutable limits states that locking them makes the interface's claim of no admin override and no fine print literally true. The figures are indeed fixed forever, and that is a real improvement worth publicising. Enforcement of them is not fixed: three separate owner-controlled flags each waive one or both limits for a chosen address, and we confirmed each of them on this revision. Since the exemption flag is being kept as a single dimension by choice, the honest statement to holders is that the figures are immutable and exemption from them is an owner privilege that is announced on chain. Publishing the exempt set and the payout-source set alongside the percentages would let a holder check who is currently outside them, which is the part of our original recommendation that still carries.

Removing the limit setters also removed the only fine-grained lever the operator had. An exchange, a market maker or a large presale buyer legitimately holding more than 2 percent of supply can now only be accommodated by granting the full exemption bundle, which waives their fees as well. That is a tokenomics decision rather than a defect, but it should be a decision taken knowingly before launch rather than discovered afterwards, because after renouncement no accommodation is possible at all.

Registering a trading pair now refuses an address that is one of the fee wallets. The three fee-wallet setters did not get the matching check, so the same state is still reachable from the other direction: pointing a fee role at the live pair is accepted, the setter exempts it, and every trade through that venue then pays nothing. We confirmed this on the resubmitted source, where a sale into the registered pair delivered in full and none of the three sinks received anything. It is an owner mistake rather than an attack and one call undoes it, but the guard should point both ways. Separately, the constructor should pick up the check the three setters already carry and refuse the contract's own address as a fee sink; that configuration is still accepted at deployment and sends fees somewhere they can never be recovered from.

The cooldown gained a lower bound of 15 seconds in this revision, which conflicts with the reasoning the same revision gives for keeping the rest of the cooldown design as it is. That reasoning rests on the cooldown being a soft launch-window measure intended to be relaxed once the launch has settled, and the floor makes relaxing it impossible. Two costs become permanent as a result: any address holding an allowance can keep the granting wallet throttled indefinitely for the price of one dust transfer per window, and every ordinary wallet carries a per-transfer throttle for the life of the token while a wallet that installs a delegation does not. We recommend letting the floor be zero and treating standing the cooldown down after launch as the planned end state, which is what the surrounding comment already says the intention is. If a non-zero floor is wanted as a guarantee to holders, then close the delegated-transfer path at the same time, so the residual it makes permanent is removed rather than locked in.

Finally, ownership of the contract should be moved to a multi-signature wallet, with a delay on the broadest privileged functions. This is now the single largest remaining risk in the contract, and it is the item we would want settled before any funds are raised.

Note - This Audit report consists of a security analysis of the ZEON smart contract. This analysis did not include economic analysis of the contract's tokenomics. Moreover, we only audited the main contract for the ZEON 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

Findings and Audit result

high Issues | 1 findings

Resolved

#1 high Issue
Trading lock can be re-engaged at any time while the owner stays liquid
ZeonToken.sol
L276-281
Description

The trading lock was flipped by a toggle rather than released by a one-way latch, so the owner could re-engage it at any point after launch with no delay and no limit on repetition. The guard blocked a transfer only when neither party was excluded, and the owner was excluded at construction, so the owner and every other excluded address stayed fully liquid while ordinary holders were frozen. The launch event fired only on the first release, so every subsequent change to this critical state was silent. This is the canonical honeypot construction and the highest-value target for a key compromise.

medium Issues | 1 findings

Resolved

#1 medium Issue
Renouncing ownership while trading is locked bricks the token permanently
ZeonToken.sol
L7
L292-295
Description

Inherited renouncement was unguarded, so renouncing before launch, or at any moment while the lock was engaged, removed the only mechanism that could ever unlock transfers. Because the contract is not upgradeable and has no second administrator there was no recovery path, and every owner-only setter became permanently uncallable as well. Single-step ownership transfer produced the same outcome from a mistyped destination.

low Issues | 8 findings

Acknowledged

#1 low Issue
Exclusion and pair registration are unbounded bypasses, and every advertised limit can be removed
ZeonToken.sol
L18-19
L223-248
Description

One call grants an address simultaneous immunity from the trading lock, the transaction size limit, the cooldown, the wallet cap and all fees, with no way to grant a subset. Marking an ordinary wallet as a trading pair is equally broad in the other direction, and de-registering the real pair silently zeroes all fee collection. The size and wallet limits enforce only a lower bound, so either can be raised to the integer maximum, and the cooldown accepts zero. Every anti-whale protection the documentation presents as fixed at two percent of supply per wallet and half a percent per transaction is therefore removable in full, instantly, and none of the five setters emits an event, so holders have no on-chain signal that any of it happened.

Acknowledged

#2 low Issue
Fees can be avoided entirely by trading through an unregistered venue
ZeonToken.sol
L376-398
Description

Fees apply only when one side of a transfer is a registered trading pair, and that registry is populated one address at a time by the owner. Any venue not explicitly registered is fee-free: a concentrated-liquidity pool, a pair against a different quote asset, a newly created pair, an over-the-counter desk, a lending market, or an exchange deposit address. Because anyone can create a pair permissionlessly, registration is inherently reactive, and peer-to-peer transfers are untaxed by design, so a trade can also be settled off-venue at zero cost.

Pending

#3 low Issue
Per-sender cooldown denies service to shared contracts and can be burned by any approved spender
ZeonToken.sol
L354-359
Description

The cooldown was keyed on the sender and stamped on every outgoing transfer, with no distinction between an individual wallet and a contract serving many users, so any shared contract holding the token was limited to one outgoing transfer per window in total across all of its users and one user's activity blocked everyone else. Separately, because the delegated transfer path stamps the token holder rather than the caller, any third party holding an allowance can consume a victim's cooldown slot.

Resolved

#4 low Issue
A claim source that is not also excluded cannot be funded and is throttled
ZeonToken.sol
L69-73
L251-259
Description

The note on the claim-source flag presented it as the mechanism that lets a payout contract deliver allocations, which understated the consequence: an address flagged only as a claim source remains subject to the trading lock, the transaction size limit and the cooldown. An operator following the note literally got a sale that could not be funded above the wallet cap at all, and once funded could make only one payout per cooldown period across all buyers.

Resolved

#5 low Issue
Rotating a fee wallet leaves exclusions stale, and a non-excluded fee sink refunds its own fee
ZeonToken.sol
L182-218
Description

The three fee-wallet setters neither excluded the new address nor cleared the flag on the old one. The new wallet became subject to the trading lock, the size limit, the cooldown and the wallet cap when it tried to spend, while the previous wallet kept its exemption indefinitely, quietly widening the privileged set on every rotation. More significantly, a fee destination that was not excluded refunded its own fee leg when it sold, because that leg became a self-transfer worth nothing while the final transfer still deducted the full fee, so whoever controlled a sink had a fee-avoidance path.

Resolved

#6 low Issue
Ownership transfer leaves the exemption on the retired owner and grants none to the new one
ZeonToken.sol
L303-321
Description

Only the deploying account was excluded at construction, and transferring ownership did not touch the exclusion mapping. After ownership moved to a multisig the retired deploying key kept a permanent exemption from the trading lock, the size limit, the cooldown, the wallet cap and all fees, while the wallet that actually administered the contract held none of them. A key that had supposedly been retired retained privilege forever, and it is the single address most likely to be compromised, since it existed as a hot deployer key.

Resolved

#7 low Issue
Privilege is one shared boolean, so clearing it for one role revokes it for another
ZeonToken.sol
L182-218
L303-321
Description

Exemption from the trading lock, the size limit, the cooldown, the wallet cap and all fees is expressed as a single boolean per address. Two of the fixes in this revision now write to that boolean automatically: the fee-wallet setters clear it for the retired sink, and an ownership handover clears it for the retired owner. Neither checks whether the address being cleared still holds another role that needs the exemption. Two reachable configurations follow. If a fee wallet is set to the deployer's address, which nothing in the constructor rejects, then handing administration to a multisig clears the exemption on an address that is still the configured fee sink. If two fee roles point at one address, rotating either clears the exemption while the other role still uses it. The consequence is that the self-refunding fee sink returns: a sink that is not exempt receives its own fee leg as a self-transfer, so the fee never leaves and the effective rate on its own sales drops. Measured on the resubmitted source, a wallet in this state pays four hundred basis points where five hundred is configured. It is also subject to the size limit and the cooldown when it tries to spend. Nothing is lost or minted, no user funds are at risk, and one call restores the exemption, but nothing warns that it happened and the deployment configuration that triggers it looks entirely reasonable.

Acknowledged

#8 low Issue
The cooldown exemption is keyed on code size, which is not an account-type test on this chain
ZeonToken.sol
L345-359
Description

The cooldown now applies only when the sender carries no code, which correctly stops a shared payout contract being throttled across all of its users. The check treats an empty code slot as proof of an ordinary wallet, and that equivalence no longer holds on the target chain: the Pascal hardfork activated delegated account code on mainnet in March 2025, so an ordinary wallet can install a delegation designator and carry code while remaining an externally owned account under the same private key. Such a wallet reads as a contract here and skips the cooldown entirely. The anti-sniper cooldown therefore becomes opt-out: any participant willing to sign one delegation transaction, which is a routine account-abstraction operation rather than an exploit, trades with no per-sender throttling while ordinary wallets remain limited to one transfer per window. The advantage accrues precisely to the sophisticated automated participants the cooldown exists to slow down. The cooldown is a soft launch-window measure rather than a security control and the owner can already set it to zero, which is what holds this low, but it directly qualifies a control the project has just changed.

informational Issues | 4 findings

Acknowledged

#1 informational Issue
A fee wallet can still be pointed at a registered trading pair, which switches off fee collection
ZeonToken.sol
L182-218
L241-249
Description

Registering a trading pair now refuses an address that is one of the three fee wallets or the token itself, which closes one direction. The three fee-wallet setters were not given the matching guard, so the same end state is still reachable from the other side: pointing a fee role at an address that is already a registered pair is accepted without complaint, and the setter then excludes it. Because a transfer is only taxed when neither party is excluded, the venue becomes fee-free and every trade through it stops paying. Confirmed on the resubmitted source: after that single call a sale into the registered pair delivered the full amount and none of the three sinks received anything. A second, smaller consequence is that the new guard also runs when the flag is being cleared, so while an address holds both roles it cannot be de-registered as a pair at all and has to be unwound in the other order. Held at informational because it grants no capability the owner does not already have: excluding the pair directly reaches the same end state in one call and is an explicit part of the accepted exemption design, so this adds nothing to a malicious or a compromised owner. Against an honest one it is a configuration mistake with no external trigger, no user funds at risk, and only the project's own revenue affected. It is announced by the wallet-rotation event and one call restores the previous state. It nonetheless silently removes all fee revenue while it lasts, which is why it is worth closing.

Acknowledged

#2 informational Issue
The constructor accepts the token itself as a fee sink although its own comment says it does not
ZeonToken.sol
L93-104
L184
L197
L210
Description

The three rotation setters gained a check that refuses the token's own address as a fee destination. The constructor gained distinctness checks in this revision but not that one. The comment introducing those checks states that the fee wallets must be distinct from each other, from the deployer, and from the token contract itself, and the first two are enforced by a require while the third is not enforced anywhere. The configuration the setters exist to prevent can therefore still be established at deployment, and a reader of the constructor would reasonably believe it cannot. The address is knowable in advance, because a contract address is derived from the deploying account and its nonce, so this is reachable by a script that computes it rather than only by coincidence. Fees then accrue to a contract with no sweep function, no approval path and no owner-controlled transfer, so they are unrecoverable. Confirmed on the resubmitted source: forty thousand tokens were stranded inside the contract by a single one million token sale, and the setter refuses the very configuration the constructor accepted. Held at informational because it is a one-shot deployment mistake with no external trigger, reachable only by a script that deliberately computes the address it is about to deploy to and passes it back as an argument. It is fully visible in the constructor arguments on the block explorer before any user funds exist, and the runbook already requires reading the three configured sinks back. What is lost is the project's own future fee revenue rather than anything a holder or a buyer owns. The substance worth acting on is that the comment and the code disagree, which is the kind of gap that survives review.

Acknowledged

#3 informational Issue
The new cooldown floor removes the end state the design depends on
ZeonToken.sol
L223-228
L354-359
Description

The cooldown setter gained a lower bound of fifteen seconds, so the value can no longer be set to zero. The reasoning offered for keeping the code-size test as the account-type check is that the cooldown is a soft launch-window measure that is intended to be relaxed once the launch window has passed, and the previous review recommended standing it down as the planned end state for the same reason. The floor removes that option permanently. Two costs become permanent with it. The first is the surviving half of the cooldown finding: the delegated transfer path stamps the token holder rather than the caller, so anyone holding an allowance can consume that holder's slot, and at the floor a single dust pull every fifteen seconds keeps a holder blocked indefinitely for the price of one transaction per window. Confirmed on the resubmitted source across repeated cycles, with the blanket exemption the only remaining remedy. The second is that every ordinary wallet carries a per-transfer throttle for the life of the token, while a wallet that installs a delegation designator does not, so the asymmetry the previous review described also becomes permanent. Held at informational because neither of those two impacts is introduced here. Both were already reported, both are already carried at low severity against the cooldown itself, and both are unchanged in reach and cost by this revision. What this records is narrower and is a consistency problem rather than a new exposure: the revision states in one place that the cooldown is meant to be relaxed after launch and in another makes relaxing it impossible, so the rationale offered for accepting the known bypass no longer describes the contract it is attached to. Recording it at low as well would count the same underlying impact twice.

Acknowledged

#4 informational Issue
The comment on the immutable limits claims more than the contract guarantees
ZeonToken.sol
L12-19
L231-235
L255-259
L333-370
Description

Both size limits became constants in this revision, and the comment introducing them states that locking them makes the interface's claim of no admin override and no fine print literally true and verifiable. The values are indeed fixed forever, which is a real improvement. Their enforcement is not. The size limit is skipped whenever either party to a transfer is excluded, and the wallet cap is skipped whenever the recipient is excluded, the recipient is a registered pair, or the sender is flagged as a claim source. All three flags are owner-controlled and unbounded. Confirmed on the resubmitted source: one call let a wallet send three times the transaction limit, a second let a recipient hold three times the wallet cap, and flagging a sender as a claim source waived the recipient's cap for everyone it pays. The distinction matters because the claim is made to holders rather than to developers, and the honest version of it is that the figures are fixed while exemption from them is not.