Окружения
Платформа предоставляет два изолированных окружения на отдельных хостах. Аккаунт, баланс, API-ключи и секреты вебхуков привязаны строго к одному окружению и никогда не пересекаются.
Перед началом работы
| Параметр | Mainnet (основная сеть) | Тестнет Nile |
|---|---|---|
| Базовый URL | https://api.tenergy.me/v1 | https://api-nile.tenergy.me/v1 |
| Префиксы ключей | ak_live_… / sk_live_… | ak_test_… / sk_test_… |
| Баланс | Пополняется реальным депозитом в блокчейне | Пополняется через тестовый кран (faucet) в кабинете |
| Расчет цен | Динамический движок цен в реальном времени | Фиксированная таблица тестовых цен |
Поле network в GET /v1/prices и в вебхуках | mainnet | nile |
Ключ, отправленный на хост другого окружения, отклоняется с ошибкой 1012 key_environment_mismatch еще до поиска ключа в базе данных.
Как проверить текущее окружение
Публичный запрос GET /v1/prices возвращает имя сети, что позволяет клиенту программно проверить окружение перед выполнением платных операций.
curl -s https://api-nile.tenergy.me/v1/prices | grep -o '"network":"[a-z]*"'
const prices = await (await fetch("https://api-nile.tenergy.me/v1/prices")).json();
if (prices.network !== "nile") throw new Error(`ожидалась сеть nile, получено ${prices.network}`);
import json, urllib.request
with urllib.request.urlopen("https://api-nile.tenergy.me/v1/prices") as res:
prices = json.load(res)
assert prices["network"] == "nile", prices["network"]
В чем Nile отличается от Mainnet
Тестнет Nile не является абсолютной копией основной сети. Используйте его для проверки формата запросов и ответов API; поведение под реальной нагрузкой проверяйте в Mainnet.
| Механика | Nile | Mainnet |
|---|---|---|
| Исполнение ордеров пулами | Только через ITRX — у других поставщиков нет тестнета | Полный каскад поставщиков ликвидности |
| Доступная ликвидность | Небольшой тестовый объем; крупные заказы могут возвращать 5001 insufficient_supply | Реальная распределенная ликвидность сети |
| Максимальный срок блокировки делегирования | 5 дней (getMaxDelegateLockPeriod — 144 000 блоков) | 30 дней (864 000 блоков) |
| Задержка разморозки (unfreeze) | 1 день | 14 дней (getUnfreezeDelayDays) |
| Тарифы и пайплайны | Невозможно протестировать тариф 30d и процедуру вывода стейкинга | Доступны все тарифы и процессы |
Вебхуки из Nile подписываются собственным секретом тестового эндпоинта. Если ваш обработчик принимает уведомления из обоих окружений, выбирайте секрет для проверки подписи по полю network в теле запроса или по URL эндпоинта — но ни в коем случае не по типу события.