Files
explorer-monorepo/docs/ERROR_REPORT_AND_FIXES.md

8.6 KiB

Comprehensive Error Report and Fixes

Generated: $(date)
Status: 🔴 CRITICAL ISSUES FOUND


Executive Summary

The log analysis revealed 10 errors and 2 warnings. The primary issue is that the backend API server is not running, which causes all API endpoints to fail.

Critical Issues

  1. Backend API server is not running - All API endpoints return HTTP 000 (connection refused)
  2. Local API endpoints inaccessible - /api/v2/stats, /api/v1/blocks, /api/v1/transactions all failing
  3. ⚠️ DNS resolution issue for explorer.d-bis.org (but HTTPS works, so likely tool issue)

Working Components

  1. RPC connectivity - ChainID 138 RPC is accessible (block 148937)
  2. Blockscout API - Both blocks and transactions endpoints working
  3. Frontend files - All configuration correct (ethers, Blockscout API, ChainID 138)
  4. HTTPS connectivity - explorer.d-bis.org is accessible

Detailed Error Analysis

1. Backend API Server Not Running

Error: All API endpoints return HTTP 000 (connection refused)

Affected Endpoints:

  • /api/v2/stats - Stats endpoint
  • /api/v1/blocks - Blocks listing
  • /api/v1/transactions - Transactions listing
  • /api?module=block&action=eth_block_number - Etherscan-compatible API

Root Cause: The backend Go server (backend/api/rest/main.go) is not running on port 8080.

Impact:

  • Frontend cannot load stats, blocks, or transactions from local API
  • Explorer shows "Loading..." indefinitely
  • Users see errors when trying to use the explorer

Solution:

Option 1: Run Backend Server Directly

cd /home/intlc/projects/proxmox/explorer-monorepo/backend/api/rest

# Set environment variables
export CHAIN_ID=138
export PORT=8080
export DB_HOST=localhost
export DB_PORT=5432
export DB_USER=explorer
export DB_PASSWORD=your_password
export DB_NAME=explorer

# Run the server
go run main.go

Option 2: Build and Run

cd /home/intlc/projects/proxmox/explorer-monorepo/backend/api/rest

# Build
go build -o api-server main.go

# Run
./api-server

Option 3: Create Systemd Service

Create /etc/systemd/system/explorer-api.service:

[Unit]
Description=Explorer API Server
After=network.target postgresql.service

[Service]
Type=simple
User=explorer
WorkingDirectory=/home/intlc/projects/proxmox/explorer-monorepo/backend/api/rest
Environment="CHAIN_ID=138"
Environment="PORT=8080"
Environment="DB_HOST=localhost"
Environment="DB_PORT=5432"
Environment="DB_USER=explorer"
Environment="DB_PASSWORD=your_password"
Environment="DB_NAME=explorer"
ExecStart=/usr/bin/go run main.go
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Then:

sudo systemctl daemon-reload
sudo systemctl enable explorer-api
sudo systemctl start explorer-api
sudo systemctl status explorer-api

2. Database Configuration Required ⚠️

Issue: Backend requires database connection but configuration may be missing.

Check Database Config:

The backend uses github.com/explorer/backend/database/config. Check:

  • backend/database/config/config.go - Database configuration loader
  • Environment variables or config file for database credentials

Required Environment Variables:

DB_HOST=localhost          # Database host
DB_PORT=5432              # Database port
DB_USER=explorer          # Database user
DB_PASSWORD=your_password # Database password
DB_NAME=explorer          # Database name

Verify Database Connection:

# Test PostgreSQL connection
psql -h localhost -U explorer -d explorer -c "SELECT 1;"

# Or using connection string
psql "postgresql://explorer:password@localhost:5432/explorer" -c "SELECT 1;"

3. DNS Resolution Issue (Non-Critical) ⚠️

Error: DNS resolution failed for explorer.d-bis.org

Status: HTTPS connectivity works, so this is likely a tool issue (host command may not be available or configured).

Impact: None - the explorer is accessible via HTTPS.

Solution: No action needed. The host command may not be installed or DNS may be configured differently.


Frontend Status

Configuration Check

