Справочник API¶
Справочник RPC эндпоинтов для нод ComputeChain.
Базовый URL: http://localhost:8000 (изменяется флагом --port)
Эндпоинты ноды¶
GET /status¶
Получить статус ноды и текущее состояние блокчейна.
Ответ:
{
"height": 15,
"last_hash": "1234567890abcdef...",
"network": "devnet",
"mempool_size": 2,
"epoch": 1
}
GET /block/{height}¶
Получить блок по высоте.
Ответ:
{
"header": {
"height": 10,
"prev_hash": "abcd1234...",
"timestamp": 1700000000,
"proposer_address": "cpcvalcons1...",
"compute_root": "7890abcd...",
"tx_root": "4567efgh...",
"state_root": "cdef1234...",
"signature": "feedface...",
"pub_key": "02..."
},
"txs": [...]
}
Эндпоинты аккаунтов¶
GET /balance/{address}¶
Получить баланс и nonce аккаунта.
Ответ:
Примечание: Баланс в wei (1 CPC = 10^18 wei)
Эндпоинты валидаторов¶
GET /validators¶
Список всех валидаторов с их статусом.
Ответ:
{
"epoch": 1,
"validators": [
{
"address": "cpcvalcons1alice...",
"pq_pub_key": "02a1b2c3...",
"power": "1500000000000000000000",
"is_active": true,
"reward_address": "cpc1alice...",
"name": "Alice Validator",
"commission_rate": 0.10
}
]
}
Поля:
- address: Консенсус адрес валидатора
- power: Стейк валидатора в wei
- is_active: Активно ли производство блоков
- reward_address: Куда отправляются награды за блоки
- commission_rate: Процент комиссии (0.0-1.0)
Эндпоинты делегирования¶
GET /delegator/{address}/delegations¶
Получить все делегации для адреса.
Ответ:
{
"delegator": "cpc1abc...",
"total_delegated": 100000000,
"delegations": [
{
"validator": "cpcvalcons1xyz...",
"amount": 60000000,
"created_height": 100,
"validator_name": "Validator A",
"validator_commission": 0.10
}
]
}
GET /delegator/{address}/rewards¶
Получить историю наград для делегатора.
Ответ:
{
"delegator": "cpc1abc...",
"total_rewards": 125500000,
"current_epoch": 5,
"rewards_by_epoch": [
{"epoch": 0, "amount": 25400000},
{"epoch": 1, "amount": 24800000}
]
}
GET /delegator/{address}/unbonding¶
Получить очередь разблокировки для делегатора.
Ответ:
{
"delegator": "cpc1abc...",
"unbonding_entries": [
{
"validator": "cpcvalcons1xyz...",
"amount": "50000000000000000000",
"creation_height": 1000,
"completion_height": 1100,
"blocks_remaining": 45
}
]
}
Поля:
- amount: Сумма в wei
- creation_height: Высота блока когда началось разблокирование
- completion_height: Высота блока когда токены будут возвращены
- blocks_remaining: Сколько блоков осталось до возврата
Эндпоинты снепшотов¶
GET /snapshots¶
Получить список доступных снепшотов состояния.
Ответ:
{
"snapshots": [
{
"height": 5000,
"timestamp": 1700000000,
"size_bytes": 1048576,
"hash": "abc123def456...",
"compressed": true
},
{
"height": 4000,
"timestamp": 1699990000,
"size_bytes": 1024000,
"hash": "def789ghi012...",
"compressed": true
}
]
}
GET /snapshots/{height}¶
Получить информацию о конкретном снепшоте.
Ответ:
{
"height": 5000,
"timestamp": 1700000000,
"size_bytes": 1048576,
"hash": "abc123def456...",
"compressed": true,
"epoch": 50,
"validator_count": 5,
"account_count": 103
}
Эндпоинты наблюдаемости¶
GET /metrics¶
Получить метрики Prometheus для мониторинга.
Ответ (формат Prometheus):
# HELP computechain_block_height Current block height
# TYPE computechain_block_height gauge
computechain_block_height 1234.0
# HELP computechain_transactions_total Total number of transactions processed
# TYPE computechain_transactions_total counter
computechain_transactions_total{tx_type="TRANSFER"} 5000.0
computechain_transactions_total{tx_type="STAKE"} 150.0
# HELP computechain_mempool_size Current mempool size
# TYPE computechain_mempool_size gauge
computechain_mempool_size 10.0
# HELP computechain_total_supply Total supply in circulation
# TYPE computechain_total_supply gauge
computechain_total_supply 1.000089145e+27
# HELP computechain_validator_count Number of validators
# TYPE computechain_validator_count gauge
computechain_validator_count 5.0
# HELP computechain_accounts_total Total number of accounts
# TYPE computechain_accounts_total gauge
computechain_accounts_total 103.0
Использование с Prometheus:
# prometheus.yml
scrape_configs:
- job_name: 'computechain'
static_configs:
- targets: ['localhost:8000']
metrics_path: '/metrics'
scrape_interval: 10s
Эндпоинты транзакций¶
POST /tx/send¶
Отправить подписанную транзакцию в mempool.
curl -X POST http://localhost:8000/tx/send \
-H "Content-Type: application/json" \
-d '{
"tx_type": "TRANSFER",
"from_address": "cpc1sender...",
"to_address": "cpc1recipient...",
"amount": "100000000000000000000",
"fee": "21000000",
"nonce": 1,
"gas_price": 1000,
"gas_limit": 21000,
"timestamp": 1700000000,
"pub_key": "02a1b2c3...",
"signature": "abcdef1234...",
"payload": {}
}'
Ответ (успех):
Ответ (отклонено):
Форматы данных¶
Адреса¶
Формат: Кодировка Bech32 с префиксом
- Обычные аккаунты:
cpc1... - Валидаторы:
cpcvalcons1...
Пример:
Суммы¶
Формат: Строковое представление в wei
Конверсия: 1 CPC = 10^18 wei
Примеры:
"100000000000000000000" # 100 CPC
"1500000000000000000000" # 1500 CPC
"21000000" # 0.000000000021 CPC (комиссия)
Хэши и ключи¶
Формат: Hex строка без префикса 0x
Примеры:
Коды ошибок¶
| Код | Значение | Пример |
|---|---|---|
| 200 | Успех | Запрос обработан успешно |
| 400 | Неверный запрос | Неверный формат транзакции |
| 404 | Не найдено | Блок не найден |
| 503 | Сервис недоступен | Нода не инициализирована |
Примеры использования¶
Мониторинг сети¶
# Проверить статус ноды
curl http://localhost:8000/status | jq
# Получить последнюю высоту блока
HEIGHT=$(curl -s http://localhost:8000/status | jq -r '.height')
# Получить последний блок
curl http://localhost:8000/block/$HEIGHT | jq
Отслеживание валидатора¶
# Получить всех валидаторов
curl http://localhost:8000/validators | jq
# Получить только активных валидаторов
curl http://localhost:8000/validators | jq '.validators[] | select(.is_active == true)'
# Получить конкретного валидатора
curl http://localhost:8000/validators | jq '.validators[] | select(.address == "cpcvalcons1abc...")'
Мониторинг делегаций¶
# Получить все делегации для адреса
curl http://localhost:8000/delegator/cpc1abc.../delegations | jq
# Получить общую сумму делегирования
curl http://localhost:8000/delegator/cpc1abc.../delegations | jq '.total_delegated'
# Проверить награды
curl http://localhost:8000/delegator/cpc1abc.../rewards | jq
Отслеживание изменений баланса¶
# Мониторить баланс
ADDRESS="cpc1abc..."
watch -n 10 "curl -s http://localhost:8000/balance/$ADDRESS | jq"
Советы по интеграции¶
Пример на Python¶
import requests
node_url = "http://localhost:8000"
# Получить баланс
def get_balance(address):
resp = requests.get(f"{node_url}/balance/{address}")
data = resp.json()
balance_cpc = int(data["balance"]) / 10**18
return balance_cpc
# Получить валидаторов
def get_active_validators():
resp = requests.get(f"{node_url}/validators")
data = resp.json()
return [v for v in data["validators"] if v["is_active"]]
# Отправить транзакцию (используйте CLI для подписи)
# Используйте cpc-cli для правильной подписи транзакций
Пример на JavaScript¶
const nodeUrl = "http://localhost:8000";
// Получить статус
async function getStatus() {
const resp = await fetch(`${nodeUrl}/status`);
return await resp.json();
}
// Получить баланс в CPC
async function getBalance(address) {
const resp = await fetch(`${nodeUrl}/balance/${address}`);
const data = await resp.json();
return parseInt(data.balance) / 1e18;
}
Следующие шаги¶
- Справочник CLI - CLI команды для транзакций
- Гид по стейкингу - Стейк и делегирование
- Продвинутые темы - Архитектура и PoC