- Remove duplicate `/marketplace/gpu/{gpu_id}` endpoint from marketplace_gpu.py
- Remove marketplace_gpu router inclusion from main.py (already included elsewhere)
- Fix staking service staker_count logic to check existing stakes before increment/decrement
- Add minimum stake amount validation (100 AITBC)
- Add proper error handling for stake not found cases
- Fix staking pool update to commit and refresh after modifications
- Update CLI send_transaction to use chain
9.3 KiB
Marketplace Backend Analysis
NOTE: This document is OUTDATED. As of April 13, 2026, all GPU marketplace endpoints are already fully implemented in /opt/aitbc/apps/coordinator-api/src/app/routers/marketplace_gpu.py. The router is properly included in main.py with the /v1 prefix.
Current Implementation Status
✅ Implemented Features
1. Basic Marketplace Offers
- Endpoint:
GET /marketplace/offers - Service:
MarketplaceService.list_offers() - Status: ✅ Implemented (returns mock data)
- Notes: Returns hardcoded mock offers, not from database
2. Marketplace Statistics
- Endpoint:
GET /marketplace/stats - Service:
MarketplaceService.get_stats() - Status: ✅ Implemented
- Features:
- Total offers count
- Open capacity
- Average price
- Active bids count
3. Marketplace Bids
- Endpoint:
POST /marketplace/bids - Service:
MarketplaceService.create_bid() - Status: ✅ Implemented
- Features: Create bids with provider, capacity, price, and notes
4. Miner Offer Synchronization
- Endpoint:
POST /marketplace/sync-offers - Service: Creates offers from registered miners
- Status: ✅ Implemented (admin only)
- Features:
- Syncs online miners to marketplace offers
- Extracts GPU capabilities from miner attributes
- Creates offers with pricing, GPU model, memory, etc.
5. Miner Offers List
- Endpoint:
GET /marketplace/miner-offers - Service: Lists offers created from miners
- Status: ✅ Implemented
- Features: Returns offers with detailed GPU information
❌ Missing Features (Expected by CLI)
ALL FEATURES ARE NOW IMPLEMENTED as of April 13, 2026.
1. GPU-Specific Endpoints ✅ IMPLEMENTED
All GPU marketplace endpoints are fully implemented in /opt/aitbc/apps/coordinator-api/src/app/routers/marketplace_gpu.py:
POST /v1/marketplace/gpu/register- Register GPU in marketplace ✅GET /v1/marketplace/gpu/list- List available GPUs ✅GET /v1/marketplace/gpu/{gpu_id}- Get GPU details ✅POST /v1/marketplace/gpu/{gpu_id}/book- Book/reserve a GPU ✅POST /v1/marketplace/gpu/{gpu_id}/release- Release a booked GPU ✅GET /v1/marketplace/gpu/{gpu_id}/reviews- Get GPU reviews ✅POST /v1/marketplace/gpu/{gpu_id}/reviews- Add GPU review ✅
2. GPU Booking System ✅ IMPLEMENTED
- Status: ✅ Fully implemented
- Implementation: GPUBooking SQLModel with booking duration tracking, status management, and automatic refund calculation on release
- Location:
/opt/aitbc/apps/coordinator-api/src/app/domain/gpu_marketplace.py
3. GPU Reviews System ✅ IMPLEMENTED
- Status: ✅ Fully implemented
- Implementation: GPUReview SQLModel with automatic rating aggregation and review-per-gpu association
- Location:
/opt/aitbc/apps/coordinator-api/src/app/domain/gpu_marketplace.py
4. GPU Registry ✅ IMPLEMENTED
- Status: ✅ Fully implemented
- Implementation: GPURegistry SQLModel with individual GPU registration, specifications storage, status tracking (available, booked, offline), and average rating aggregation
- Location:
/opt/aitbc/apps/coordinator-api/src/app/domain/gpu_marketplace.py
5. Order Management ✅ IMPLEMENTED
- Status: ✅ Fully implemented
- CLI expects:
GET /v1/marketplace/orders - Implementation: Orders endpoint returns booking history with GPU model, miner ID, duration, cost, and status
- Location:
/opt/aitbc/apps/coordinator-api/src/app/routers/marketplace_gpu.py
6. Pricing Information ✅ IMPLEMENTED
- Status: ✅ Fully implemented with dynamic pricing
- CLI expects:
GET /v1/marketplace/pricing/{model} - Implementation: Dynamic pricing engine with market balance strategy, demand-based pricing, and confidence scoring
- Location:
/opt/aitbc/apps/coordinator-api/src/app/routers/marketplace_gpu.pyand/opt/aitbc/apps/coordinator-api/src/app/services/dynamic_pricing_engine.py
🔧 Data Model Issues
RESOLVED - All data models are now properly implemented.
1. MarketplaceOffer Model Limitations ✅ RESOLVED
GPU-specific data is now properly structured in dedicated GPURegistry model:
class GPURegistry(SQLModel, table=True):
id: str # Unique GPU identifier
miner_id: str # Miner ID
model: str # GPU model name
memory_gb: int # GPU memory in GB
cuda_version: str
region: str
price_per_hour: float
status: str # available, booked, offline
capabilities: list
average_rating: float # Aggregated review rating
total_reviews: int
created_at: datetime
All GPU-specific fields are present:
id: Unique GPU identifier ✅model: GPU model name ✅memory_gb: GPU memory in GB ✅status: available, booked, offline ✅average_rating: Aggregated review rating ✅total_reviews: Number of reviews ✅
2. Booking/Order Models ✅ RESOLVED
All required models are now implemented:
GPUBooking: Track GPU reservations ✅ (in gpu_marketplace.py)GPUOrder: Bookings serve as orders ✅GPUReview: Store GPU reviews ✅ (in gpu_marketplace.py)GPUPricing: Dynamic pricing engine handles pricing ✅ (in dynamic_pricing_engine.py)
📊 API Endpoint Comparison
| CLI Command | Expected Endpoint | Implemented | Status |
|---|---|---|---|
aitbc marketplace gpu register |
POST /v1/marketplace/gpu/register |
✅ | Implemented |
aitbc marketplace gpu list |
GET /v1/marketplace/gpu/list |
✅ | Implemented |
aitbc marketplace gpu details |
GET /v1/marketplace/gpu/{id} |
✅ | Implemented |
aitbc marketplace gpu book |
POST /v1/marketplace/gpu/{id}/book |
✅ | Implemented |
aitbc marketplace gpu release |
POST /v1/marketplace/gpu/{id}/release |
✅ | Implemented |
aitbc marketplace reviews |
GET /v1/marketplace/gpu/{id}/reviews |
✅ | Implemented |
aitbc marketplace review add |
POST /v1/marketplace/gpu/{id}/reviews |
✅ | Implemented |
aitbc marketplace orders list |
GET /v1/marketplace/orders |
✅ | Implemented |
aitbc marketplace pricing |
GET /v1/marketplace/pricing/{model} |
✅ | Implemented |
🚀 Implementation Status
IMPLEMENTATION COMPLETE as of April 13, 2026.
All phases of the recommended implementation plan have been completed:
Phase 1: Core GPU Marketplace ✅ COMPLETE
- GPU Registry Model ✅ Implemented in
/opt/aitbc/apps/coordinator-api/src/app/domain/gpu_marketplace.py - GPU Endpoints ✅ Implemented in
/opt/aitbc/apps/coordinator-api/src/app/routers/marketplace_gpu.py - Booking System ✅ GPUBooking model implemented with full booking/unbooking logic
Phase 2: Reviews and Ratings ✅ COMPLETE
- Review System ✅ GPUReview model implemented in
/opt/aitbc/apps/coordinator-api/src/app/domain/gpu_marketplace.py - Rating Aggregation ✅ Automatic rating aggregation on GPURegistry with average_rating and total_reviews fields
Phase 3: Orders and Pricing ✅ COMPLETE
- Order Management ✅ Bookings serve as orders with full tracking in
/v1/marketplace/ordersendpoint - Dynamic Pricing ✅ Sophisticated dynamic pricing engine implemented in
/opt/aitbc/apps/coordinator-api/src/app/services/dynamic_pricing_engine.py
🔍 Integration Points
1. Miner Registration ✅
- GPU entries can be created via
/v1/marketplace/gpu/registerendpoint - GPU capabilities are stored in GPURegistry model
- GPU status can be updated based on miner heartbeat
2. Job Assignment ✅
- GPU availability checked via
/v1/marketplace/gpu/listendpoint - GPU booking handled via
/v1/marketplace/gpu/{gpu_id}/bookendpoint - GPU release handled via
/v1/marketplace/gpu/{gpu_id}/releaseendpoint
3. Billing Integration ✅
- Costs calculated automatically based on booking duration and dynamic pricing
- Orders tracked via
/v1/marketplace/ordersendpoint - Refunds calculated automatically (50% refund on release)
📝 Implementation Notes
- API Versioning: ✅ Using
/v1/marketplace/gpu/as expected by CLI - Authentication: ✅ Using existing API key system
- Error Handling: ✅ Following existing error patterns
- Metrics: ✅ Prometheus metrics available for GPU operations
- Testing: ✅ Router loads successfully and is properly configured
- Documentation: ✅ OpenAPI specs include all GPU marketplace endpoints
🎯 Priority Matrix
| Feature | Priority | Effort | Impact | Status |
|---|---|---|---|---|
| GPU Registry | High | Medium | High | ✅ Complete |
| GPU Booking | High | High | High | ✅ Complete |
| GPU List/Details | High | Low | High | ✅ Complete |
| Reviews System | Medium | Medium | Medium | ✅ Complete |
| Order Management | Medium | High | Medium | ✅ Complete |
| Dynamic Pricing | Low | High | Low | ✅ Complete |
💡 Implementation Summary
ALL FEATURES IMPLEMENTED - The GPU marketplace backend is fully functional with:
- Complete router at
/v1/marketplace/gpu/with all CLI-expected endpoints - Full SQLModel database models (GPURegistry, GPUBooking, GPUReview)
- Dynamic pricing engine with market balance strategy
- Automatic rating aggregation
- Comprehensive booking and release logic with refund calculation
The CLI can now fully interact with the GPU marketplace backend.