尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Bubble map for gno.land — addresses & realms as bubbles, transfers/MsgCall as links. Inspired by Bubblemaps.
Stack (v0): Go watcher + HTTP API · Dgraph · Onbloc tx-indexer GraphQL (gnoland-1).
cmd/bubblegno/ # single binary (API + watcher)
internal/
config/ # env config
onbloc/ # GraphQL client → indexer.onbloc.xyz
graph/ # Dgraph client stub
api/ # HTTP /healthz /v0/graph /v0/node/{id} + static web/dist
deploy/dgraph/ # GraphQL schema + docker volume
web/ # Vite + TS force-directed bubble map (force-graph)
cd ~/go/src/github.com/albttx/bubblegno.xyz
cp .env.example .env
make up # Dgraph zero + alpha
# wait a few seconds for alpha healthy
make schema # apply deploy/dgraph/schema.graphql
make run # API :8090 + watcher stub (Onbloc probe)
curl localhost:8090/healthzhttp://localhost:8080| Env | Default |
|---|---|
BUBBLEGNO_HTTP_ADDR | :8090 |
BUBBLEGNO_DGRAPH_HTTP | http://localhost:8080 |
BUBBLEGNO_ONBLOC_GRAPHQL | https://indexer.onbloc.xyz/graphql/query |
BUBBLEGNO_CHAIN_ID | gnoland-1 |
BUBBLEGNO_START_HEIGHT | 0 |
# dry-run a small window (no Dgraph)
BUBBLEGNO_START_HEIGHT=780 go run ./cmd/bubblegno -dry-run -once -window=50 -max-height=850
# with Dgraph up + schema applied
make up && make schema
BUBBLEGNO_START_HEIGHT=780 go run ./cmd/bubblegno -once -window=50 -max-height=850
Flags: -window, -once, -dry-run, -max-height, -serve-only.
Onbloc filter: block_height: { gt, lt } (no gte/lte) + success: { eq: true }. Cap ~10k rows/query.
All JSON, CORS allowed for http://localhost:* / 127.0.0.1:* / bubblegno.xyz.
GET /healthz → {ok, service, chain, dgraph: bool}GET /v0/graph?seed=&depth=1&limit=150
seed: g1… address or realm gno.land/r/… (optional). Empty → busiest nodes from the latest ~3k transfers/calls/deploys.depth 1–3 hops, limit 1–500 nodes.{nodes:[{id,address,kind,pkgPath,label,txCount,volumeUgnot,degree,size}], links:[{source,target,weight,volumeUgnot,kinds}], seed, depth, limit, sync:{chainId,lastHeight}, warning?}Link rows yet).size = clamp(4 + 2.5·log2(1+degree) + 3·log10(1+volumeUgnot/1e6), 4, 48)GET /v0/node/{id} (id may contain /) → node fields + neighbors[], recentTransfers[], recentCalls[], deploys[], sync.GET / → SPA from web/dist (override with BUBBLEGNO_WEB_DIR).cd web
npm i # or: bun i
npm run dev # http://localhost:5173 → API http://localhost:8090 (VITE_API_BASE to override)
npm run build # web/dist, then served by bubblegno at http://localhost:8090/
make up && make schema
make build && ./bin/bubblegno # API :8090 + watcher (resumes from SyncState in Dgraph)
./bin/bubblegno -serve-only # API only
BUBBLEGNO_HTTP_ADDR=:8091 ./bin/bubblegno -serve-only # side-by-side API while ingest owns :8090
Restart is safe: watcher resumes from SyncState.lastHeight.
ghcr.io/albttx/bubblegno — built and pushed by .github/workflows/ghcr.yml on every push to main (:latest, :<sha>) and on v* tags.docker build -t bubblegno:local .docker-compose.prod.yml (Dgraph zero/alpha bound to 127.0.0.1 + api container on :8090, env from /etc/bubblegno.env):docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
web/ is deployed on Vercel (bubblegno.xyz) and talks to the API.Link aggregates + Account txCount/volumeUgnot/degree → API reads them directlymax elements per query reached (10000) without tight filters — always bound block_height.