Skip to content

Commit 7556a95

Browse files
JOYclaude
andcommitted
fix: pin frontend image digest, fix GAS_TRACKER_UNITS validation
- Pin frontend image to sha256 digest instead of :latest to prevent upstream breakage (caused 502 outage on doscan.io + test.doscan.io) - Fix GAS_TRACKER_UNITS from ['nDOS'] to ['gwei'] (new Blockscout validation only accepts 'usd' or 'gwei') - Fix beta compose: use archive node RPC, remove avalanchego dependency, fix caddy healthcheck - Add env var documentation comments to common-blockscout and frontend envs - Expand DOScan-ARCHITECTURE.md with microservices details and BENS docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b070271 commit 7556a95

7 files changed

Lines changed: 90 additions & 23 deletions

docker-compose/docker-compose-beta.yml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ services:
4242
env_file:
4343
- ./envs/common-blockscout.env
4444
- ./envs/common-blockscout-beta.env
45-
networks:
46-
- default
47-
- avalanchego
4845
ports:
4946
- "127.0.0.1:14000:4000"
5047
healthcheck:
@@ -62,7 +59,7 @@ services:
6259
depends_on:
6360
backend:
6461
condition: service_healthy
65-
image: metados/blockscout-frontend:latest
62+
image: metados/blockscout-frontend@sha256:3554f66094aaddc235bae3800a6766fb6c0c1826a0a527eeceba9133509b78df
6663
pull_policy: always
6764
restart: always
6865
environment:
@@ -127,7 +124,7 @@ services:
127124
extra_hosts:
128125
- "host.docker.internal:host-gateway"
129126
environment:
130-
USER_OPS_INDEXER__INDEXER__RPC_URL: "http://host.docker.internal:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/rpc"
127+
USER_OPS_INDEXER__INDEXER__RPC_URL: "http://20.195.24.239:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/rpc"
131128
USER_OPS_INDEXER__INDEXER__ENTRYPOINTS__V08: "true"
132129
USER_OPS_INDEXER__INDEXER__ENTRYPOINTS__V08_ENTRY_POINT: "0x433709009B8330FDa32311DF1C2AFA402eD8D009"
133130
USER_OPS_INDEXER__INDEXER__ENTRYPOINTS__V06: "false"
@@ -180,11 +177,11 @@ services:
180177
- "10080:80"
181178
- "10081:8080"
182179
healthcheck:
183-
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/"]
180+
test: ["CMD", "caddy", "version"]
184181
interval: 30s
185182
timeout: 5s
186183
retries: 3
187-
start_period: 10s
184+
start_period: 5s
188185

189186
volumes:
190187
redis_data:
@@ -193,6 +190,3 @@ volumes:
193190

194191
networks:
195192
default:
196-
avalanchego:
197-
name: avalanchego_default
198-
external: true

docker-compose/docker-compose-mainnet.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ services:
9191
depends_on:
9292
backend:
9393
condition: service_healthy
94-
image: metados/blockscout-frontend:latest
94+
image: metados/blockscout-frontend@sha256:3554f66094aaddc235bae3800a6766fb6c0c1826a0a527eeceba9133509b78df
9595
pull_policy: always
9696
restart: always
9797
container_name: frontend

docker-compose/docker-compose-testnet.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ services:
104104
frontend:
105105
depends_on:
106106
- backend
107-
image: metados/blockscout-frontend:latest
107+
image: metados/blockscout-frontend@sha256:3554f66094aaddc235bae3800a6766fb6c0c1826a0a527eeceba9133509b78df
108108
pull_policy: always
109109
platform: linux/amd64
110110
restart: always

docker-compose/envs/common-blockscout-beta.env

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
# Docker Compose loads base first, then this file overrides.
66
# =============================================================================
77

8-
# RPC - local AvaGo-Mainnet container (avalanchego_default network)
9-
ETHEREUM_JSONRPC_HTTP_URL=http://AvaGo-Mainnet:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/rpc
10-
ETHEREUM_JSONRPC_TRACE_URL=http://AvaGo-Mainnet:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/rpc
11-
ETHEREUM_JSONRPC_WS_URL=ws://AvaGo-Mainnet:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/ws
8+
# RPC - archive node (20.195.24.239) — same node as mainnet doscan.io
9+
ETHEREUM_JSONRPC_HTTP_URL=http://20.195.24.239:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/rpc
10+
ETHEREUM_JSONRPC_TRACE_URL=http://20.195.24.239:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/rpc
11+
ETHEREUM_JSONRPC_WS_URL=ws://20.195.24.239:9650/ext/bc/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/ws
1212
ETHEREUM_JSONRPC_DISABLE_ARCHIVE_BALANCES=false
1313

