Skip to content

REST API ​

Мережу відкривають два HTTP-сервіси:

СервісЗа замовчуваннямПризначення
Gateway (Node.js)http://localhost:3000Те, до чого звертаються dApp і вебзастосунок. Проксує ноду, додає WebSocket, AI-інструменти й кешування
RPC ноди (Rust)http://localhost:9933Джерело істини. Деякі ендпоінти для операторів є лише тут

Більшість шляхів однакові в обох. У таблицях нижче позначено ендпоінти, що є лише в одному з них. Приклади використовують $GATEWAY і $NODE_RPC — див. Почніть тут.

Домовленості ​

Суми ​

  • Суми в мережі — цілі числа в uNRO (1 NRO = 1 000 000 uNRO).
  • Відповіді додають поруч з кожною сумою відформатований рядок *_human (balance_human, value_human, stake_human, …). Показуйте саме їх; не перераховуйте на клієнті.
  • У тілі запиту надсилайте суми числами JSON в uNRO, якщо ендпоінт не каже інакше.

Підписані операції ​

Кожен ендпоінт, що змінює стан, потребує підпису. Їх два види:

ВидПідписане повідомленняnonce
Транзакція (POST /api/v1/transactions)`nc-tx-v2from
Операція (усе інше)`nc-tx-v2actor

Ціль — зарезервована системна адреса, що називає операцію; у таблицях вона в колонці Підпис для. Кожен запит містить signature (hex), public_key (hex ML-DSA-65) і nonce. Див. Гаманець → Підписані операції.

З CHAIN_ENV=mainnet (за замовчуванням) відсутній чи недійсний підпис відхиляється з 401. З CHAIN_ENV=testnet нода лише пише попередження — тільки для локальної розробки.

Більшість операцій застосовуються в консенсусі: відповідь містить "status": "pending" і tx_hash; ефект видно, коли транзакція потрапить у блок.

Помилки ​

Помилки — JSON: {"error": "<повідомлення>"}, іноді з hint чи додатковими полями. HTTP-коди:

КодЗначення
200Успіх — але деякі старіші ендпоінти повертають {"error": …} теж з 200; завжди перевіряйте error
400Некоректний запит, не пройдена перевірка, відмова Sentinel
401Відсутній чи недійсний підпис, ключ не прив'язаний до адреси
403Заборонено в цьому режимі (кран у mainnet, записуючий виклик поза консенсусом у mainnet), розгортання відхилене VMGuardian
404Не знайдено
409Ім'я вже зайняте
429Перевищено ліміт запитів
502 / 503Gateway не може дістатися ноди

Пагінація ​

Ендпоінти-списки приймають limit і offset (деякі також page). Кожен ендпоінт обмежує limit (зазвичай 100 або 200).

Ліміти запитів і CORS ​

ДеЗа замовчуваннямЗмінна
RPC ноди, на IP100 запитів/сNEUROCHAIN_RPC_RATE_LIMIT
Gateway, на IP200 запитів/сGLOBAL_RL_MAX_RPS
AI-ендпоінти gateway (/contracts/audit, /contracts/generate, …), на IP10 запитів/хвAI_RL_MAX_RPM

Дозволені джерела: CORS_ALLOWED_ORIGINS в обох сервісах (за замовчуванням *).


Мережа і нода ​

МетодШляхПримітки
GET/healthstatus, height, round, mempool, peers, tps, total_txs, validator_count, bft_quorum, bft_ready
GET/status, /api/v1/statusЛише нода. Висота, валідатори, шарди, назва мережі
GET/api/v1/network/statusЛише gateway. Зведення мережі для експлорера
GET/metricsТекстовий формат Prometheus — див. Запуск ноди
GET/api/v1/shardsВисоти й корені шардів
GET/api/v1/state/rootglobal_root, shard_roots, height, root_height, n_shards
GET/api/v1/state/snapshotЛише нода. Повний підписаний знімок стану для запуску ноди
GET/api/v1/checkpointsПідписані контрольні точки. offset, limit
GET/peersЛише нода. Підключені піри
GET/api/v1/gas/estimatebase_fee, газ за операцію, total_burned, nft_transfer_fee — див. Газ і комісії
GET/api/v1/wasm/versionЛише gateway. Маніфест версії браузерного WASM-модуля

