ForgePad is for sale.forgeveil88@gmail.comWhat's included →
Mainnet

Security

The contracts were reviewed with V12, Zellic's automated AI auditor (run #8519), together with the Slither and Aderyn analysers. This is an automated review, not a manual audit.

V12 reported 110 findings and its own triage ruled out 82. Each of the other 28 was checked by hand against the code.

Download the report (PDF)

18

Fixed

2

Fixed in code

8

Acknowledged

Fixed: the contracts that held no user money yet — FORGE staking, the stock-paired curve and the direct-launch tokens — were replaced on 29 Sep 2026 and verified. Fixed in code: the ETH curve holds FORGE's own launch and stays; both issues need unusual conditions and move no user balance. Acknowledged: the reason is given for each.

Found in our own review, October 2026

CriticalLaunches pausedForgeV4LiquidityManager

A graduating coin's pool could be opened first, at someone else's price

When a coin graduated, the contract that opens its Uniswap pool accepted a pool someone had already opened at a price of their own, and added the coin's liquidity there — which would let that person take part of the funds the curve raised. It was found in an internal review, not by V12. Robinhood Chain launches were paused the same day; the only coin on those contracts was the platform's own. The upgraded contracts will open the pool through a hook that only ForgePad's own contract can use, at the curve's final price.

The upgraded contracts — internal review, October 2026

The upgraded Robinhood Chain contracts fix the flaw above, move every fee to 85/7/8 and add the weekly jackpot. They were reviewed line by line, tested against the real Uniswap v4 on a copy of the chain — the attack replayed and refused — and deployed on Robinhood testnet, where their source is verified. This is an internal review, not an independent audit; one comes before mainnet.

  • R1-C01CriticalFixedForgeV4LiquidityManager

    Graduation pool could be created early by anyone, at any price

    The flaw that paused launches. Every ForgePad pool is now keyed with ForgeInitGuardHook, which lets only the manager create it; a graduation requires a fresh pool at the curve's own price. Replayed against the real Uniswap v4 on a fork of the chain: refused.

  • R1-H01HighFixedForgeV4LiquidityManager

    A creator's own pool could be created first at someone else's price

    The direct-launch path refuses any token a curve created, and joining an existing pool requires the deposit to match its price within 1%.

  • R1-M01MediumFixedForgeJackpot

    Jackpot could list only 16 tokens; other stocks' fees would be burned

    Raised to 128 (the stock curve lists about 80); a claim walks only the tokens its round held.

  • R1-M02MediumFixedForgeRevenue, ForgeLockedLiquidity

    Gas-capped payouts were open to a return-data bomb

    Payouts now copy no return data.

  • R1-M03MediumFixedForgeJackpot

    A misbehaving listed token could block a jackpot close or claim

    Token calls run with bounded gas; a failure is skipped, or kept for the winner to withdraw.

  • R1-L01LowFixedForgeTokenFactory

    Direct-launch creation fee had no ceiling

    Capped at 0.05 ETH, with an event on every change.

  • R1-L02LowAcknowledgedForgeJackpot

    The draw uses an L2 block hash, not a VRF

    No VRF on Robinhood Chain. The hash is the sequencer's, and someone watching alone could decline to draw and let a block expire; drawing is open to anyone and pays a small reward, so a draw does not wait.

  • R1-L03LowAcknowledgedForgeRevenue

    Fee tickets go to the account that called the curve

    A trade routed through another contract credits that contract; a prize it cannot claim returns to the pot after 8 weeks.

  • R1-L04LowAcknowledgedForgeV4LiquidityManager

    An allowed curve could block a graduation

    Only the owner (the Safe) can allow a curve; it could make a coin's graduation revert, never take its funds.

On Robinhood testnet — mainnet will use the same addresses:

Every open finding

  • #294379CriticalFixedForgeHolderRewards

    Owner can sweep all staked FORGE principal

    Confirmed. sweepUnregistered now refuses FORGE. Nothing was staked when it was replaced.

  • #294378CriticalFixed in codeIgnitionHoldBonus

    Abandoned pot sweep leaves later graduation claims unfunded

    Confirmed. The abandoned sweep now zeroes the pot. Needs a launch left open for 365 days; the live ETH curve (which holds FORGE) keeps the old code, the new stock curve has the fix.

  • #294148CriticalFixedForgeIgnitionQuoted

    Halt strands pot after all tokens are sold

    Confirmed. With nothing sold the pot stays for the sweep instead of merging into an unredeemable reserve.

  • #294249CriticalFixed in codeForgeIgnition

    Untracked ETH can be permanently stranded

    Confirmed, low impact: ETH sent to the contract by mistake, and rounding dust refunded at graduation, have no withdrawal path. No user balance is affected. Recovery path planned for the next curve version.

  • #294085HighFixedForgeIgnitionQuoted

    Quoted fee payouts can block trades

    Confirmed. A payout the asset refuses (issuer blocklist, rejecting hook) is now kept as owed and withdrawable; it can no longer revert a trade.

  • #294358HighFixedForgeIgnitionQuoted

    Reverting quoted-fee recipients can halt curve trading

    Same fix as #294085.

  • #294401HighFixedForgeIgnitionQuoted, IgnitionHoldBonus

    Unchecked uint128 casts corrupt curve and bonus accounting

    Confirmed for tokens with more than 2^128 units (open pairs only). All narrowing now uses SafeCast. Not reachable on the ETH curve.

  • #294146HighAcknowledgedForgeIgnitionQuoted

    Graduation vulnerable to fee-on-transfer quote assets

    Open pairs only (any token the creator chooses). Verified pairs are Robinhood stock tokens without transfer fees. Open pairs are marked unverified with an explicit risk warning.

  • #294396HighAcknowledgedForgeIgnitionQuoted

    Nominal outbound payouts underpay for lossy quote tokens

    Same scope and mitigation as #294146.

  • #294335HighFixedForgeDividendToken

    Native deposits forge token claims

    Confirmed and serious: 1 wei of ETH could make every reflection claim revert, or drain an ERC-20 reward pool. ETH is now refused unless holders are paid in ETH. 0 such tokens existed.

  • #294336HighFixedForgeDividendToken

    Threshold changes leave stale shares

    Confirmed. Claiming syncs shares first; anyone can sync an account.

  • #294339HighFixedForgeDividendToken

    Unbounded shares break dividend arithmetic

    Confirmed for extreme supplies. Supply is now capped at 2^112 units.

  • #294340HighFixedForgeDividendToken

    Eligibility deadlock permanently traps rewards

    Mitigated: the minimum balance is capped against circulating supply (burned tokens excluded).

  • #294351HighFixedseveral

    Native payout failures can block or forfeit entitlements

    Staking: claimTo lets a staker send rewards to another address. Curve sells and creator claims pay the caller's own address by design.

  • #294356HighFixedForgeHolderRewards

    Reward synchronization strands rounding residuals

    Confirmed (dust). The remainder is now carried to the next sync.

  • #294380HighFixedForgeHolderRewards

    A failing reward asset blocks claims for all assets

    Confirmed. claimTo(to, assets) claims asset by asset.

  • #294357HighAcknowledgedForgeLockedLiquidity

    Synchronous fee payouts can freeze locked-position collection

    Confirmed for stock-paired pools whose creator is blocklisted by the stock's issuer: that one position's fees wait. Other positions are unaffected. The locker is bound to the manager and cannot be replaced; deferred payouts are planned for its next version.

  • #294368HighAcknowledgedForgeV4LiquidityManager

    Whole-balance refunds let callers sweep manager assets

    Confirmed. Only affects assets left in the manager by mistake; it holds nothing between operations.

  • #294388HighAcknowledgedForgeFlywheel

    Spot-derived buyback floor permits sandwich attacks

    Design limitation. Configured at 0.25 ETH per call, 1 hour apart; these are settings the owner can change, not hard limits. A round trip pays 0.8–1% twice in fees. The relaunch makes the limits constants and prices the buyback over two points 30 minutes apart.

  • #294293MediumFixedForgeIgnitionQuoted

    Blocked assets bypass curated admission

    Confirmed. Every launch path now refuses a blocked asset.

  • #294398MediumFixedForgeIgnitionQuoted

    Owner can force healthy launches into redemption

    Confirmed. halt() now requires the asset to be publicly blocked first.

  • #294331MediumFixedForgeTokenBase

    Pair label bypasses sell-tax ban

    Confirmed. On Robinhood Chain no second pair can be added and a transfer into the pool is always a sell.

  • #294332MediumFixedForgeTokenBase

    Unbounded limits can freeze holders

    Confirmed. Limits are capped at 100%.

  • #294338MediumFixedForgeDividendToken

    Payout callback bypasses token controls

    Confirmed. ETH and ERC-20 payouts no longer run under the swap lock.

  • #294341MediumFixedDividendPayingUpgradeable

    Distribution remainders are permanently stranded

    Confirmed (dust). The remainder stays queued for the next distribution.

  • #294034LowAcknowledgedForgeIgnition, IgnitionCurve

    View quotes can revert on zero-amount inputs

    View functions only; trades are unaffected.

  • #294361LowAcknowledgedForgeIgnitionQuoted

    Trade quotes can report outcomes that execution rejects

    Quotes are estimates; the app applies the caps before sending.

  • #294362LowAcknowledgedForgeTokenBase

    Wallet cap checks gross rather than net amount

    Conservative: a cap can bind slightly early on a taxed buy.

The contracts, verified

The source code of each one matches what runs on chain exactly. Read it yourself.