Портал разработчика

Вызов контрактов

Автоматические REST-эндпоинты query/invoke для каждого метода вашего контракта и per-contract OpenAPI.

Contract Gateway#

Для каждого задеплоенного контракта портал автоматически поднимает REST-эндпоинты по его ABI: методы чтения доступны через query, методы записи — через invoke. Авторизация — по API-ключу в заголовке x-api-key.

Подпись берёт на себя сервер
Для invoke сервер формирует, подписывает (вашим кастодиальным ключом) и отправляет транзакцию, отслеживает включение в блок и возвращает результат.

query — чтение (eth_call)#

POST/api/devportal/contracts/:id/query/:methodAPI key · read

Не создаёт транзакцию, не тратит газ. Возвращает декодированное значение метода.

bash
curl -X POST \
  https://kazsmartchain.org/api/devportal/contracts/<ID>/query/balanceOf \
  -H "x-api-key: ksc_..." \
  -H "Content-Type: application/json" \
  -d '{ "args": ["0xWallet..."] }'
Ответ
{ "result": "1000000000000000000000000" }

invoke — запись (транзакция)#

POST/api/devportal/contracts/:id/invoke/:methodAPI key · write
bash
curl -X POST \
  https://kazsmartchain.org/api/devportal/contracts/<ID>/invoke/transfer \
  -H "x-api-key: ksc_..." \
  -H "Content-Type: application/json" \
  -d '{ "args": ["0xRecipient...", "1000000000000000000"] }'
Ответ
{
  "txHash": "0x...",
  "blockNumber": 5531,
  "gasUsed": "51234",
  "status": "ok"
}

Аргументы и типы#

argsunknown[]optional
Аргументы метода в порядке ABI. Числа/uint передавайте строкой во избежание потери точности; адреса — строкой 0x...; bool — true/false.
  • uint256 и большие числа — строкой в наименьших единицах (wei).
  • Авторизация проверяет, что ключ принадлежит владельцу контракта и имеет нужный скоуп.
  • Каждый вызов фиксируется в метриках использования.

OpenAPI вашего контракта#

GET/api/devportal/contracts/:id/openapi.jsonpublic

Портал генерирует OpenAPI 3.0.3 спецификацию персонально для вашего контракта: по одному POST на каждый метод ABI (query/invoke), со схемой безопасности ApiKeyAuth (x-api-key). Эту спецификацию можно импортировать в Postman, Swagger UI или сгенерировать клиент.

Регистрация в FireFly#

POST/api/devportal/contracts/:id/register-fireflypublic

Регистрирует контракт в FireFly, после чего становится доступен FireFly-сгенерированный Swagger контракта: GET /api/devportal/contracts/:id/swagger.