Блоки ​

МетодШляхПримітки
GET/api/v1/blockslimit (≤ 100, за замовчуванням 20), offset, page. Найновіші першими
GET/api/v1/blocks/latestЛише gateway. { "block": … }
GET/api/v1/blocks/:heightОдин блок: height, hash, parent_hash, proposer, tx_root, state_root, tx_count, gas_used, base_fee, fees_burned, shard, round, timestamp
GET/api/v1/blocks/:height/transactionsТранзакції блоку

Транзакції ​

МетодШляхПідпис дляПримітки
POST/api/v1/transactionsсама транзакціяТіло нижче
GET/api/v1/transactions—address, hash, type (staking — операції стейкінгу), limit (≤ 200), offset, page
GET/api/v1/transactions/:hash—Одна транзакція зі status, gas, fee, fee_human, value_human
GET/api/v1/tx/:hash/proof—Доказ включення Меркла: leaf_index, proof, tx_root, block_height
POST/api/v1/transactions/:hash/confirmneuro:system.trustПідтвердити утриманий переказ (лише майстер-ключ власника) — див. Sentinel
POST/api/v1/transactions/:hash/cancelneuro:system.trustСкасувати утриманий переказ
GET/api/v1/held/:address—Утримані перекази адреси
GET/api/v1/cross-shard/queue—Міжшардові передачі. status, limit, offset

Тіло POST /api/v1/transactions

ПолеТипОбов'язковеЗначення
fromstringтакАдреса відправника
tostringтакОтримувач, контракт або neuro:system.deploy
valuenumberтакuNRO
noncenumberтакНаступний nonce акаунта
signaturestringтакML-DSA-65 над `nc-tx-v2
public_keystringтакПублічний ключ ML-DSA-65, hex
gas_pricenumberніuNRO за одиницю газу; має бути ≥ базової комісії
datastringніВиклик контракту чи розгортання рядком JSON (hex теж приймається) — див. ABI, Розгортання

Відповідь: tx_hash, status: "pending", estimated_block; плюс sentinel_score і sentinel_warning, коли Sentinel позначив транзакцію, або деталі held, коли її утримав шар політик.

Акаунти ​

МетодШляхПримітки
GET/api/v1/accounts/:addressbalance, balance_human, nonce, …
GET/api/v1/accounts/:address/transactionsІсторія. limit, offset
GET/api/v1/accounts/:address/token-transfersПерекази токенів (NRC-20) за участю адреси
GET/api/v1/accounts/:address/totalsЛише нода. Суми надісланого й отриманого
POST/api/v1/faucetЛише тестові мережі (CHAIN_ENV=testnet). Тіло: address, public_key, amount (uNRO, необов'язково)
POST/api/v1/wallet/derive-addressТіло: words. Виводить адресу .human з фрази — надсилає фразу на сервер. Вимкнено в mainnet; у тестових мережах — лише з NEUROCHAIN_ALLOW_SERVER_DERIVE=true

Імена і NFT ​

МетодШляхПідпис дляТіло / примітки
POST/api/v1/addresses/humanneuro:system.nameЛише нода. name, owner, + підписані поля. Реєструє власне ім'я .human
GET/api/v1/addresses/human/price—Лише нода. ?name= → ціна за довжиною
POST/api/v1/nodes/registerneuro:system.nodename, owner, необов'язково node_address (для .app / .vault), + підписані поля
GET/api/v1/nodes—Зареєстровані ноди
GET/api/v1/nodes/:address—Запис однієї ноди
PUT/POST/api/v1/nodes/:address/profileneuro:system.nodedescription, website, commission_bps, p2p_endpoint, rpc_endpoint
POST/api/v1/nodes/:address/unjailneuro:system.nodeПовернутися в набір після періоду jail (підписує власник)
POST/api/v1/nft/transferадреса NFTnft_address, from (поточний власник), to, + підписані поля. Комісія 100 uNRO
GET/api/v1/nft/:address—Запис NFT та історія передач
GET/api/v1/nft/owner/:address—NFT, якими володіє адреса
POST/api/v1/agents/registerneuro:system.agentname, owner, + підписані поля. Реєструє .agent
GET/api/v1/agents/:address—Запис агента

Стейкінг ​

МетодШляхПідпис дляТіло / примітки
POST/api/v1/staking/stakeneuro:system.stakeaddress, amount, + підписані поля
POST/api/v1/staking/unstakeneuro:system.stakeaddress, + підписані поля
POST/api/v1/staking/delegateадреса валідатораdelegator, validator, amount, + підписані поля
POST/api/v1/staking/undelegateадреса валідатораdelegator, validator, + підписані поля
GET/api/v1/staking/info/:address—Стейк, блокування, винагороди адреси
GET/api/v1/staking/validators—Валідатори зі стейком і делегуваннями
GET/api/v1/staking/delegations/:validator—Делегування валідатору
GET/api/v1/staking/my-delegations/:address—Делегування, зроблені адресою
GET/api/v1/staking/rewards/:address—Історія винагород; `source=stake
GET/api/v1/validators—Валідатори консенсусу зі stake, trust_score, blocks_proposed, votes_cast, last_active
GET/api/v1/slashing/history—Лише нода. Слешинги. limit

