Быстрый старт
От регистрации по ЭЦП до задеплоенного контракта и REST-вызова — за несколько минут.
Что понадобится#
- Установленный
NCALayerи ключ ЭЦП (для входа в портал). - Браузер — для портала разработчика на dev.kazsmartchain.org.
curlили любой HTTP-клиент — для вызова REST API.
testnet (chainId 17991): деплой проходит мгновенно и бесплатно, газ выдаётся через faucet. На mainnet деплой требует ручного одобрения.1. Регистрация по ЭЦП#
Портал запросит подпись challenge через NCALayer. Ваш ИИН извлекается из сертификата и становится идентификатором аккаунта. Приватный ключ ЭЦП не покидает ваш компьютер.
При первой регистрации портал создаёт для вас кастодиальный кошелёк и начисляет стартовый газ в testnet.
POST /api/devportal/auth/eds/challenge → подпись → POST /api/devportal/auth/eds/login. В ответ приходит token (JWT разработчика, действует 12 часов) — подробнее в разделе Аутентификация.2. Газ из faucet#
В testnet газ начисляется бесплатно. Запросить пополнение можно в разделе «Wallet & Faucet» портала или по API:
curl -X POST https://kazsmartchain.org/api/devportal/faucet/drip \
-H "Authorization: Bearer <DEV_JWT>" \
-H "Content-Type: application/json" \
-d '{ "network": "testnet" }'Лимит — до 5 начислений в сутки на разработчика, по 10 KSC за раз (значения по умолчанию).
3. Деплой контракта#
Загрузите исходник на Solidity — портал сам скомпилирует его (solc 0.8.20, EVM paris, доступны @openzeppelin/contracts) и задеплоит c вашего кошелька.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("My Token", "MTK") {
_mint(msg.sender, 1_000_000 * 10 ** decimals());
}
}curl -X POST https://kazsmartchain.org/api/devportal/contracts/deploy \
-H "Authorization: Bearer <DEV_JWT>" \
-H "Content-Type: application/json" \
-d '{
"source": "<SOLIDITY_SOURCE>",
"contractName": "MyToken",
"network": "testnet"
}'В ответе вернётся объект контракта с id, address, deployTxHash и abi. Запомните id — он нужен для вызовов.
4. Выпуск API-ключа#
Чтобы вызывать контракт из своего приложения, выпустите API-ключ в разделе «API keys». Ключ вида ksc_… показывается один раз — сохраните его.
curl -X POST \
https://kazsmartchain.org/api/devportal/developers/<DEV_ID>/api-keys \
-H "Authorization: Bearer <DEV_JWT>" \
-H "Content-Type: application/json" \
-d '{ "name": "my-app", "scopes": ["read", "write"] }'5. Вызов контракта по REST#
Для каждого метода ABI портал поднимает эндпоинты query (чтение) и invoke (запись). Авторизация — заголовком x-api-key.
curl -X POST \
https://kazsmartchain.org/api/devportal/contracts/<CONTRACT_ID>/query/balanceOf \
-H "x-api-key: ksc_<YOUR_KEY>" \
-H "Content-Type: application/json" \
-d '{ "args": ["0xYourWalletAddress"] }'
