~/hooklist — zsh
click anywhere to skip · Enter opens the pull request
pull/hooklist Public forked from Uniswap/hooklist · branch pull → main
★ Star — ⑂ Fork — ◉ Open PRs — upstream · live from GitHub

feat(hooks): add pull — a hook that ships as a pull request, paired with SpaceX #1

Open pull wants to merge 5 commits into Uniswap:main from pull:pull launching on Ethereum mainnet via Stockereum · pair SPCXon
p
pull opened this pull request Authorhook: PullHook@0.1.0pair: SPCXon
This is not a fork of hooklist. It is an entry in it.

Uniswap/hooklist is the public registry of Uniswap v4 hooks: every hook gets in through a pull request. This PR registers PullHook — the hook behind the PULL/SPCXon market on Stockereum, the first market where the launch is the pull request. Stockereum opens a permanent Uniswap v4 market against a tokenized stock; this hook decides when that market opens: at the merge.

What PullHook adds

  1. Merge-gated activation. The pool opens at the merge commit, not at a timestamp. There is no activation time to snipe, because there is no time — only a merge.
  2. Review registry. Reviewers approve on-chain: review(1, "lgtm"). Approvals become the first-block allowlist. Reviewers get the first block; snipers get CONFLICT.
  3. CODEOWNERS fee routing. The creator fee is split exactly as the CODEOWNERS file says. Want a different split? Open a PR.
  4. On-chain changelog. Every fee flush writes a commit hash to the hook log, so the token's history reads like git log.

Market

  • pair: PULL / SPCXon — tokenized SpaceX, on Stockereum · Uniswap v4 permanent market · no bonding curve, no seed capital
  • fee: Stockereum creator fee, routed by CODEOWNERS · holder rewards on
  • supply: fixed 1,000,000,000 · no creator allocation · no mint · no blacklist · no transfer tax

The market: $PULL / SPCXon

Ethereum mainnet, via Stockereum, priced in SpaceX. The hook is the PR; the token is the market it opens. Rockets have a launch window — PULL has a merge. The contract address lands in this thread at merge.

  • ✓ forge test — 12 passed, 0 failed
  • ✓ hooklist permissions detected
  • ✓ preflight: hooks/ethereum/pull.json valid · pair SPCXon
  • contract address
  • merge
⎇
pull added 5 commits · see Commits
h
hooklist-generatorbot commented

Hook permissions detected for src/PullHook.sol:PullHook

beforeInitialize false
afterInitialize false
beforeAddLiquidity false
afterAddLiquidity false
beforeRemoveLiquidity false
afterRemoveLiquidity false
beforeSwap true
afterSwap true
beforeDonate false
afterDonate false
beforeSwapReturnsDelta true
afterSwapReturnsDelta true
dynamicFee: false · upgradeable: false · requiresCustomSwapData: false · vanillaSwap: false swapAccess: merge-gated (new) · firstBlock: reviewers · chainId: 1 (ethereum) · pair: SPCXon
▲
market-preflightbot commented
✓ pull.json valid PullHook@0.1.0 · hooks/ethereum ✓ market PULL / SPCXon · Stockereum · uniswap-v4 · permanent ✓ fees creator fee → CODEOWNERS · venue: Stockereum · holder rewards: on ✓ supply 1,000,000,000 · creator allocation 0 ✓ activation merge · required approvals 2 · first block → reviewers ⏳ contract address pending ⏳ merge blocked until CA is set

Ready to merge once CA is set. Launching on Ethereum mainnet via Stockereum, paired with SPCXon.

you
Review this launch · stored in your browser, counts toward merge on this device
or type lgtm in the terminal below
Git graph · main is live from upstream (GitHub API), pull is this PR, the merge node is the launchlive

Merge = launch. When CA is set, the dashed node becomes the merge commit and the pool opens. No timestamp, no snipe window.

All checks
5 files · +412 −0

Contract PullHook

✓ Source verified Uniswap v4 hook not deployed yet · launches on Ethereum mainnet via Stockereum
—
Contract Source Code Solidity MIT
Contract Name
PullHook
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled
Yes with 200 runs
EVM Version
cancun
Market
PULL / SPCXon · Stockereum · Uniswap v4 · Ethereum mainnet
Hook permissions
beforeSwap · afterSwap · beforeSwapReturnsDelta · afterSwapReturnsDelta
src/PullHook.sol
Contract ABI (partial)
Read Contract — token (ERC-20) eth_call via public RPC
Read Contract — PullHook from pull.json · pre-deploy
Write Contract · needs an injected wallet (MetaMask / Rabby) not connected
Events emitted by PullHook
EventTopicsMeaning
Review(address indexed reviewer, uint8 verdict, string body)0x…someone reviewed the launch · 1 approve · 2 request changes
Merged(bytes32 indexed mergeCommit, uint256 block)0x…the merge. the pool opens in this block
FeeFlushed(bytes32 indexed commit, uint256 amount)0x…creator fee routed per CODEOWNERS; the hash is the changelog entry
Live logs appear here after deploy (polled from RPC by topic).
Pull request approvals · 0 / required

Token Approval Checker

allowance() via eth_callwhich contracts can spend your tokens — and revoke them
Checks the spenders below plus any custom one.
Allowances
Enter a wallet and a token, then Check.

pullscan

DexScreenerGoPlus securityRPCscan any Ethereum contract. no keys, straight from public APIs

Contract Saver

local watchlistcontracts you saved from Scan · notes · prices refresh from DexScreener
pull@hooklist(pull)$