GuidesСгенерировать адреса

Сгенерировать адреса

Создавать адреса по статическим сегментам, получать пачку за счёт авто-инкремента динамического сегмента и группировать их в папку.

Когда схема Vault'а готова (Создать Vault), создать адрес — значит выбрать значения статических сегментов; индекс динамического сегмента платформа присвоит сама. Повторяя запрос, вы получаете пачку адресов в одном поддереве. Про модель адресов — на странице Адреса, папки и доступ.

Шаг 1. Создайте один адрес

Отправьте POST /api/v1/vaults/{code}/addresses с кодом сети (networkCode) и значениями статических сегментов (staticSegments). Индекс динамического сегмента подбирается автоматически.

curl -X POST "[BASE_URL]/api/v1/vaults/acme-otc/addresses" \
  -H "Authorization: Bearer $V3_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "networkCode": "tron_network",
    "staticSegments": { "purpose": "invoices", "asset": "usdt" }
  }'
{
  "id": "cmr3f41z20001psp7phmyapw3",
  "address": "TQ5kohbBSdorGoDBmCGUmDL7RUvNr75mBC",
  "network": "tron",
  "derivationPath": "m/44/195/0/0/1"
}

Под капотом платформа считает следующий свободный индекс для этой комбинации сегментов, собирает канонический путь и прогоняет создание через Policy Engine (action=create_address).

Адрес готов к работе сразу — активация и предварительное пополнение не нужны, комиссию берёт на себя Gas Station.

Шаг 2. Сгенерируйте пачку

Отдельного «пакетного» эндпоинта нет — пачка получается повторными вызовами. Каждый вызов с той же комбинацией статических сегментов получает следующий свободный индекс динамического сегмента, поэтому N запросов дают N адресов в одном поддереве.

for i in $(seq 1 5); do
  curl -sS -X POST "[BASE_URL]/api/v1/vaults/acme-otc/addresses" \
    -H "Authorization: Bearer $V3_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{ "networkCode": "tron_network", "staticSegments": { "purpose": "invoices", "asset": "usdt" } }'
done

Расчёт индекса устойчив к гонкам (SQL MAX с повтором при конфликте), поэтому параллельные запросы не займут один путь. Если политика требует подтверждения создания адреса, запрос вернёт 202 с идентификатором заявки вместо адреса — обрабатывайте оба случая.

Шаг 3. Найдите созданные адреса

Проверьте, что адреса появились:

curl "[BASE_URL]/api/v1/vaults/acme-otc/addresses?token=usdt" \
  -H "Authorization: Bearer $V3_TOKEN"

GET /api/v1/vaults/{code}/addresses поддерживает фильтры search, token и access=shared.

Шаг 4. Сгруппируйте в папку (опционально)

Если адреса нужно вести и шэрить вместе, сложите их в папку: один грант на папку покроет все адреса, включая добавленные позже.

# создать папку
curl -X POST "[BASE_URL]/api/v1/vaults/acme-otc/address-folders" \
  -H "Authorization: Bearer $V3_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Invoices — USDT" }'

# добавить в неё адрес
curl -X POST "[BASE_URL]/api/v1/vaults/acme-otc/address-folders/FOLDER_ID/members" \
  -H "Authorization: Bearer $V3_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "addressId": "ADDRESS_ID" }'

Имена полей в телах (name, addressId) даны для примера — точные схемы папки и её членов сверьте со Справочником API.

Что дальше