Files
aitbc/docs/advanced/05_development/11_marketplace-backend-analysis.md
aitbc 7c51f3490b Remove outdated GPU marketplace endpoint and fix staking service logic
- 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
2026-04-13 22:07:51 +02:00

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.py and /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

  1. GPU Registry Model Implemented in /opt/aitbc/apps/coordinator-api/src/app/domain/gpu_marketplace.py
  2. GPU Endpoints Implemented in /opt/aitbc/apps/coordinator-api/src/app/routers/marketplace_gpu.py
  3. Booking System GPUBooking model implemented with full booking/unbooking logic

Phase 2: Reviews and Ratings COMPLETE

  1. Review System GPUReview model implemented in /opt/aitbc/apps/coordinator-api/src/app/domain/gpu_marketplace.py
  2. Rating Aggregation Automatic rating aggregation on GPURegistry with average_rating and total_reviews fields

Phase 3: Orders and Pricing COMPLETE

  1. Order Management Bookings serve as orders with full tracking in /v1/marketplace/orders endpoint
  2. 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/register endpoint
  • 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/list endpoint
  • GPU booking handled via /v1/marketplace/gpu/{gpu_id}/book endpoint
  • GPU release handled via /v1/marketplace/gpu/{gpu_id}/release endpoint

3. Billing Integration

  • Costs calculated automatically based on booking duration and dynamic pricing
  • Orders tracked via /v1/marketplace/orders endpoint
  • Refunds calculated automatically (50% refund on release)

📝 Implementation Notes

  1. API Versioning: Using /v1/marketplace/gpu/ as expected by CLI
  2. Authentication: Using existing API key system
  3. Error Handling: Following existing error patterns
  4. Metrics: Prometheus metrics available for GPU operations
  5. Testing: Router loads successfully and is properly configured
  6. 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.