Див. Стейкінг і делегування.

Управління ​

МетодШляхПідпис дляТіло / примітки
POST/api/v1/governance/proposeneuro:system.governanceproposer, title, description, kind (text / PARAM_CHANGE), payload, voting_duration, + підписані поля
POST/api/v1/governance/:id/voteneuro:system.governancevoter, accept (bool), + підписані поля
GET/api/v1/governance/proposals—status, limit (≤ 100), offset
GET/api/v1/governance/:id—Одна пропозиція з голосами
GET/api/v1/governance/params—Усі параметри зі значенням і описом

Див. Управління.

Сховища (мультипідпис) ​

МетодШляхПідпис дляТіло / примітки
GET/api/v1/vault/:addr/config—threshold, members
GET/api/v1/vault/:addr/proposals—Пропозиції виплат
GET/api/v1/vault/member/:addr—Сховища, до яких належить адреса
POST/api/v1/vault/:addr/proposalsадреса сховищаproposer, to, amount, description, + підписані поля
POST/api/v1/vault/:addr/proposals/:id/signадреса сховищаsigner, + підписані поля. Виплата відбувається, коли підписів досягнуто поріг
POST/api/v1/vault/:addr/membersадреса сховищаmember, requester, + підписані поля
POST/api/v1/vault/:addr/thresholdадреса сховищаthreshold, requester, + підписані поля

Експериментально

Операції сховищ зараз застосовує нода, що отримала запит, а не консенсус. Доки це не перенесено в консенсус, працюйте зі сховищем через одну ноду.

Контракти ​

