synor/docs/PLAN/PHASE3-NetworkBootstrap/01-Milestone-01-TestnetDeployment.md
Gulshan Yadav 48949ebb3f Initial commit: Synor blockchain monorepo
A complete blockchain implementation featuring:
- synord: Full node with GHOSTDAG consensus
- explorer-web: Modern React blockchain explorer with 3D DAG visualization
- CLI wallet and tools
- Smart contract SDK and example contracts (DEX, NFT, token)
- WASM crypto library for browser/mobile
2026-01-08 05:22:17 +05:30

3.3 KiB

Phase 3, Milestone 1: Testnet Deployment

Deploy and configure the public testnet

Status: Complete Priority: High Components: synord, faucet, explorer


Overview

Deploy a public testnet with seed nodes, faucet for test tokens, and block explorer for transparency.


Tasks

Task 1.1: Network Parameters

  • Configure testnet chain ID (1)
  • Set block time (100ms)
  • Configure K parameter (18)
  • Set pruning parameters
  • Configure difficulty adjustment

Files:

  • crates/synor-network/src/config.rs
  • apps/synord/src/config.rs

Task 1.2: Seed Node Deployment

  • Deploy 3 geographically distributed nodes
  • Configure DNS entries (seed1/2/3.synor.cc)
  • Generate node peer IDs
  • Add bootstrap addresses to config

Infrastructure:

  • seed1.synor.cc - US East
  • seed2.synor.cc - EU West
  • seed3.synor.cc - Asia Pacific

Files:

  • crates/synor-network/src/config.rs (bootstrap_peers)

Task 1.3: Testnet Faucet

  • Implement faucet web service
  • Rate limiting (1 request per address per 24h)
  • Cooldown tracking
  • HTML UI for web requests
  • API endpoints for programmatic access
  • Statistics tracking

Files:

  • apps/faucet/src/main.rs (665 lines)

Endpoints:

  • GET / - HTML UI
  • POST /api/claim - Request tokens
  • GET /api/stats - Faucet statistics

Validation:

curl https://faucet.synor.cc/api/claim -X POST \
  -H "Content-Type: application/json" \
  -d '{"address":"synor:qz..."}'

Task 1.4: Block Explorer Backend

  • Block queries by hash/height
  • Transaction queries
  • Address balance and history
  • DAG visualization data
  • Network statistics
  • Search functionality

Files:

  • apps/explorer/src/main.rs (1134 lines)

API Endpoints:

  • GET /api/block/:hash
  • GET /api/tx/:hash
  • GET /api/address/:addr
  • GET /api/dag
  • GET /api/stats
  • GET /api/search

Validation

Validation Commands

# Test seed node connectivity
nc -zv seed1.synor.cc 16111
nc -zv seed2.synor.cc 16111
nc -zv seed3.synor.cc 16111

# Test faucet
curl https://faucet.synor.cc/api/stats

# Test explorer
curl https://explorer.synor.cc/api/stats

Validation Agents

Agent Purpose
code-reviewer Review faucet/explorer code
silent-failure-hunter Check error handling

Load Testing

# Faucet rate limiting test
for i in {1..10}; do
  curl -s https://faucet.synor.cc/api/claim -X POST \
    -H "Content-Type: application/json" \
    -d '{"address":"synor:qztest'$i'"}'
done
# Should see rate limiting after first request per address

Security Checks

  • Faucet rate limiting prevents abuse
  • Explorer sanitizes user input (search)
  • HTTPS enforced on all endpoints
  • CORS properly configured
  • No sensitive data exposed

Monitoring

Metric Target Alert Threshold
Seed node uptime 99.9% <99%
Faucet response time <500ms >1s
Explorer response time <200ms >500ms
Block sync lag <10 blocks >50 blocks

Acceptance Criteria

  1. All 3 seed nodes online and synced
  2. Faucet dispenses tokens correctly
  3. Explorer shows real-time data
  4. Rate limiting working
  5. All services have health checks

Completed: January 2025