- Updated branding from "SolaceScanScout" to "Solace" across various files including deployment scripts, API responses, and documentation. - Changed default base URL for Playwright tests and updated security headers to reflect the new branding. - Enhanced README and API documentation to include new authentication endpoints and product access details. This refactor aligns the project branding and improves clarity in the API documentation.
362 lines
8.6 KiB
Markdown
362 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 SolaceScan 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": "SolaceScan",
|
|
"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.
|