МетодШляхПідпис дляТіло / примітки
GET/api/v1/contracts—owner, limit, offset
GET/api/v1/contracts/:address—Метадані, security_score, власник, хеш коду
GET/api/v1/contracts/:address/token-info—Лише gateway. Назва, символ, decimals, пропозиція NRC-20
POST/api/v1/contracts/:address/call—function, args, dry_run, gas_limit, caller. Читання з dry_run: true; записи в mainnet відхиляються
POST/api/v1/contracts/deployneuro:system.deployЛише нода. owner, bytecode_hex або base64_wasm, name, description, template, + підписані поля
POST/api/v1/contracts/analyze—Лише нода. bytecode_hex → risk_score, security_score, ml_score, model, violations
POST/api/v1/contracts/attest—bytecode_hex → аналіз, підписаний ML-DSA-65: score, bytecode_hash, timestamp, signature, pubkey
POST/api/v1/contracts/audit—Лише gateway. bytecode_hex → аналіз ноди (вихідний код не приймається)
POST/api/v1/contracts/reaudit—Лише gateway. address → повторний аналіз розгорнутого контракту
POST/api/v1/contracts/generate—Лише gateway. Генерація шаблону контракту (SmartForge)
POST/api/v1/contracts/certifyneuro:system.certВидати сертифікат безпеки (оператор VMGuardian)
POST/api/v1/contracts/whitelistneuro:system.whitelistЛише нода. bytecode_hash — довірений байткод шаблону
PATCH/api/v1/contracts/:address/scoreneuro:system.scoreЛише нода. security_score
GET/api/v1/certificates—owner, limit, offset
GET/api/v1/certificates/:id—Один сертифікат
GET/api/v1/certificates/contract/:address—Сертифікат контракту
GET/api/v1/templates—Зареєстровані шаблони контрактів
GET/api/v1/templates/:id—Один шаблон з ABI
POST/api/v1/templates/registerneuro:system.templatesauthor (.node), name, description, category, bytecode_hex, abi_json, fee_unro, + підписані поля
POST/api/v1/templates/deprecateneuro:system.templatesЛише нода. template_id, author, delete, + підписані поля

AI і моделі ​

МетодШляхПримітки
GET/api/v1/ai/statusЛише gateway. Стан AI-моделей
POST/api/v1/sentinel/scoreОцінити форму транзакції: value, gas_price, nonce, last_nonce, balance, tx_count_last_10, recipient_tx_count, is_self_transfer → score, anomalous, category
GET/api/v1/oracle/logЖурнал рішень AI. model, kind, subject, limit, offset
GET/api/v1/oracle/log/:idОдне рішення
GET/api/v1/models/registryРеєстр моделей у мережі. limit, offset
GET/api/v1/models/registry/:idОдна версія моделі
POST/api/v1/models/registerЛише валідатори; підпис для neuro:models.registry. from, name, version, weights_hash, architecture, params_count, accuracy, + підписані поля
GET/api/v1/ai/export/{blocks,txs,validators,oracle}Експорт даних для навчання (JSON Lines)
POST/api/v1/assistant/ask, GET /api/v1/assistant/healthЛише gateway. Помічник з документації (вимкнений, якщо не ASSISTANT_ENABLED=1)

Список довіри Sentinel ​

МетодШляхПідпис дляТіло
POST/api/v1/trust/addneuro:system.trustowner, recipient, + підписані поля
POST/api/v1/trust/removeneuro:system.trustowner, recipient, + підписані поля
GET/api/v1/trust/:owner—Довірені отримувачі з висотою активації

Абстракція акаунтів ​

МетодШляхПідпис дляТіло
POST/api/v1/session/grantneuro:system.sessionaccount, session_pk, scope, cap, expiry_block, + підписані поля
POST/api/v1/session/revokeneuro:system.sessionaccount, session_pk, + підписані поля
GET/api/v1/session/list/:account—Сесійні ключі акаунта
POST/api/v1/sponsor/depositneuro:system.sponsoraddress, amount, + підписані поля
POST/api/v1/sponsor/withdrawneuro:system.sponsoraddress, amount, + підписані поля
GET/api/v1/sponsor/:address—Баланс пулу спонсора

Див. Абстракція акаунтів.

Ідентичність і відновлення ​

Ці операції підписують власні повідомлення (наприклад, nc-rotate|addr|add|remove|nonce), а не nc-tx-v2; див. Ідентичність.

