Skip to content

Methodology

DISCLAIMER // NFA // DYOR

This analysis is based on observations of the contract behavior. We are not smart contract security experts. This document aims to explain what the contract appears to do based on the code. It should not be considered a comprehensive security audit or financial advice. Always verify critical information independently and consult with blockchain security professionals for important decisions.

⊙ generated by robots | curated by humans

METADATA
Contract Address 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 (etherscan)
Network Ethereum Mainnet
Analysis Date 2026-02-04

Overview

This analysis of the ZeroMoon (zETH) token contract was conducted using a systematic approach combining verified source code review, on-chain state verification, transaction pattern analysis, and economic model assessment. The contract is verified on Etherscan, allowing direct analysis of the Solidity source code rather than relying on bytecode decompilation.

The methodology focused on understanding the contract's dividend distribution mechanism, ETH-backing refund system, fee structures, and access control patterns. Special attention was given to the immutability implications of the renounced ownership and the economic incentives created by the 99.9% backing ratio.

Thought Process

%%{init: {'theme': 'base'}}%%
mindmap
  root((ZeroMoon zETH<br/>Analysis))
    Contract Type
      ERC-20 Token
      Verified Source
      Immutable Design
      OpenZeppelin Base
    Economic Model
      ETH Backing
        99.9% Ratio
        Refund Mechanism
        Dynamic Pricing
        Reserve Accumulation
      Fee Structure
        Buy Fees 0.25%
        Refund Fees 0.25%
        Transfer Fees 0.25%
        DEX Exempt 0%
      Deflationary
        20% Burn Cap
        Burn to Reserve Shift
    Dividend System
      Magnified Shares
        2^128 Precision
        Monotonic Growth
        Per-User Tracking
      EOA Only
        Contract Detection
        8 Interface Checks
        Automatic Exclusion
      Distribution
        Reflection Fees
        Proportional
        Claim on Demand
    Access Control
      Ownership Renounced
        No Admin Powers
        No Parameter Changes
        No Emergency Stop
        Permanent Immutability
      Fee Recipient
        Dev Address
        Cannot Change
        Auto-Excluded
    Security
      ReentrancyGuard
        All ETH Transfers
        Buy Protected
        Refund Protected
        Claim Protected
      Math Safety
        Math.mulDiv
        Overflow Checks
        Precision Handling
      Edge Cases
        Minimum Thresholds
        Zero Address Checks
        Balance Verification
    Risk Assessment
      Immutability
        No Bug Fixes
        No Upgrades
        Final State
      Contract Detection
        False Negatives
        Smart Wallets
        Gaming Vectors
      Economic
        Refund Manipulation
        Backing Stability
        Liquidity Depth
    Verification
      On-Chain State
        Owner Status
        Supply Metrics
        Burn Progress
        ETH Balance
      Code Analysis
        Function Catalog
        Storage Layout
        Event Emission
      Transaction History
        Deployment
        Initial Activity
        Current State

Verification Guide

This analysis was conducted using multiple tools and data sources to ensure comprehensive coverage and independent verifiability.

