Single-page reference · Walrus Mainnet · WalForms
Mainnet Walrus HTTP publisher — 502 / DNS / PowerShell — mitigations & Sessions
This file is the only canonical write-up for the issue: operator letter, technical facts, ranked fixes (local publisher, testnet, auth), what WalForms implements, and how to frame a hackathon submission when public Mainnet HTTP publishers are unreliable.
1. Facts (symptoms & constraints)
HTTP 502 Bad Gateway
502 means the edge server (e.g. nginx/Cloudflare) could not get a healthy response from the upstream Walrus publisher process.
It is not proof that your JSON file or PUT shape is wrong.
Public infrastructure has no formal SLA —
System constraints — public infrastructure.
DNS: could not resolve host
curl: (6) Could not resolve host means the hostname does not resolve (or your network/DNS blocks it).
Some historic hostnames (e.g. certain *.walrus.space publisher names) have returned NXDOMAIN in public DNS — use operator-listed bases that actually resolve.
Windows PowerShell and curl
In PowerShell, curl is an alias for Invoke-WebRequest, which does not accept GNU curl flags like -X or --upload-file.
Always use curl.exe, Git Bash, WSL, or native PowerShell:
Invoke-WebRequest -Method Put -Uri "https://<PUBLISHER>/v1/blobs?epochs=5" -InFile ".\form-definition.json"
Walrus docs — Mainnet publishers
- Public aggregators and publishers: on Mainnet there are no public publishers without authentication (they consume SUI and WAL).
- operators.json lists many aggregators; publishers are enumerated heavily for testnet, not mainnet — integrations must not assume a single blessed HTTP base URL.
Subject: Mainnet Walrus HTTP publisher — 502 Bad Gateway on PUT /v1/blobs
Hello,
We operate WalForms (repository)
— a Walrus-native form platform on Sui Mainnet. End users upload JSON definitions and submissions via the Walrus publisher HTTP API:
PUT {publisher}/v1/blobs?epochs=5 with the raw body (file bytes).
Observed behavior
We consistently receive HTTP 502 Bad Gateway when calling community Mainnet publisher endpoints from browsers (fetch)
and from Windows (curl.exe):
| Endpoint | Result |
|---|---|
https://walrus-mainnet-publisher-1.staketab.org/v1/blobs?… |
502 (short body: “error code: 502”) |
https://publisher.walrus-mainnet.h2o-nodes.com/v1/blobs?… |
502 (nginx HTML “502 Bad Gateway”) |
The same PUT pattern against a Testnet publisher (e.g.
https://publisher.walrus-testnet.walrus.space/...) returns 200 and a valid blob ID,
so our client shape and network path appear sound.
Questions for operators
- Are these Mainnet HTTP URLs expected to accept unauthenticated PUT uploads today, or must production use an authenticated publisher / CLI / self-hosted publisher only?
- Do the 502 responses indicate a known outage or misconfiguration — is there a status channel or ETA?
- What is the canonical supported path for third-party apps to upload blobs on Mainnet today?
Thank you.
— [Your name / team]
Project: WalForms — Walrus Sessions
3. Ranked fixes (best → fastest)
“Best” depends on goal: production reliability vs unblocking yourself today vs demo video only.
3.1 Best for production (recommended by Walrus docs)
Run infrastructure you control or use an authenticated publisher / Walrus CLI with a funded wallet — see Operate a publisher, Authenticated publisher, Storing blobs (CLI).
3.2 Local publisher (same machine — funded with SUI and WAL)
Strong for CLI workflows and validating uploads. Important: a daemon bound to 127.0.0.1 is not reachable from a hosted site (Netlify) in visitors’ browsers — only from your PC (or after exposing via tunnel/VPS).
PUBLISHER_WALLETS_DIR=~/.config/walrus/publisher-wallets mkdir -p "$PUBLISHER_WALLETS_DIR" walrus publisher \ --bind-address "127.0.0.1:31416" \ --sub-wallets-dir "$PUBLISHER_WALLETS_DIR" \ --n-clients 1
Then upload (Windows — use curl.exe):
curl.exe -X PUT "http://127.0.0.1:31416/v1/blobs?epochs=5" --upload-file form-definition.json
Đề xuất “chạy publisher local”: đúng cho dev/CLI; muốn builder web public thì cần publisher có URL Internet hoặc backend proxy.
3.3 Fastest sanity check — Testnet publisher (no Mainnet blob IDs)
Confirms PUT and file bytes work. Testnet blob IDs are not valid for Mainnet on-chain transactions — use only for demos / learning unless your entire stack is on testnet.
curl.exe -X PUT "https://publisher.walrus-testnet.walrus.space/v1/blobs?epochs=5" --upload-file form-definition.json
3.4 Practical unblock for hosted WalForms + Mainnet
- Use the builder’s manual blob ID flow: upload via any working path (CLI, local publisher, etc.), paste blob ID to finish
create_form. - Implement multi-publisher failover and retries on 502/503/504 in the client (WalForms does both — see below).
- For production traffic to the browser, plan a public publisher URL or backend that performs uploads with credentials.
4. What WalForms implements
uploadBlobtries configured Mainnet publisher bases in order; on 502 / 503 / 504 it performs short backoff retries before switching to the next base.- If all HTTP uploads fail, the UI shows curl instructions (including
curl.exefor PowerShell) and a field to paste the blob ID so the Sui flow can continue. - Shareable respondent entry: myfeedback.html (
?id=<WalForm object ID>).
5. Sessions / hackathon — if public Mainnet HTTP stays broken
A valid submission does not require pretending Mainnet HTTP always works. Ship the real app, include at least one real submission path, and be transparent: document retries, manual blob continuation, operator outreach, and (for video) testnet or clearly labeled scenarios. This page itself is an ecosystem contribution (repro + docs + mitigations).
Theo đề bài: nếu không “fix” được hạ tầng ngoài repo, hướng report + mitigation trong app + minh bạch trong README/video vẫn là submission hợp lệ — miễn có repo công khai, app chạy được, và ít nhất một submission thật qua tool (kể cả nhờ manual blob ID sau CLI).
6. README / submission blurb (paste English)
WalForms stores form definitions and submissions as Walrus blobs anchored on Sui. For Mainnet, public HTTP publishers may return 502 with no SLA (per Walrus docs). WalForms implements multi-publisher failover, short retries on transient gateway errors, PowerShell-safe curl guidance, and a manual blob-ID continuation path when HTTP upload fails. We document the issue and mitigations for operators and users on walrus-mainnet-publisher-502-report.html. Demo footage may use Testnet where labeled, or Mainnet with manual blob upload — blob IDs are network-specific.