МетодШляхТіло
POST/api/v1/identity/rotateowner, add, remove, + підписані поля
POST/api/v1/identity/recovery/setupowner, guardians, threshold, timelock, + підписані поля
POST/api/v1/identity/recovery/requesttarget, new_key, + підписані поля
POST/api/v1/identity/recovery/approvetarget, guardian, + підписані поля
POST/api/v1/identity/recovery/rejecttarget, guardian, + підписані поля
POST/api/v1/identity/recovery/withdrawtarget, + підписані поля
POST/api/v1/identity/recovery/cancelowner, + підписані поля
GET/api/v1/identity/:addrКлючі й версія
GET/api/v1/identity/recovery/:addrНалаштування відновлення і відкритий запит, якщо є
GET/api/v1/identity/guardian-of/:addrІдентичності, які охороняє ця адреса

Нативні активи й обмін ​

МетодШляхТіло / примітки
GET/api/v1/assetsВипущені активи
GET/api/v1/assets/:idОдин актив
GET/api/v1/assets/check-symbol?symbol= — чи тікер вільний і коректний
GET/api/v1/assets/balances/:addrБаланси активів
POST/api/v1/assets/issuefrom, name, symbol, decimals, initial, max_supply, reissuable, reissue_unlock_height, issue_nonce, + підписані поля. Комісія asset_issue_fee
POST/api/v1/assets/transferfrom, to, asset_id, amount, + підписані поля
GET/api/v1/dex/pools, /api/v1/dex/pools/:idПули
POST/api/v1/dex/poolsfrom, asset_x, asset_y, amount_x, amount_y, + підписані поля
POST/api/v1/dex/liquidity/addfrom, pool_id, max_a, max_b, + підписані поля
POST/api/v1/dex/liquidity/removefrom, pool_id, shares, + підписані поля
GET/api/v1/dex/quoteКотирування обміну
POST/api/v1/dex/swapfrom, pool_id, asset_in, amount_in, min_out, deadline_height, + підписані поля. Виконується пакетом під час коміту наступного блоку
GET/api/v1/dex/windowПоточне вікно пакета
POST/api/v1/dex/deposit, /api/v1/dex/withdrawПереміщення коштів між основним балансом і балансом обміну
GET/api/v1/dex/balances/:addr, /dex/positions/:addr, /dex/activity/:addr, /dex/transactionsБаланси обміну, позиції LP, активність

Усі операції з активами й обміном підписуються для neuro:system.assets і застосовуються в консенсусі.

Поки лише тестові мережі

У консенсусі ці операції також вимагають другого підпису над точним вмістом (_psig, повідомлення nc-asset-op-v1|op|from|fields|nonce), коли нода працює з CHAIN_ENV=mainnet. REST-ендпоінти цей підпис поки не приймають, тож у mainnet кожна операція з активами й обміном відхиляється; з CHAIN_ENV=testnet вони застосовуються без перевірки вмісту.

IBC v2 експериментально ​

МетодШляхТіло / примітки
POST/api/v1/ibc/channel/openfrom, channel, port, counterparty_chain, allowed_denoms, + підписані поля
POST/api/v1/ibc/channel/pausefrom, channel, paused, + підписані поля
POST/api/v1/ibc/transferfrom, channel, dest_chain, receiver, denom, amount, + підписані поля
POST/api/v1/ibc/recvfrom, packet_id, receiver, denom, amount, + підписані поля
POST/api/v1/ibc/ackfrom, id, + підписані поля
POST/api/v1/ibc/redeemfrom, channel, dest_chain, receiver, denom, amount, + підписані поля
POST/api/v1/ibc/client/update, /api/v1/ibc/attestОновлення легкого клієнта й атестація (релеєр)
GET/api/v1/ibc/channels, /ibc/packets, /ibc/denoms, /ibc/client/:chainId, /ibc/header/latest, /ibc/voucher/:addr, /ibc/pq/test-vectorСтан і тестові вектори

Усі операції IBC v2 підписуються для neuro:system.ibc; recv, ack, операції з каналами й клієнтом доступні лише ключам операторів IBC. Див. IBC v2 і шардинг.