Skip to content

fix(extensions): Base の Goldsky 読み取りを private endpoint に切り替える - #590

Merged
yu23ki14 merged 1 commit into
mainfrom
fix/goldsky-private-endpoint
Sep 16, 2026
Merged

yu23ki14 merged 1 commit into
mainfrom
fix/goldsky-private-endpoint

Conversation

@yu23ki14

Copy link
Copy Markdown
Member

なにが起きていたか

#582 の @toban/mcp を Base に出したところ、Goldsky を読むツールが tool execution failed で落ち続けました。Worker のログは次のとおりです。

mcp tool toban_member_status threw: Error: subgraph member status lookup failed: 429 Too Many Requests
  • 20 秒おきに 1 回ずつ呼んでも 429 になる
  • 同時刻に手元から同じ公開エンドポイントを叩くと 200

Goldsky の公開エンドポイントには「10 秒あたり 50 リクエスト」の制限があります。Workers の送信元 IP は多数の利用者で共有されるため、他人の通信で枠を使い切られていると考えています。discord-bot も同じ公開エンドポイントを Worker から叩いているので、同じ影響を受けているはずです。

変更

  • Base の GOLDSKY_GRAPHQL_ENDPOINT を /api/private/ に変更(mcp・discord-bot の wrangler.toml)
  • 新しい secret GOLDSKY_API_KEY を Authorization: Bearer で送る
  • 送るのは Goldsky への呼び出しだけ。 HATS_GRAPHQL_ENDPOINT(Base では The Graph = 第三者)には送らない。両パッケージでテストに固定しました(修正を外すとテストが落ちることも確認済み)
  • Sepolia は従来どおり公開エンドポイント。キー未設定ならヘッダーは付きません
  • DEPLOYMENT.md §6-2 の secret 一覧に GOLDSKY_API_KEY を追加

確認

  • private endpoint の有効化は済み(キー付きで 200、キーなしで 401)。公開エンドポイントも有効のまま(フロントエンドが使うため)
  • @toban/mcp テスト 56 本、@toban/discord-bot テスト 67 本、typecheck、Biome 通過
  • wrangler deploy --dry-run --env base で両 Worker の GOLDSKY_GRAPHQL_ENDPOINT が private URL になることを確認

デプロイ手順(マージ後)

secret を先に入れてからデプロイします。Worker は既に存在するのでプレースホルダの心配はありません。旧コードは GOLDSKY_API_KEY を読まないので、先に入れても影響はありません。逆の順にすると、デプロイから投入までの間、全ての Goldsky 呼び出しが 401 になります。

pnpm --filter @toban/discord-bot exec wrangler secret put GOLDSKY_API_KEY --env base < <key file>
pnpm --filter @toban/mcp         exec wrangler secret put GOLDSKY_API_KEY --env base < <key file>
pnpm --filter @toban/discord-bot deploy:base
pnpm --filter @toban/mcp         deploy:base

範囲外(気づいたこと)

  • toban-sepolia/1.0.3 の公開エンドポイントが 404 を返します(CLAUDE.md の記載と不一致)
  • サブグラフの handleTokenMinted が AmountOfMintThanksToken を save() しておらず、toban_member_status の thxSentTotal が常に 0 になります。サブグラフの再デプロイが要るので別 PR にします

🤖 Generated with Claude Code

Goldsky の公開エンドポイントは Cloudflare Workers から叩くと 429 Too Many
Requests が常態化し、@toban/mcp の読み取りツールがほぼ全滅していた(手元からは
同時刻に 200)。Workers の送信元 IP が共有されているため、公開エンドポイントの
レート制限を他の利用者に使い切られていると考えられる。

- Base の GOLDSKY_GRAPHQL_ENDPOINT を /api/private/ に変更(mcp・discord-bot)
- 新しい secret GOLDSKY_API_KEY を Authorization: Bearer で送る。送るのは
  Goldsky への呼び出しだけで、HATS_GRAPHQL_ENDPOINT(Base では The Graph)には
  送らない。これをテストで固定した
- Sepolia は従来どおり公開エンドポイント(キー未設定ならヘッダー無し)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 16, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated
toban Building Building Preview Sep 16, 2026 8:57am UTC

Request Review

@yu23ki14
yu23ki14 merged commit f862e1a into main Sep 16, 2026
3 of 4 checks passed

This branch was successfully deployed

1 active deployment
Preview — 98dbd359 Deployed Sep 16, 2026 by vercel[bot]
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.

1 participant