Conditional Not investment advice
Phase 1 found the ZEAL token contract itself clean against raw bytecode — no mint, no admin gate, no blacklist, no tax, not a proxy — but left three questions as flat unknowns: holder concentration, who controls the LP, and the deployer's history. This phase answers all three directly from the chain's own RPC (eth_getLogs, eth_call, eth_getCode) — no block explorer was used as a source, only as later corroboration.
The answers cut both ways. Top-10 holders control 31.67% of supply (20.28% excluding the pool manager and the LP-holding vault). The main pool's $127k liquidity was traced end-to-end to a specific vault contract whose entire bytecode was read — no withdrawal function was found, but that is a "not found," not a certified permanent lock. And the deployer turns out to have shipped a second contract, a "Zeal Wrapped Zcash" (zZEC) token, that resolves phase 1's biggest red flag (the website's wrap/reserve claim) as real — but introduces a new one: its mint() is gated to a single EOA with no visible on-chain deposit proof.
Net effect on the phase-1 verdict: a wash, not a clear upgrade or downgrade. Still conditional. Still not a pass.
Method: everything below comes from direct JSON-RPC calls to https://rpc.mainnet.chain.robinhood.com (the default Python/urllib User-Agent gets a bare 403 from this endpoint — a curl-style header fixed it; no other workaround needed). Block explorers were used only to corroborate, never as a primary source.
| Item | Value |
|---|---|
| Token contract | 0x9fa1c5e90a11294f83a9f135b81ad1b537a5ffdc |
| Chain | Robinhood Chain, chainId 0x1237 = 4663 |
| Token deploy block (found by binary search) | 53,539,580 · 2026-09-03 15:59:53 UTC |
| Main pool init block | 53,550,438 (~67 min after token deploy) |
| Phase-2 scan snapshot block | 56,099,994 |
| Phase-2 pinned "live" block | 56,117,502 · 2026-09-06 16:23:25 UTC |
| Deployer EOA | 0x1c083f2f85acadae452c7512c45cd7c8a3ddbf03 |
| Total supply | 1,000,000,000 ZEAL (18 decimals), fixed at deploy |
Keccak-256 (evm_hash.py from the evm-token-due-diligence skill) was verified byte-for-byte against pycryptodome on two known vectors before use. A hand-written, stdlib-only CREATE-address derivation was verified against a known reference vector before being trusted for the deployer-history check.
Transfer event moved the entire 1B supply to 0x3c9d54ed...be1fc, which then forwarded 23,028,611 ZEAL (2.30%) to the deployer in the same transaction. Both addresses are now drained to zero — the bonding curve has fully graduated.balanceOf for the top 20 (19/20 exact match; the one mismatch is the PoolManager, which trades continuously — expected drift, not an error).mint() is gated to that single EOA, with no visible on-chain proof-of-deposit check found. This resolves phase 1's biggest red flag as half-true and introduces a new one.tx.origin, not the direct CREATE caller).Scanned every Transfer event for the token from deploy block 53,539,580 to a snapshot at 56,099,994 (27,195 events, 2,572 addresses touched), chunking eth_getLogs adaptively — this RPC caps results at 10,000 logs/call and separately times out on wide, log-sparse ranges. Balances were reconstructed by replay; summing every non-zero address plus the 0x0 mint sink nets to exactly zero, confirming no log was missed or double-counted.
| Rank | Address | ZEAL | % supply | Type |
|---|---|---|---|---|
| 1 | 0x267444d0...4952 | 81,632,653 | 8.163% | Contract — holds main pool's LP-position NFT (see §2) |
| 2 | 0x6df61024...4c77 | 38,763,568 | 3.876% | EIP-7702 smart-account wallet |
| 3 | 0x28018862...b34b | 36,171,592 | 3.617% | EOA |
| 4 | 0xd52f99a1...b771 | 33,719,127 | 3.372% | EOA |
| 5 | 0x8366a39c...0951 | 32,250,991 (live ~34.2M) | 3.225% | Uniswap V4 PoolManager (confirmed) |
| 6 | 0x5808c09d...4aee | 20,168,322 | 2.017% | EOA |
| 7 | 0x5fede549...773e | 20,085,963 | 2.009% | EOA |
| 8 | 0x0580537b...ea75 | 18,761,712 | 1.876% | EOA |
| 9 | 0xbfb567a8...b4d1 | 18,098,550 | 1.810% | EIP-7702 smart-account wallet |
| 10 | 0x686ada61...5255 | 17,000,000 | 1.700% | EIP-7702 smart-account wallet |
Deployer's current balance: 315,623 ZEAL (0.0316%) — matches phase-1 GoPlus exactly, cross-validating the whole reconstruction. Excluding the two clearly-infrastructure addresses (#1 the LP vault, #5 the PoolManager), the remaining top-8 wallets still hold 20.28% of supply.
EIP-7702 pattern: 29 of the top 60 holders carry a 7702 delegation (bytecode 0xef0100 + 20-byte implementation address). 23 of those delegate to the same implementation, 0xe6cae83b...8555b, whose selectors (entryPoint(), execute(address,uint256,bytes), isValidSignature / ERC-1271, ERC-721/1155 receiver hooks) match standard ERC-4337 smart-account software — consistent with mainstream wallet upgrades post-Pectra, not proof of one operator controlling 23 wallets. Confirming common ownership would need each account's owner-key storage slot, under an unconfirmed layout — not attempted.
Uniswap V4 PoolManager identified with high confidence at 0x8366a39c...0951 — 13 of 14 canonical IPoolManager selectors matched (computed independently via keccak256, not looked up): unlock, initialize, modifyLiquidity, swap, donate, sync, take, settle, settleFor, clear, mint/burn (ERC-6909), collectProtocolFees. Holds 32.25M ZEAL (rising, live) and 13,565+ native ETH. Not at Ethereum mainnet's canonical PoolManager address — this chain has its own independent V4 deployment (Permit2, by contrast, is at the canonical mainnet address).
10 pools exist for ZEAL (vs. 6 visible on DexScreener, which apparently only surfaces pools with meaningful activity). Only the main pool carries the "PonsV2: MemeHook" (0xe5e70264...e044) — Ownable2Step, owner 0x263ed295...019dd, live and not renounced. The hook's own bytecode does not contain the modifyLiquidity selector — it cannot itself add or remove liquidity.
| Step | Finding |
|---|---|
| 1 | ModifyLiquidity fired exactly once for this pool, ever, same tx as Initialize — never touched since |
| 2 | Caller = 0x58daec31...4fa7, confirmed via ERC-721 selector set to be the Uniswap V4 PositionManager periphery contract |
| 3 | PositionManager minted the position NFT (tokenId 1,652,966) to 0x267444d0...4952 in that same tx |
| 4 | Live ownerOf() confirms that address still holds the NFT today — not burned, not moved to a locker |
| 5 | That same address is independently the #1 ZEAL holder (8.16% of supply) — one contract, both the LP position and the largest token bag |
| 6 | Read its entire 1,969-byte bytecode: Ownable2Step, owner = the same key that owns the hook, not renounced; a second privileged setter is gated on the launchpad factory address, not on owner |
| 7 | Searched the entire bytecode for any call construction toward PositionManager's removal surface or PoolManager's modifyLiquidity: none found. The only outgoing call built anywhere is a generic ERC-20 transferFrom that pulls tokens in, not out |
Conclusion: no working on-chain lever was found, in this contract, for its owner or the factory to pull the ~$127k of main-pool liquidity. That is a "not found," not a certified permanent lock — it's a read of what the deployed bytecode contains, not an audit guarantee.
Enumerated deterministic CREATE addresses for nonces 0–44 (address = keccak256(rlp([sender, nonce]))[-20:], self-tested against a known vector first). Found 7 contracts directly deployed by this EOA (nonces 0, 5, 8, 9, 16, 38, 40) — ZEAL itself is not among them (deployed via CREATE2 by a factory).
0x0b151ff7...e402) is "Zeal Wrapped Zcash" (zZEC, 8 decimals, supply 0.98858567). This is exactly the wrap/reserve product zealtoken.com describes and phase 1 could not find in the ZEAL token's own code — it exists, in this separate contract. owner() is the deployer EOA directly; calling mint() from a non-owner address reverts with a custom error, confirming the gate. Whether mint() internally requires proof of a real ZEC deposit was not fully traced.Three more deployer-owned contracts (nonces 16, 38, 40) are Ownable with the same owner but were not further characterized. Nonces 0, 5, 8 do not expose a plain owner() and were not characterized either.
This is factual due diligence, not investment advice — nothing here is a recommendation to buy or sell. Read as risk framing only:
Could not verify (explicit — unknown is not a pass):
zZEC.mint() has any internal check tied to a verifiable real-ZEC deposit, beyond the confirmed onlyOwner gate.Present the key findings as a slide deck — arrow keys or buttons to navigate, fullscreen recommended.