ZeroMoon (0Moon) is an advanced reflection (auto-staking) token deployed on the Binance Smart Chain (BSC). It builds upon foundational concepts from earlier reflection tokens but is re-engineered with a primary focus on enhanced safety, programmatic autonomy, and robust scalability. ZeroMoon introduces automated liquidity management, a dynamic fee system that adapts to ecosystem milestones, and a secure, decentralized framework designed to minimize centralized vulnerabilities.
The ZeroMoon contract is optimized for scalability, primarily utilizing constant-time O(1) operations for critical functions like reflections and fee distribution. This design ensures that gas costs remain low and predictable, allowing the system to efficiently support a very large number of users and transactions.
fairLaunchAddress
(e.g., for Initial Farm Offerings - IFOs), which is automatically excluded from transaction fees and reflection rewards.ZeroMoon’s tokenomics are meticulously designed to balance holder rewards, token scarcity through burning, and the overall sustainability of the ecosystem.
ORIGINAL_SUPPLY
): 100,000,000,000 0Moon (100 Billion 0Moon)
ORIGINAL_SUPPLY = 100_000_000_000 * 10**18
.BURN_LIMIT
): Deflationary burning of tokens from transaction fees continues until 50,000,000,000 0Moon (50% of ORIGINAL_SUPPLY
) are removed from circulation.
BURN_LIMIT = ORIGINAL_SUPPLY * 50 / 100
.Fees are percentages of the transaction amount, with a denominator of 10,000 in the contract.
Phase | Total Fee | Reflection | Liquidity | Burn | Developer |
---|---|---|---|---|---|
Phase 1 (Before Burn Limit) |
10% | 3.5%REFLECTION_B4_BST = 350 |
3.0%LIQUIDITY_B4_BST = 300 |
2.5%BURN_B4_BST = 250 |
1.0%DEV_B4_BST = 100 |
Phase 2 (After Burn Limit, Before LP Limit) |
10% | 4.5%REFLECTION_B4_LPS = 450 |
4.75%LIQUIDITY_B4_LPS = 475 |
0%(Burn fee stops) |
0.75%DEV_B4_LPS = 75 |
Phase 3 (After Both Limits Reached) |
6% | 5.5%REFLECTION_AFTER = 550 |
0%(Liquidity fee stops) |
0%(Burn fee remains stopped) |
0.5%DEV_AFTER = 50 |
LP_DEPOSIT_LIMIT
): Automated liquidity addition from fees ceases after 100,000,000,000 0Moon (the ORIGINAL_SUPPLY
) have been cumulatively designated for (_totalGrossLpCollected
reaching LP_DEPOSIT_LIMIT * 2
) or added to (_totalLpDeposited
reaching LP_DEPOSIT_LIMIT
) the PancakeSwap liquidity pool.
LP_DEPOSIT_LIMIT = ORIGINAL_SUPPLY
.deadWallet
, the pancakeSwapV2Pair
.fairLaunchAddress
, if set by the owner, is also automatically excluded from both fees and reflections.isContract()
) receiving tokens are typically auto-excluded from reflections to concentrate rewards among user EOAs.The ZeroMoon contract incorporates several design choices to enhance security and mitigate risks:
onlyOwner
) permanently inaccessible, moving the contract towards greater decentralization and immutability for those functions.pancakeSwapV2Pair
, deadWallet
, primary devWallet
, and boxAddress
are set at deployment and are immutable, preventing malicious changes.ReentrancyGuard
modifier (nonReentrant
) on key functions involved in external calls or state changes related to liquidity operations (executeLpFromPoke
, triggerAutoLiquidity
), protecting against reentrancy attacks. Note: _addLiquidityAutomatically
is private and not directly nonReentrant
but is called by nonReentrant
functions.deadWallet
. This effectively burns the LP tokens, permanently locking the underlying 0Moon and BNB in the PancakeSwap liquidity pool and preventing a "rug pull" of this contract-generated liquidity.boxAddress
, and distribution of residual tokens to holders via reflection).triggerAutoLiquidity()
function is public and can be called by any user or external actor.MIN_TOKENS_TO_PROCESS_PER_CYCLE
) and BNB (MIN_BNB_BALANCE
) for an LP event, and the LP_DEPOSIT_LIMIT
has not been reached, any call to triggerAutoLiquidity()
will initiate the contract's automated liquidity addition process.ZeroMoon
ZeroMoon
inherits from:
ERC20
(OpenZeppelin): Provides standard ERC20 token functionality.Ownable
(OpenZeppelin): Implements ownership control for administrative functions.ReentrancyGuard
(OpenZeppelin): Provides protection against reentrancy attacks.(This list summarizes key functions and public state variables accessible like view functions. For full details, refer to the contract code and NatSpec comments.)
constructor
payable
_devWallet
, _pancakeSwapRouterAddress
, _pancakeSwapFactoryAddress
, _deadWalletAddress
, _boxAddress
.ORIGINAL_SUPPLY
to the deployer, and sets initial exclusions.name()
, symbol()
, decimals()
, allowance(address, address)
: Standard ERC20 view functions.totalSupply()
: Returns ORIGINAL_SUPPLY - _burnedTokens
.balanceOf(address account)
: Returns token balance, accounting for reflections.isContract(address _addr)
: Checks if an address has deployed code.get0MoonPerBNB()
: Returns the current 0Moon price per 1 BNB from PancakeSwap.getBNBPer0Moon()
: Returns the current BNB price per 1 0Moon from PancakeSwap.owner()
: Returns the current contract owner (from Ownable).echoPingerAddress
: Public state variable. Stores the configured EchoPinger address.fairLaunchAddress
: Public state variable. Stores the configured FairLaunch address.holdersCount
: Public state variable. Returns the current number of token holders._accumulatedLiquidityTokens
: Public state variable. Shows tokens currently held by the contract for LP addition._totalLpDeposited
: Public state variable. Shows total net 0Moon tokens deposited into the LP by the contract._totalGrossLpCollected
: Public state variable. Shows the total gross 0Moon tokens ever collected from fees for LP purposes._totalReflectionTokensCollected
: Public state variable. Shows the total gross 0Moon tokens ever collected from fees for reflection._burnedTokens
: Public state variable. Shows total tokens burned via fees._burnStop
, _lpStop
: Public boolean state variables indicating status of burn/LP mechanisms.pancakeSwapV2Pair
: Public immutable state variable. Address of the PancakeSwap LP pair.pancakeSwapV2Router
: Public immutable state variable. Address of the PancakeSwap Router.deadWallet
: Public immutable state variable. Address of the burn/dead wallet.transfer(address, uint256)
, transferFrom(address, address, uint256)
, approve(address, uint256)
, increaseAllowance(address, uint256)
, decreaseAllowance(address, uint256)
: Standard ERC20 functions. transfer
and transferFrom
trigger fee logic via _update
.triggerAutoLiquidity()
: external nonReentrant
. Allows any user to trigger liquidity addition if conditions are met.onlyOwner
)setEchoPingerAddress(address _pingerAddress)
: Sets the authorized EchoPinger contract address.setFairLaunchAddress(address _newFairLaunchAddress)
: Sets the FairLaunch contract address and excludes it from fees/reflection.setDevWallets(address[] memory wallets)
: Sets/updates the array of 3 developer wallets for fee splitting.renounceOwnership()
: Allows the current owner to renounce ownership (from Ownable).transferOwnership(address newOwner)
: Allows the current owner to transfer ownership (from Ownable).executeLpFromPoke()
: external nonReentrant
. Callable only by echoPingerAddress
. Triggers liquidity processing and maintenance._update(address sender, address recipient, uint256 amount)
: Core internal function overriding ERC20, handles all token movements, fee application, reflection accounting, and holder counts._calculateFees(uint256 amount)
: Calculates fee breakdown based on current contract phase._distributeFees(...)
: Distributes collected fees to reflection, liquidity, burn, and dev; triggers _applyReflectionTokens
and _addLiquidityAutomatically
._applyReflectionTokens()
: Adjusts _scalingFactor
to distribute reflection rewards._addLiquidityAutomatically()
: private
. Swaps tokens for BNB and adds to LP. (Called by nonReentrant
functions).handleLpAddFailure(uint256 tokensIntendedForLp)
: Manages repeated LP addition failures._sendAccumulatedLpTokensToBox()
: Sends leftover _accumulatedLiquidityTokens
to boxAddress
under specific conditions.receive() external payable
: Allows the contract to receive BNB directly, emitting BNBReceived
.Reflection, or auto-staking, is ZeroMoon's mechanism for rewarding holders. A portion of every transaction fee is allocated to reflections. Instead of direct token transfers to each holder (which is gas-intensive), ZeroMoon uses a sophisticated _scalingFactor
that is adjusted when reflections are processed. This effectively increases the value of tokens held by eligible participants over time.
_accumulatedReflectionTokens
.LP_DEPOSIT_LIMIT
) are fully met and LP operations have stopped (_lpStop
is true), any remaining 0Moon tokens held directly by the contract are also added to _accumulatedReflectionTokens
._applyReflectionTokens
function is called to process these accumulated tokens. A decrease in _scalingFactor
means that when a user's balance is calculated, their effective token count increases.balanceOf(address account)
function reflects these rewards by dividing a user's scaled balance by the current scaling factor.deadWallet
, the pancakeSwapV2Pair
, a configured fairLaunchAddress
, and other smart contracts are typically excluded from receiving reflections. This ensures rewards are concentrated among actual users (EOAs).ReflectionShared
event logs additions to the reflection pool.ZeroMoon incorporates a token burn mechanism to create deflationary pressure. A portion of transaction fees is designated as burnAmount
. These tokens are effectively removed from circulation by allocating them to the deadWallet
's balance until the BURN_LIMIT
(50% of ORIGINAL_SUPPLY
) is reached.
_burnStop
) is calculated and transferred to the deadWallet
within the _distributeFees
function._burnedTokens
tracks cumulative burns. The deadWallet
's balance also reflects total tokens burned.Transfer
event with deadWallet
as the recipient logs the burn._burnStop
is true, the burn fee becomes 0%, and those fee points are reallocated to other components.BURN_LIMIT
ensures a predictable end to the burn phase._burnedTokens
and Transfer
events.To ensure a robust and deep trading pool on PancakeSwap, ZeroMoon automatically adds liquidity using a portion of transaction fees. When thresholds are met, the contract swaps half its collected tokens for BNB and pairs them with the remaining half to add liquidity. This process continues until LP_DEPOSIT_LIMIT
is reached.
_accumulatedLiquidityTokens
.triggerAutoLiquidity()
._addLiquidityAutomatically
):
deadWallet
, permanently locking this liquidity.LiquidityAdded
on success, LiquidityAdditionFailed
on failure.To ensure maximum fairness, a specific mechanism within the _distributeFees
function handles all other 0Moon tokens held directly by the contract after liquidity goals are met. If the contract still holds a balance of 0Moon tokens, these residuals are automatically added to the _accumulatedReflectionTokens
pool. This ensures they are distributed to all eligible token holders through the standard reflection mechanism, rather than being sent to a separate address or remaining idle.
deadWallet
is a critical safety feature, preventing rug pulls.A portion of transaction fees is allocated to developer wallet(s) to fund ongoing project maintenance, innovation, and marketing. ZeroMoon's approach aims for sustainability while demonstrating a commitment to the community by reducing the developer fee share over time.
ZeroMoon is designed for autonomous operation. Post-launch, with ownership renouncement (planned), governance may evolve through community consensus for future initiatives outside the immutable contract logic.
Join our community channels: Telegram and X (Twitter).
This project, including the ZeroMoon smart contract, is licensed under the MIT License.
The ZeroMoon EchoPinger Bot is an off-chain application designed to monitor the ZeroMoon smart contract and the Binance Smart Chain (BSC) network. Its primary purpose is to ensure the timely execution of critical contract functions, particularly related to automated liquidity provision and other maintenance tasks defined within the ZeroMoon contract.
Note on Security: While this document describes the bot's functionality, the full source code of the operational bot may not be made public to protect specific operational strategies, advanced error handling, and security measures related to the bot's own wallet and gas management.
triggerAutoLiquidity()
function.The bot primarily interacts with the following functions on the ZeroMoon.sol
smart contract:
getAccumulatedLiquidityTokens()
, getTotalLpDeposited()
, _burnedTokens()
, _burnStop()
, _lpStop()
, balanceOf(address)
.triggerAutoLiquidity()
, approve(address, uint256)
. The bot is the authorized echoPingerAddress
and calls executeLpFromPoke()
.swapExactTokensForETHSupportingFeeOnTransferTokens(...)
to swap its dev fees into BNB.The bot operates based on several configurable parameters:
MIN_BOT_BNB_BALANCE
and MAX_BOT_BNB_BALANCE
to manage its own BNB levels.LP_DEPOSIT_LIMIT
, MIN_TOKENS_TO_PROCESS_PER_CYCLE
, and MIN_BNB_BALANCE
from the contract to inform its decisions.MIN_ZEROMOON_TO_INITIATE_SWAP
and ZEROMOON_SWAP_AMOUNT
to manage its conversion of 0Moon to BNB.CHECK_INTERVAL_MS
determines how frequently the bot performs its checks.The bot runs in a continuous loop, performing the following checks in order:
triggerAutoLiquidity()
if conditions are met.The EchoPinger Bot is designed to be self-sustaining. Its wallet receives a share of the developer fees in 0Moon tokens, which it automatically converts to BNB to pay for its own transaction costs. This ensures the bot can operate and support the ecosystem's health without requiring manual BNB top-ups.
This bot is a utility to support the ZeroMoon ecosystem. Its operation depends on the off-chain infrastructure it runs on. The ZeroMoon smart contract is designed to function autonomously, but this bot ensures that key functions are triggered proactively. The self-funding mechanism relies on the ongoing collection of developer fees and market conditions for swapping 0Moon to BNB.
ZeroMoon is an autonomous, open-source Binance Smart Chain contract. ZeroMoon is not responsible for any potential profits, losses, benefits or adverse outcomes resulting from its use, including technical issues or market interactions. Users interact with ZeroMoon at their own risk. Users are fully responsible for their interactions.
© 2025 ZeroMoon