1414
# Database - local PostgreSQL

docker-compose/envs/common-blockscout.env

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ ETHEREUM_JSONRPC_WS_URL=ws://host.docker.internal:9650/ext/bc/22v7AG7h6qaVxd4bLv
2626
# ETHEREUM_JSONRPC_HTTP_HEADERS=
2727
# ETHEREUM_JSONRPC_HTTP_GZIP_ENABLED=
2828
# ETHEREUM_JSONRPC_WAIT_PER_TIMEOUT=
29+
# ETHEREUM_JSONRPC_HTTP_INSECURE= # Allow insecure HTTP connections
30+
# ETHEREUM_JSONRPC_USER= # Basic auth username for RPC
31+
# ETHEREUM_JSONRPC_PASSWORD= # Basic auth password for RPC
32+
# ETHEREUM_JSONRPC_PENDING_TRANSACTIONS_TYPE= # Pending tx fetch method (default)
33+
# ETHEREUM_JSONRPC_RECEIPTS_BY_BLOCK=false # Fetch receipts by block instead of per tx
34+
# ETHEREUM_JSONRPC_MAX_RECEIPTS_BY_BLOCK=1000 # Max txs for block receipt fetching
2935
# ETHEREUM_JSONRPC_GETH_TRACE_BY_BLOCK=
3036
# ETHEREUM_JSONRPC_GETH_ALLOW_EMPTY_TRACES=
3137
# ETHEREUM_JSONRPC_DEBUG_TRACE_TRANSACTION_TIMEOUT=

docker-compose/envs/common-frontend.env

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# =============================================================================
22
# DOS Chain Mainnet - Frontend Environment Variables
33
# https://doscan.io
4-
# Last Updated: 2026-02-16
4+
# Last Updated: 2026-03-05
55
# Blockscout Frontend latest
66
# Docs: https://docs.blockscout.com/setup/env-variables/frontend-common-envs
77
# =============================================================================
@@ -12,6 +12,8 @@
1212
NEXT_PUBLIC_APP_PROTOCOL=https
1313
NEXT_PUBLIC_APP_HOST=doscan.io
1414
NEXT_PUBLIC_APP_ENV=production
15+
# NEXT_PUBLIC_APP_INSTANCE_ID= # Unique instance ID (multi-instance deployments)
16+
# NEXT_PUBLIC_MAINTENANCE_ALERT_MESSAGE= # Custom maintenance banner text
1517

1618
# =============================================================================
1719
# BLOCKCHAIN PARAMETERS
@@ -28,6 +30,8 @@ NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18
2830
NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE=validation
2931
NEXT_PUBLIC_NETWORK_TOKEN_STANDARD_NAME=ERC
3032
NEXT_PUBLIC_IS_TESTNET=false
33+
# NEXT_PUBLIC_VALIDATORS_CHAIN_TYPE=poa # Validator display type: aura, poa, stability
34+
# NEXT_PUBLIC_NETWORK_ALARMS= # Network alarm notifications config
3135

3236
# =============================================================================
3337
# API CONFIGURATION
@@ -37,6 +41,8 @@ NEXT_PUBLIC_API_HOST=doscan.io
3741
NEXT_PUBLIC_API_BASE_PATH=/
3842
NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL=wss
3943
NEXT_PUBLIC_API_SPEC_URL=https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
44+
# NEXT_PUBLIC_API_TIMEOUT=10000 # API request timeout in ms (default: 10000)
45+
# NEXT_PUBLIC_SAFE_TX_SERVICE_URL= # Safe (Gnosis Safe) transaction service API
4046

4147
# =============================================================================
4248
# UI CONFIGURATION - HOMEPAGE
@@ -78,12 +84,15 @@ FAVICON_MASTER_URL=https://raw.githubusercontent.com/DOSLabs/DOScan-Frontend-Con
7884
NEXT_PUBLIC_PROMOTE_BLOCKSCOUT_IN_TITLE=false
7985
NEXT_PUBLIC_OG_DESCRIPTION=Blockchain explorer for DOS Chain. DOScan is an analytics tool for exploring DOS transactions, addresses, statistics, and other platform activities.
8086
NEXT_PUBLIC_OG_IMAGE_URL=https://raw.githubusercontent.com/DOSLabs/DOScan-Frontend-Configs/main/configs/og-images/doscan.png
87+
# NEXT_PUBLIC_META_KEYWORDS= # Meta keywords for SEO
8188

