- Add infrastructure.md and workflow files to .gitignore to prevent sensitive info leaks - Change blockchain node mempool backend default from memory to database for persistence - Refactor blockchain node logger with StructuredLogFormatter and AuditLogger (consistent with coordinator) - Add structured logging fields: service, module, function, line number - Unify coordinator config with Database
1.8 KiB
1.8 KiB
Miner API Reference
Complete API reference for miner operations.
Endpoints
Register Miner
POST /v1/miners
Request Body:
{
"name": "my-miner",
"gpu_type": "v100",
"gpu_count": 1,
"location": "us-east",
"price_per_hour": 0.05,
"max_concurrent": 4
}
Response:
{
"miner_id": "miner_xyz789",
"api_key": "key_abc123",
"status": "pending"
}
Update Miner
PUT /v1/miners/{miner_id}
Heartbeat
POST /v1/miners/{miner_id}/heartbeat
Response:
{
"status": "ok",
"jobs_assigned": 0,
"queue_length": 5
}
List Available Jobs
GET /v1/miners/{miner_id}/jobs/available
Response:
{
"jobs": [
{
"job_id": "job_abc123",
"model": "gpt2",
"gpu_type": "v100",
"gpu_count": 1,
"estimated_time": 600,
"price": 0.05
}
]
}
Accept Job
POST /v1/miners/{miner_id}/jobs/{job_id}/accept
Complete Job
POST /v1/miners/{miner_id}/jobs/{job_id}/complete
Request Body:
{
"result_hash": "sha256:abc123...",
"metrics": {
"execution_time_seconds": 600,
"gpu_time_seconds": 600
}
}
Get Miner Stats
GET /v1/miners/{miner_id}/stats
Response:
{
"total_jobs": 100,
"success_rate": 0.98,
"average_completion_time": 600,
"earnings": 50.5,
"earnings_per_gpu_hour": 0.05
}
Error Codes
| Code | Description |
|---|---|
| 400 | Invalid request |
| 401 | Unauthorized |
| 404 | Miner/job not found |
| 409 | Job already assigned |
| 422 | Validation error |
Rate Limits
- 60 requests/minute
- 10 job operations/minute
Next
- Quick Start — Get started
- Job Management — Job management
- Monitoring - Monitor your miner