Skip to content

Add Spectra Launchpad GERRY hook on base#609

Merged
Ponx merged 2 commits into
mainfrom
hooks/base/0x4627812f40bdd47c8fa1a4daac8f40bc26ef8040
Jun 10, 2026
Merged

Add Spectra Launchpad GERRY hook on base#609
Ponx merged 2 commits into
mainfrom
hooks/base/0x4627812f40bdd47c8fa1a4daac8f40bc26ef8040

Conversation

@hooklist-generator

Copy link
Copy Markdown

Summary

Bonding-curve memecoin launchpad that raises ETH along a linear curve, then graduates into a Uniswap V4 ETH/token pool. ERC-20 balances are mirrored as NFTs ("facets"); pool swap fees are harvested and distributed pro-rata to facet holders in ETH.

Flags

Flag Value
beforeInitialize false
afterInitialize false
beforeAddLiquidity false
afterAddLiquidity false
beforeRemoveLiquidity false
afterRemoveLiquidity false
beforeSwap false
afterSwap true
beforeDonate false
afterDonate false
beforeSwapReturnsDelta false
afterSwapReturnsDelta false
afterAddLiquidityReturnsDelta false
afterRemoveLiquidityReturnsDelta false

Properties

Property Value
dynamicFee false
upgradeable false
requiresCustomSwapData false
vanillaSwap true
swapAccess none

Warnings

  • Submitter-proposed description rejected: truncated mid-sentence (ends with "where holdin"). Using AI-generated description.

Closes #608

@vercel

vercel Bot commented Jun 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hooklist Ready Ready Preview, Comment Jun 10, 2026 8:53pm

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: hooks/base/0x4627812f40bdd47c8fa1a4daac8f40bc26ef8040.json

Address Flags ✓

0x...80400x8040 = bit 6 set → afterSwap = true. All other flag bits are 0. This matches the getHookPermissions() function in the source, which sets only p.afterSwap = true. Correct.

Properties ✓

  • dynamicFee: false_afterSwap is declared pure and returns (IHooks.afterSwap.selector, 0). No fee override, no updateDynamicLPFee(). ✓
  • upgradeable: false — No proxy pattern, no delegatecall, no mutable implementation storage, no SELFDESTRUCT. ✓
  • requiresCustomSwapData: false_afterSwap ignores all parameters including the bytes calldata hookData. ✓
  • vanillaSwap: true_afterSwap is a pure no-op returning (selector, 0). NFT sync occurs in _afterTokenTransfer (ERC20 callback), but nested swap calls in _maybePoke() are guarded by if (poolManager.isUnlocked()) return;, preventing re-entrancy during a swap. Swap output amounts are not modified. ✓
  • swapAccess: "none" — No beforeSwap flag; afterSwap has no access control. ✓

Metadata

  • chainId: 8453 — Matches base in chains.json. ✓
  • verifiedSource: true — Confirmed by source_meta.json ("verified": true). ✓
  • description — Accurately describes the linear bonding-curve launchpad, graduation into a Uniswap V4 ETH/token pool, ERC-20/NFT mirroring ("facets"), and pro-rata ETH fee distribution to facet holders. ✓

Name ✗

The name field is "Spectra Launchpad GERRY". The word "GERRY" does not appear anywhere in the verified on-chain source (not the contract name, no @title NatSpec, no file paths, no imports). The Etherscan contract name is SpectraLaunch and the NatSpec reads @notice Spectra launchpad token…. "GERRY" appears to be a personal identifier appended by the submitter.

Required fix: The name must be changed to "SpectraLaunch" (the Etherscan contract name) or "Spectra Launchpad" (derived from the NatSpec @notice). The unsubstantiated " GERRY" suffix must be removed.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: hooks/base/0x4627812f40bdd47c8fa1a4daac8f40bc26ef8040.json

Flags

Address 0x4627812f40bdd47c8fa1a4daac8f40bc26ef8040 — lower 14 bits of 0x8040 are 0x0040 = bit 6 → afterSwap only. This matches the flags section exactly, and is confirmed by getHookPermissions() which sets only p.afterSwap = true.

Properties

  • dynamicFee: false ✓ — _afterSwap is a pure stub returning (selector, 0). No lpFeeOverride, no updateDynamicLPFee. Static pool fee is POOL_FEE = 10_000.
  • upgradeable: false ✓ — No proxy pattern, no delegatecall, no SELFDESTRUCT, no mutable implementation pointer.
  • requiresCustomSwapData: false ✓ — _afterSwap accepts but completely ignores hookData. Swaps function normally without any hookData.
  • vanillaSwap: true ✓ — The afterSwap implementation is a pure function that simply returns (IHooks.afterSwap.selector, 0). It performs no observation, no state mutation, and modifies no swap behavior. Swap executes identically to a standard v4 pool.
  • swapAccess: "none" ✓ — No beforeSwap flag, no access control in the hook callbacks.

Metadata

  • verifiedSource: true ✓ — Confirmed by source_meta.json ("verified": true).
  • chainId: 8453 ✓ — Matches base entry in chains.json.
  • name: "Spectra Launchpad" ✓ — Contract name is SpectraLaunch; NatSpec @notice says "Spectra launchpad token". The name is a reasonable label substantiated by verified source.
  • description ✓ — Accurately describes the bonding-curve mechanic (_curveCost, buyFor, sell), graduation to V4 pool (_graduate), ERC-20/NFT mirroring via SpectraMirror, and fee harvesting/distribution via pokeFees/accFeesPerShareETH. No marketing, audit, or safety claims.

All fields are correct.

@Ponx Ponx merged commit d6211aa into main Jun 10, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

hook: GERRY on Base

1 participant