Summary
10 fresh /api/v1/* surfaces return HTTP 404 (nginx HTML 404 page) on BOTH https://rustchain.org and https://explorer.rustchain.org. These are the peers/mining/attest/anchor/wallet-balance/wallet-lookup canonical surfaces that any blockchain client, miner, or attestor would call.
Distinct from #7251 (37 surfaces, claim #13643), #7252 (36 surfaces, claim #13648), and #7297 (14 surfaces, claim #13735). Zero endpoint overlap with any of the three prior clusters.
Endpoints (10/10 verified 404 on BOTH subdomains)
| # |
Path |
rustchain.org |
explorer.rustchain.org |
| 1 |
/api/v1/peers |
404 nginx |
404 nginx |
| 2 |
/api/v1/miners |
404 nginx |
404 nginx |
| 3 |
/api/v1/mining |
404 nginx |
404 nginx |
| 4 |
/api/v1/attest |
404 nginx |
404 nginx |
| 5 |
/api/v1/attest/challenge |
404 nginx |
404 nginx |
| 6 |
/api/v1/anchor |
404 nginx |
404 nginx |
| 7 |
/api/v1/attestation |
404 nginx |
404 nginx |
| 8 |
/api/v1/wallet/balance |
404 nginx |
404 nginx |
| 9 |
/api/v1/wallet/lookup |
404 nginx |
404 nginx |
| 10 |
/api/v1/blocks/recent |
404 nginx |
404 nginx |
20/20 404s confirmed on 2026-06-10 18:36 UTC (10:36 CST).
Live reproduction
for path in /api/v1/peers /api/v1/miners /api/v1/mining /api/v1/attest \
/api/v1/attest/challenge /api/v1/anchor /api/v1/attestation \
/api/v1/wallet/balance /api/v1/wallet/lookup /api/v1/blocks/recent; do
rc=$(curl -sk -o /dev/null -w "%{http_code}" --max-time 5 "https://rustchain.org${path}")
ex=$(curl -sk -o /dev/null -w "%{http_code}" --max-time 5 "https://explorer.rustchain.org${path}")
echo "$path rustchain.org=$rc explorer=$ex"
done
Output:
/api/v1/peers rustchain.org=404 explorer=404
/api/v1/miners rustchain.org=404 explorer=404
/api/v1/mining rustchain.org=404 explorer=404
/api/v1/attest rustchain.org=404 explorer=404
/api/v1/attest/challenge rustchain.org=404 explorer=404
/api/v1/anchor rustchain.org=404 explorer=404
/api/v1/attestation rustchain.org=404 explorer=404
/api/v1/wallet/balance rustchain.org=404 explorer=404
/api/v1/wallet/lookup rustchain.org=404 explorer=404
/api/v1/blocks/recent rustchain.org=404 explorer=404
Response sample (nginx 404)
HTTP/2 404
server: nginx
content-type: text/html
content-length: 146
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-rustchain: Proof-of-Antiquity
Body: <html><head><title>404 Not Found</title></head><body><center><h1>404 Not Found</h1></center><hr><center>nginx</center>
Why this is a fresh cluster, not a duplicate
| Issue |
Claim |
Endpoints |
Overlap with this cluster |
| #7251 |
#13643 |
37 surfaces |
0 |
| #7252 |
#13648 |
36 surfaces |
0 |
| #7297 |
#13735 |
14 surfaces |
0 |
| this |
(new) |
10 surfaces |
— |
The 10 paths here are exclusively the peers/mining/attest/anchor/wallet-balance/wallet-lookup cluster. None appear in any of the three prior claims. The closest related PR is my own #7152 (Bounty #305 fix7117), but that PR is for the bug of silent miner_id normalization on /wallet/balance, not for the 404 itself — the route's existence is unrelated to the validation work.
Severity
Functional bug. Each endpoint is unreachable to any client, miner, explorer frontend, or attestor that depends on it. The peers and mining surfaces are central to the consensus / mining UX; wallet-balance / wallet-lookup break the public wallet-query flow entirely; attest/challenge blocks the existing PR #7169 DoS hardening from being effective on a real client.
Suggested fix shape
The endpoints need to be registered in the Flask app. The /wallet/balance and /wallet/lookup routes are partially implemented in node/rustchain_v2_integrated_v2.2.1_rip200.py (the validation fix in PR #7152 already touches the query-string path), but the production routes are not being served. This is deployment drift, not a source-tree problem.
Reporter: @jdjioe5-cpu
Summary
10 fresh
/api/v1/*surfaces return HTTP 404 (nginx HTML 404 page) on BOTHhttps://rustchain.organdhttps://explorer.rustchain.org. These are the peers/mining/attest/anchor/wallet-balance/wallet-lookup canonical surfaces that any blockchain client, miner, or attestor would call.Distinct from #7251 (37 surfaces, claim #13643), #7252 (36 surfaces, claim #13648), and #7297 (14 surfaces, claim #13735). Zero endpoint overlap with any of the three prior clusters.
Endpoints (10/10 verified 404 on BOTH subdomains)
/api/v1/peers/api/v1/miners/api/v1/mining/api/v1/attest/api/v1/attest/challenge/api/v1/anchor/api/v1/attestation/api/v1/wallet/balance/api/v1/wallet/lookup/api/v1/blocks/recent20/20 404s confirmed on 2026-06-10 18:36 UTC (10:36 CST).
Live reproduction
Output:
Response sample (nginx 404)
Body:
<html><head><title>404 Not Found</title></head><body><center><h1>404 Not Found</h1></center><hr><center>nginx</center>Why this is a fresh cluster, not a duplicate
The 10 paths here are exclusively the peers/mining/attest/anchor/wallet-balance/wallet-lookup cluster. None appear in any of the three prior claims. The closest related PR is my own #7152 (Bounty #305 fix7117), but that PR is for the bug of silent miner_id normalization on
/wallet/balance, not for the 404 itself — the route's existence is unrelated to the validation work.Severity
Functional bug. Each endpoint is unreachable to any client, miner, explorer frontend, or attestor that depends on it. The peers and mining surfaces are central to the consensus / mining UX; wallet-balance / wallet-lookup break the public wallet-query flow entirely; attest/challenge blocks the existing
PR #7169DoS hardening from being effective on a real client.Suggested fix shape
The endpoints need to be registered in the Flask app. The
/wallet/balanceand/wallet/lookuproutes are partially implemented innode/rustchain_v2_integrated_v2.2.1_rip200.py(the validation fix in PR #7152 already touches the query-string path), but the production routes are not being served. This is deployment drift, not a source-tree problem.Reporter: @jdjioe5-cpu