8289
# =============================================================================
8390
# UI CONFIGURATION - ADDRESS & CONTRACT VIEWS
8491
# =============================================================================
8592
NEXT_PUBLIC_VIEWS_CONTRACT_SOLIDITYSCAN_ENABLED=true
8693
NEXT_PUBLIC_VIEWS_TOKEN_SCAM_TOGGLE_ENABLED=true
94+
# NEXT_PUBLIC_VIEWS_ADDRESS_IDENTICON_TYPE=jazzicon # Address icon: default, jazzicon, gradient
95+
# NEXT_PUBLIC_VIEWS_TOKEN_HOLDER_DISTRIBUTION_ENABLED=true # Token holder distribution chart
8796

8897
# =============================================================================
8998
# UI CONFIGURATION - NFT VIEWS
@@ -110,7 +119,7 @@ NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED=true
110119
# FEATURE: GAS TRACKER
111120
# =============================================================================
112121
NEXT_PUBLIC_GAS_TRACKER_ENABLED=true
113-
NEXT_PUBLIC_GAS_TRACKER_UNITS=['nDOS']
122+
NEXT_PUBLIC_GAS_TRACKER_UNITS=['gwei']
114123

115124
# =============================================================================
116125
# FEATURE: ADVANCED FILTER
@@ -127,6 +136,7 @@ NEXT_PUBLIC_ADMIN_SERVICE_API_HOST=https://admin-rs.services.blockscout.com
127136
# FEATURE: BLOCKCHAIN INTERACTION (WALLET CONNECT)
128137
# =============================================================================
129138
NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=4b6b77d337588564379b0ef8f3a5c479
139+
# NEXT_PUBLIC_WALLET_CONNECT_RELAY_URL= # Custom WalletConnect relay server
130140

131141
# =============================================================================
132142
# FEATURE: ADS
@@ -138,6 +148,9 @@ NEXT_PUBLIC_AD_TEXT_PROVIDER=none
138148
# FEATURE: GOOGLE ANALYTICS
139149
# =============================================================================
140150
NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID=G-HHJGT5F2WK
151+
# NEXT_PUBLIC_GOOGLE_TAGMANAGER_ID= # Google Tag Manager container ID
152+
# NEXT_PUBLIC_MIXPANEL_ID= # Mixpanel analytics project ID
153+
# NEXT_PUBLIC_PLAUSIBLE_ANALYTICS_DOMAIN= # Plausible Analytics domain
141154