All frontend configurations are correct:

  1. Ethers Library: Properly referenced with CDN fallbacks
  2. Blockscout API: Configured for ChainID 138 (https://explorer.d-bis.org/api)
  3. ChainID 138: Correctly set in frontend code
  4. Error Handling: 16 console.error calls and 26 try-catch blocks found

Frontend API Configuration

The frontend is configured to use:

  • API_BASE: /api (relative path, expects backend on same domain)
  • Blockscout API: https://explorer.d-bis.org/api (for ChainID 138)
  • CHAIN_ID: 138 (Hyperledger Besu)

Note: Since the backend is not running, the frontend will fall back to Blockscout API for ChainID 138, which is working correctly.


Blockscout API Status

Blockscout API is fully operational:

  1. Blocks Endpoint: /api/v2/blocks - Working
  2. Transactions Endpoint: /api/v2/transactions - Working

Sample Response (Blocks):

{
  "hash": "0x8009c73dca6df6f8238f312d1620135a2828af0035ab42d00c1d4388752c980e",
  "height": 149477,
  "gas_used": "0",
  "gas_limit": "30000000",
  ...
}

Sample Response (Transactions):

{
  "hash": "0xf63943dda9803d0afdd8c4c9bea990054cd8cf16482da7a4265e0a700828888b",
  "result": "success",
  "type": 2,
  ...
}

Network Status

RPC Connectivity

  • Status: Accessible
  • Current Block: 148937
  • RPC URL: http://192.168.11.250:8545
  • Chain ID: 138

HTTPS Connectivity

  • Status: Accessible
  • URL: https://explorer.d-bis.org
  • Blockscout API: Working correctly

Immediate Action Items

Priority 1: Start Backend Server

  1. Check database configuration:

    cd /home/intlc/projects/proxmox/explorer-monorepo/backend
    cat database/config/config.go  # Review config
    
  2. Set environment variables:

    export CHAIN_ID=138
    export PORT=8080
    export DB_HOST=localhost
    export DB_PORT=5432
    export DB_USER=explorer
    export DB_PASSWORD=your_password
    export DB_NAME=explorer
    
  3. Start the server:

    cd backend/api/rest
    go run main.go
    
  4. Verify it's running:

    curl http://localhost:8080/health
    curl http://localhost:8080/api/v2/stats
    

Priority 2: Verify Database

  1. Check if database exists:

    psql -h localhost -U explorer -l | grep explorer
    
  2. Check database schema:

    psql -h localhost -U explorer -d explorer -c "\dt"
    
  3. Verify tables exist:

    • blocks
    • transactions
    • addresses

Priority 3: Test All Endpoints

After starting the backend, run the diagnostic script again:

cd /home/intlc/projects/proxmox/explorer-monorepo
./scripts/check-logs-and-errors.sh

Expected Behavior After Fixes

Once the backend is running:

  1. /api/v2/stats should return statistics
  2. /api/v1/blocks should return block list
  3. /api/v1/transactions should return transaction list
  4. /api?module=block&action=eth_block_number should return latest block number
  5. Frontend should load data from both local API and Blockscout
  6. Health endpoint /health should return service status

Monitoring and Logging

Backend Logs

The backend uses Go's standard log package. Logs will show:

  • Server startup: Starting SolaceScanScout REST API server on :8080
  • Request logs: GET /api/v2/stats 200 2.5ms
  • Errors: Database connection errors, query failures, etc.

Frontend Console

Check browser console (F12) for:

  • Ethers library loading status
  • API call errors
  • Network request failures

Health Check Endpoint

Once backend is running, check health:

curl http://localhost:8080/health

Expected response:

{
  "status": "healthy",
  "timestamp": "2025-12-24T08:55:07Z",
  "services": {
    "database": "ok",
    "api": "ok"
  },
  "chain_id": 138,
  "explorer": {
    "name": "SolaceScanScout",
    "version": "1.0.0"
  }
}

Summary

What's Working

  • RPC connectivity (ChainID 138)
  • Blockscout API (all endpoints)
  • Frontend configuration
  • HTTPS connectivity

What's Broken

  • Backend API server (not running)
  • All local API endpoints
  • Database connectivity check (can't verify without backend)

🔧 What Needs Fixing

  1. Start backend server (Priority 1)
  2. Verify database configuration (Priority 2)
  3. Test all endpoints (Priority 3)

Next Steps: Start the backend server and re-run the diagnostic script to verify all issues are resolved.