363 lines
8.6 KiB
Markdown
363 lines
8.6 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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`:
|
|
|
|
```ini
|
|
[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:
|
|
```bash
|
|
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**:
|
|
```bash
|
|
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**:
|
|
|
|
```bash
|
|
# 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):
|
|
```json
|
|
{
|
|
"hash": "0x8009c73dca6df6f8238f312d1620135a2828af0035ab42d00c1d4388752c980e",
|
|
"height": 149477,
|
|
"gas_used": "0",
|
|
"gas_limit": "30000000",
|
|
...
|
|
}
|
|
```
|
|
|
|
**Sample Response** (Transactions):
|
|
```json
|
|
{
|
|
"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**:
|
|
```bash
|
|
cd /home/intlc/projects/proxmox/explorer-monorepo/backend
|
|
cat database/config/config.go # Review config
|
|
```
|
|
|
|
2. **Set environment variables**:
|
|
```bash
|
|
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**:
|
|
```bash
|
|
cd backend/api/rest
|
|
go run main.go
|
|
```
|
|
|
|
4. **Verify it's running**:
|
|
```bash
|
|
curl http://localhost:8080/health
|
|
curl http://localhost:8080/api/v2/stats
|
|
```
|
|
|
|
### Priority 2: Verify Database
|
|
|
|
1. **Check if database exists**:
|
|
```bash
|
|
psql -h localhost -U explorer -l | grep explorer
|
|
```
|
|
|
|
2. **Check database schema**:
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
curl http://localhost:8080/health
|
|
```
|
|
|
|
Expected response:
|
|
```json
|
|
{
|
|
"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.
|
|
|