142155
# =============================================================================
143156
# FEATURE: API DOCUMENTATION
@@ -194,6 +207,7 @@ NEXT_PUBLIC_GAS_REFUEL_PROVIDER_CONFIG={'name':'DOS Faucet','url_template':'http
194207
# FEATURE: USER OPERATIONS (ERC-4337)
195208
# =============================================================================
196209
NEXT_PUBLIC_HAS_USER_OPS=true
210+
# NEXT_PUBLIC_USER_OPS_INDEXER_API_HOST= # User ops indexer API (set in testnet override)
197211

198212
# =============================================================================
199213
# FEATURE: STATS SERVICE
@@ -215,9 +229,31 @@ NEXT_PUBLIC_METADATA_ADDRESS_TAGS_UPDATE_ENABLED=true
215229
# FEATURE: METASUITES
216230
# =============================================================================
217231
NEXT_PUBLIC_METASUITES_ENABLED=true
232+
# NEXT_PUBLIC_METASUITES_API_HOST= # Custom Metasuites API endpoint
218233

219234
# =============================================================================
220235
# FEATURE: WEB3 WALLETS
221236
# =============================================================================
222237
NEXT_PUBLIC_WEB3_WALLETS=["metamask","rabby","coinbase","token_pocket"]
223238
NEXT_PUBLIC_WEB3_DISABLE_ADD_TOKEN_TO_WALLET=false
239+
240+
# =============================================================================
241+
# FEATURE: STAKING & VALIDATORS (NOT YET CONFIGURED)
242+
# =============================================================================
243+
# NEXT_PUBLIC_STAKING_ENABLED=false # Enable staking info display
244+
# NEXT_PUBLIC_VALIDATORS_SORTING_ENABLED=true # Enable validator list sorting
245+
246+
# =============================================================================
247+
# FEATURE: ROLLUP-SPECIFIC (NOT APPLICABLE - DOS Chain is L1)
248+
# =============================================================================
249+
# NEXT_PUBLIC_IS_L2_NETWORK=false
250+
# NEXT_PUBLIC_L1_BASE_URL=
251+
# NEXT_PUBLIC_OP_STACK_ENABLED=false
252+
# NEXT_PUBLIC_ARBITRUM_ENABLED=false
253+
# NEXT_PUBLIC_ZKEVM_ENABLED=false
254+
255+
# =============================================================================
256+
# FEATURE: SWAP (NOT YET CONFIGURED)
257+
# =============================================================================
258+
# NEXT_PUBLIC_SWAP_ENABLED=false
259+
# NEXT_PUBLIC_SUPPORTED_SWAP_CHAINS=

docs/DOScan-ARCHITECTURE.md

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -431,15 +431,46 @@ az vm run-command invoke --resource-group METADOS --name dev \
431431
| Database | `db` | 7432 | `postgres:15` (mainnet/testnet) / external PostgreSQL 17 (beta) |
432432
| Redis | `redis-db` | 6379 | `redis:alpine` |
433433

434-
### Microservices
434+
### Microservices (from [blockscout-rs](https://github.com/blockscout/blockscout-rs))
435+
436+
All microservices run as official Docker images from `ghcr.io/blockscout/`. No fork needed — pull image, configure via env vars.
437+
438+
#### In Use (6/12)
435439

436440
| Service | Container | Port | Image | Purpose |
437441
|---------|-----------|------|-------|---------|
438442
| Smart Contract Verifier | `smart-contract-verifier` | 8043 | `ghcr.io/blockscout/smart-contract-verifier:latest` | Verify Solidity/Vyper contracts |
439-
| Visualizer | `visualizer` | 8044 (mainnet) / 8051 (testnet) | `ghcr.io/blockscout/visualizer:latest` | Sol2UML diagrams |
440-
| Sig Provider | `sig-provider` | 8045 | `ghcr.io/blockscout/sig-provider:latest` | Method signatures |
441-
| User Ops Indexer | `user-ops-indexer` | 8090 | `ghcr.io/blockscout/user-ops-indexer:latest` | ERC-4337 indexing (testnet only) |
442-
| Stats | `stats` | 8052 | `ghcr.io/blockscout/stats:latest` | Blockchain statistics (mainnet + testnet) |
443+
| Visualizer | `visualizer` | 8044 (mainnet) / 8051 (testnet) | `ghcr.io/blockscout/visualizer:latest` | Sol2UML contract diagrams |
444+
| Sig Provider | `sig-provider` | 8045 | `ghcr.io/blockscout/sig-provider:latest` | Function/event signature aggregator |
445+
| User Ops Indexer | `user-ops-indexer` | 8090 | `ghcr.io/blockscout/user-ops-indexer:latest` | ERC-4337 user operations indexing |
446+
| Stats | `stats` | 8052 | `ghcr.io/blockscout/stats:latest` | Blockchain statistics & charts |
447+
| BENS (blockscout-ens) | `dos-names-bens` | 18050 | `ghcr.io/blockscout/bens:latest` | DOS Name Service indexing (on dev VM, see below) |
448+
449+
#### Not In Use (6/12)
450+
451+
| Service | Why Not Used |
452+
|---------|-------------|
453+
| **eth-bytecode-db** | Cross-chain bytecode DB for auto-verification — single chain, not needed yet |
454+
| **interchain-indexer** | Universal Bridge Indexer — could use for ICM/ICTT bridge indexing (future) |
455+
| **proxy-verifier** | Multi-chain verification backend — already have smart-contract-verifier |
456+
| **da-indexer** | Celestia/EigenDA blob collection — DOS Chain doesn't use DA layers |
457+
| **tac-operation-lifecycle** | TON Application Chain specific — not applicable |
458+
| **multichain-aggregator** | Aggregate multiple Blockscout instances + interop — mainnet/testnet run separately |
459+
460+
#### BENS (blockscout-ens) — DOS Name Service
461+
462+
Runs on dev VM (`20.198.249.62`), separate from the main DOScan stack:
463+
464+
| Container | Image | Purpose |
465+
|-----------|-------|---------|
466+
| `dos-names-bens` | `ghcr.io/blockscout/bens:latest` | BENS API server |
467+
| `dos-names-graph-node` | `graphprotocol/graph-node` | Subgraph indexer |
468+
| `dos-names-postgres` | `postgres` | Graph Node database |
469+
| `dos-names-ipfs` | `ipfs/kubo` | IPFS for subgraph data |
470+
471+
- **Config:** `~/services/dos-names/`
472+
- **Port:** 18050
473+
- **Purpose:** Index DOS Name Service (ENSv2 fork) deployed on DOS Chain testnet
443474

444475
---
445476

0 commit comments

Comments
 (0)