External Resources

  1. Etherscan Contract Page (https://etherscan.io/address/0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532)

    • Verified source code (Exact Match verification)
    • Transaction history and event logs
    • Contract deployment details
    • Current on-chain state variables
  2. OpenZeppelin Contracts Documentation (https://docs.openzeppelin.com/contracts/4.x/)

    • Reference for inherited contracts (ERC20, ReentrancyGuard, Ownable2Step, ERC20Permit)
    • Understanding of established patterns and their security properties
    • Verification of standard implementations
  3. Ethereum Improvement Proposals

  4. Etherscan API v2

    • Automated source code retrieval
    • Verified compiler version and settings
    • Contract metadata validation

Commandline Tools

Tip

Commands below use cast from the Foundry Toolkit. To run the commands below, you must set the RPC URL environment variable:

export ETH_RPC_URL=https://eth.llamarpc.com

Verify Contract Deployment and Owner Status

These commands verify the contract's deployment details and confirm ownership has been renounced.

# GET DEPLOYMENT BLOCK NUMBER
cast tx 0x556a4525ffc51c7edeb73d264cd5c0b0cbc0d6d7bf8cbffac21097f8440a80af blockNumber

# GET DEPLOYMENT TIMESTAMP
cast block 23784335 --json | jq -r '.timestamp' | xargs printf "%d\n" | xargs -I {} python3 -c "import sys; from datetime import datetime; print(datetime.fromtimestamp({}).strftime('%Y-%m-%d %H:%M:%S UTC'))"

# GET CONTRACT CREATOR
cast tx 0x556a4525ffc51c7edeb73d264cd5c0b0cbc0d6d7bf8cbffac21097f8440a80af from

# VERIFY OWNER IS ZERO ADDRESS (RENOUNCED)
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "owner()(address)"
# Expected: 0x0000000000000000000000000000000000000000

# VERIFY NO PENDING OWNER
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "pendingOwner()(address)"
# Expected: 0x0000000000000000000000000000000000000000

Verify Token Supply and Burn Metrics

These commands verify the contract's supply management and deflationary mechanics.

# GET CURRENT TOTAL SUPPLY (ACCOUNTS FOR BURNS)
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "totalSupply()(uint256)"
# Returns: current supply = TOTAL_SUPPLY - totalBurned

# GET TOTAL BURNED TOKENS
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "totalBurned()(uint256)"

# GET TOKENS SOLD FROM INITIAL SUPPLY
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "tokensSold()(uint256)"

# GET CIRCULATING SUPPLY (EXCLUDES CONTRACT BALANCE)
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "getCirculatingSupplyPublic()(uint256)"

# CALCULATE BURN PERCENTAGE
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "totalBurned()(uint256)" | xargs -I {} python3 -c "burned = {}; total = 1250000000 * 10**18; pct = (burned / total) * 100; print(f'{pct:.4f}% burned')"

# VERIFY BURNING LIMIT (20% OF TOTAL SUPPLY)
# BURNING_LIMIT = 250,000,000 * 10^18 = 250000000000000000000000000
# Compare totalBurned against this value

Verify ETH Backing and Economic State

These commands verify the contract's ETH reserves and backing ratio.

# GET CONTRACT ETH BALANCE
cast balance 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 --ether

# CALCULATE BACKING RATIO
# backing_ratio = (ETH_balance) / (circulating_supply_in_ETH_terms)
cast balance 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 | xargs -I balance cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "getCirculatingSupplyPublic()(uint256)" | xargs -I circ python3 -c "balance = balance; circ = circ / 10**18; backing = balance / 10**18; ratio = (backing / circ) if circ > 0 else 0; print(f'Backing: {backing:.4f} ETH, Circ: {circ:.2f} tokens, Ratio: {ratio:.6f} ETH/token')"

# GET TOKEN PRICE ESTIMATE
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "calculatezETHForNative(uint256)(uint256)" 100000000000000000
# Pass 0.1 ETH (in wei) to see how many tokens you'd receive

# GET REFUND VALUE ESTIMATE
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "calculateNativeForZETH(uint256)(uint256)" 1000000000000000000
# Pass 1 token (in wei) to see how much ETH you'd receive

Verify Dividend Distribution System

These commands verify the dividend mechanism and tracking state.

# GET TOTAL DIVIDENDS DISTRIBUTED
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "getTotalDividendsDistributed()(uint256)"

# GET CURRENT DIVIDEND PER SHARE (MAGNIFIED)
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "getMagnifiedDividendPerShare()(uint256)"

# GET PENDING DIVIDENDS FOR AN ADDRESS
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "pendingDividends(address)(uint256)" <USER_ADDRESS>

# GET COMPREHENSIVE USER DIVIDEND INFO
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "getUserDividendInfo(address)(uint256,uint256,uint256,uint256,bool)" <USER_ADDRESS>
# Returns: (balance, lastDividendPerShare, accumulatedDividends, currentDividendPerShare, isContract)

# GET USER TOKEN BALANCE
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "balanceOf(address)(uint256)" <USER_ADDRESS>

Verify Token Metadata and Standards

These commands verify ERC-20 standard compliance and token metadata.

# GET TOKEN NAME
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "name()(string)"
# Expected: "ZeroMoon"

# GET TOKEN SYMBOL
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "symbol()(string)"
# Expected: "zETH"

# GET TOKEN DECIMALS
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "decimals()(uint8)"
# Expected: 18

# GET PERMIT DOMAIN SEPARATOR (EIP-712)
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "DOMAIN_SEPARATOR()(bytes32)"

# GET PERMIT TYPE HASH
cast call 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 "PERMIT_TYPEHASH()(bytes32)"

Verify Runtime Bytecode

Confirms the deployed bytecode matches what was analyzed.

# GET RUNTIME BYTECODE
cast code 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 > runtime-bytecode.hex

# GET BYTECODE SIZE
cast code 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 | wc -c
# Should be ~27,000+ characters (hex encoded)

# VERIFY BYTECODE HASH
cast code 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532 | shasum -a 256

Query Transaction History

Commands to explore the contract's transaction history and activity patterns.

# USING ETHERSCAN API V2 (REQUIRES API KEY)
export ETHERSCAN_API_KEY="your_api_key_here"

# GET RECENT NORMAL TRANSACTIONS
curl -s "https://api.etherscan.io/v2/api?chainid=1&module=account&action=txlist&address=0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532&page=1&offset=10&sort=desc&apikey=${ETHERSCAN_API_KEY}" | jq '.result[] | {hash: .hash, from: .from, value: .value, timeStamp: .timeStamp}'

# GET RECENT INTERNAL TRANSACTIONS (ETH REFUNDS)
curl -s "https://api.etherscan.io/v2/api?chainid=1&module=account&action=txlistinternal&address=0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532&page=1&offset=10&sort=desc&apikey=${ETHERSCAN_API_KEY}" | jq '.result[] | {hash: .hash, from: .from, to: .to, value: .value}'

# GET TOKEN TRANSFER EVENTS
curl -s "https://api.etherscan.io/v2/api?chainid=1&module=account&action=tokentx&contractaddress=0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532&page=1&offset=10&sort=desc&apikey=${ETHERSCAN_API_KEY}" | jq '.result[] | {hash: .hash, from: .from, to: .to, value: .value, tokenSymbol: .tokenSymbol}'

Analysis Phases

Phase 0: Contract Acquisition (5 tok)

  1. Identified contract address: 0x41b242c36F7dc5f18be21c1a6B7b5e05b2FD6532
  2. Fetched deployment transaction: 0x556a4525ffc51c7edeb73d264cd5c0b0cbc0d6d7bf8cbffac21097f8440a80af
  3. Confirmed verification status on Etherscan (Exact Match)
  4. Retrieved 2,928 lines of verified Solidity source code via Etherscan API v2
  5. Verified compiler version: Solidity 0.8.30 with Cancun EVM
  6. Saved runtime bytecode and creation bytecode locally

Phase 1: Contract Structure Analysis (10 tok)

  1. Identified contract type: Standalone ERC-20 token with custom mechanics
  2. Mapped inheritance hierarchy:
    • ReentrancyGuard (reentrancy protection)
    • ERC20 (standard token functionality)
    • ERC20Permit (EIP-2612 gasless approvals)
    • Ownable2Step (two-step ownership transfer)
  3. Cataloged 35+ public/external functions across categories:
    • 7 user functions (buy, refund, transfer, claim dividends)
    • 2 admin functions (setDevAddress, excludeFromFee) - disabled via renounced ownership
    • 9 view functions (balances, calculations, dividend info)
    • Standard ERC-20 functions (transfer, approve, allowance, etc.)
  4. Identified custom events (14 total) for dividend tracking, fee application, and system state changes
  5. Verified no external contract dependencies (self-contained except for OpenZeppelin libraries)
  6. Confirmed immutable configuration via constructor-set constants

Phase 2: Economic Model Analysis (12 tok)

  1. Purchase Mechanism:

    • Direct ETH → zETH purchase via buy() or receive()
    • Dynamic pricing: Base 0.0001 ETH per token, then (refundPrice × 1.001)
    • Fees: 0.05% dev, 0.10% reserve, 0.10% reflection (total 0.25%)
    • Minimum purchase: 0.0001 ETH
  2. Refund Mechanism:

    • Transfer tokens to contract triggers automatic ETH refund
    • 99.9% effective backing ratio
    • Fees: 0.05% dev, 0.05% reflection, 0.075% burn + 0.075% reserve (or 0.15% reserve post-cap)
    • Minimum refund: 1 token
    • Burns up to 20% of total supply (250M tokens), then doubles reserve fee
  3. Dividend Distribution:

    • Reflection fees distributed proportionally to all EOA holders
    • Uses 2^128 magnification for precision
    • Automatic contract exclusion via interface detection
    • Claim-on-demand system with claimDividends()
    • Tracks dividends per share, accumulated dividends per user
  4. Fee Structure Analysis:

    • Buy/Transfer/Refund: 0.25% total
    • DEX swaps: 0% (fee-exempt)
    • Fee recipients: Dev address (dev fees), holders (reflection fees), contract (reserve fees)

Phase 3: Access Control & Security Analysis (15 tok)

  1. Ownership Status:

    • Verified owner is 0x0000000000000000000000000000000000000000
    • Confirmed pending owner is also 0x00
    • All onlyOwner functions permanently disabled
  2. Immutability Implications:

    • No parameter adjustments possible
    • No emergency pause or circuit breaker
    • Dev address cannot be changed
    • Fee structure is permanent
    • No upgrade mechanism
  3. Security Patterns:

    • ReentrancyGuard on all ETH transfer functions
    • Math.mulDiv for precision-safe calculations
    • Minimum thresholds to prevent dust attacks
    • Zero address checks on critical operations
    • Balance verification before transfers
  4. Contract Detection:

    • 8 interface checks to identify contracts
    • Automatic dividend exclusion for detected contracts
    • Caching mechanism for gas optimization
    • Potential false negatives (smart wallets may not be detected)
  5. Edge Cases Identified:

    • Circulating supply approaching zero
    • Dividend precision loss with very small amounts
    • Burn cap boundary conditions
    • Refund pricing manipulation via flash loans (mitigated by fees)

Phase 4: Risk Assessment (18 tok)

  1. High Severity Risks:

    • H-1: Permanent immutability with no bug fix mechanism
    • H-2: Contract detection heuristics may misclassify addresses
    • H-3: Precision loss in extreme dividend scenarios
  2. Medium Severity Risks:

    • M-1: Refund price manipulation via flash loans (economically unfeasible)
    • M-2: Dev address compromise with no recovery
    • M-3: Burn cap creates economic phase shift
    • M-4: Dividend exclusion may not catch all contracts
    • M-5: No minimum liquidity requirements
  3. Low Severity Risks:

    • L-1: Unaudited despite testing claims
    • L-2: Gas costs vary significantly by scenario
    • L-3: DEX swap fee exemption may cause confusion
    • L-4: Minimum thresholds may exclude small users
  4. Informational Observations:

    • I-1: No emergency withdrawal for mistaken sends
    • I-2: ERC20Permit nonce implementation (Counter-based, secure but deprecated in newer OZ)
    • I-3: No price feed or oracle integration (reduces attack surface)

Phase 5: Documentation Synthesis (15 tok)

  1. Generated contract-analysis.md with executive summary, architecture diagrams, economic model, and observations
  2. Created functions.md cataloging all 18 external functions with detailed tabbed documentation
  3. Documented storage-layout.md mapping all state variables, immutable constants, and storage slots
  4. Compiled potential-risks.md with 15 identified risks across 5 severity levels
  5. Prepared methodology.md documenting analysis process and verification commands
  6. Assembled artifacts.md with source code, bytecode, and verification data

Token Cost Breakdown

PHASE DESCRIPTION TOKENS
Phase 0 Contract acquisition and source code retrieval 5 tok
Phase 1 Contract structure, inheritance, function catalog 10 tok
Phase 2 Economic model, fee structure, dividend mechanics 12 tok
Phase 3 Access control, security patterns, edge cases 15 tok
Phase 4 Risk assessment across all severity levels 18 tok
Phase 5 Documentation generation and synthesis 15 tok
TOTAL Complete Contract Analysis 75 tok

Note: Token costs are estimates based on typical conversation lengths and complexity. Actual consumption may vary by ±10-15% depending on API responses, iterative refinement, and verification steps.