Omnigraph
그래프 엔진으로 컨텍스트를 조립하고, 객체 저장소 기반에서 에이전트가 코드처럼 그래프 데이터를 분기·타입·검토·병합·감사·거버넌스합니다
Degen Trash Panda의 아트·특성이 민팅 이후 변했는지 확인. 팬더 번호 입력 시 온체인 메타데이터 전체 이력 제공
Has a Degen Trash Panda's art or traits changed since mint? Enter a Panda number to see its full on-chain metadata history.
데이터GitHub @0xgdr온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Read-only history and verdict tool for Degenerate Trash Pandas (Solana NFTs). Enter a Panda number and it rebuilds that Panda's metadata history from chain and says whether its image or traits have changed since mint. No wallets, no signing, no write calls.
bun install
cp .env.example .env # then set RPC_URL
.env can also be a 1Password Environment mount. Bun's automatic .env loading skips that
named pipe, so the dev, index and fixtures scripts pass --env-file=.env explicitly.
| Var | Default | Notes |
|---|---|---|
RPC_URL | public mainnet RPC | Full endpoint including any provider key (e.g. Helius ?api-key=). Secret: never logged, only its host. |
RPC_RPS | 8 | Token-bucket rate limit for RPC calls. |
RPC_CONCURRENCY | 4 | RPC calls in flight at once. |
CACHE_DIR | .cache | File cache (gitignored). |
PORT | 3000 | |
PUBLIC_URL | request's host | Site origin used in share-card URLs. Only needed if the host can't be read from the request. |
bun run dev # server with hot reload (Bun HTML imports bundle web/)
bun run start # production mode (bundles the page first)
bun run build # bundle the page and the server into src/*.gen.js (Vercel's build step)
bun test # offline unit tests on test/fixtures
bun run typecheck
bun run index # rebuild data/panda-index.json (needs a DAS-capable RPC_URL, e.g. Helius)
bun run fixtures # re-record test/fixtures/6872 (needs RPC_URL)
bun --env-file=.env scripts/find-unlisted-mints.ts # one-off, ~50 min: see below
bun --env-file=.env scripts/snapshot-metadata.ts # every Panda's on-chain metadata URI (~200 calls)
bun --env-file=.env scripts/mint-traits.ts # one-off, ~2½ h: every Panda's mint-day traits
docs/collection-history.md records what the chain shows about the collection (candy machines,
Immortals, un-exalted and off-collection Pandas, token burns, the October 2026 move off Shadow
Drive) and which committed data file backs each fact, so none of it needs re-checking on chain.
data/extra-mints.json lists Pandas that DAS won't list, because only their token was burned (supply
0, metadata left behind). The index build fetches them by id, and adds any Panda it loses between
builds there itself. scripts/find-unlisted-mints.ts found the first nine by reading every mint the
original candy machine made; that list is kept in data/original-mints.json, so it needn't run again.
The page is a plain web/index.html. In development src/site.ts imports it and passes it to
Bun.serve({ routes }), and Bun bundles its <script> and <link> tags on request with hot
reload. In production scripts/build-page.ts bundles it once into src/page.gen.js
(gitignored), which the server imports, so the page ships with the code on any host. On Vercel the
server also runs from a bundle, src/site.gen.js, with its packages inlined (see ops/vercel.md).
| Route | |
|---|---|
GET /api/panda/:n | Panda number (6872, #6872, 006872) or a mint. Needs data/panda-index.json. |
GET /api/mint/:mint | Any mint. Warns when it is not a verified DTP. |
GET /healthz | ok |
GET /og.png | Share card (1200×630) |
Errors are JSON {error, detail}: 400 bad input, 404 not in the index or missing, 409 duplicate
number (with candidates), 502 RPC failed after retries, 503 index not built.
The first uncached history takes a while: about a minute on the public RPC (it rate-limits
getTransaction hard), a few seconds with Helius. After that, a Panda is served from the cache
at once and re-checked against chain in the background, at most once a minute.
Some history can't be fully recovered, e.g. metadata moved to GenesysGo Shadow Drive in January
2023 that now returns 404. See docs/data-gaps.md.
Vercel: see ops/vercel.md, which also covers other hosts.
test/fixtures/6872/ holds the raw getTransaction results for every tx that has a Token
Metadata instruction on Panda #6872's metadata account, one noise tx, the JSON of each URI and
the current account. They are public chain data, committed, and not regenerated in CI. The
recording script never writes the RPC URL into any file.