Деплой контрактов
Компиляция Solidity на стороне сервера и деплой в testnet и mainnet.
Как это работает#
Вы загружаете исходник на Solidity — сервер компилирует его и деплоит с вашего кастодиального кошелька. Не нужны Hardhat/Foundry, приватные ключи или управление газом локально.
Компилятор и окружение#
| Параметр | Значение |
|---|---|
| Версия solc | 0.8.20 |
| Целевой EVM | paris |
| Библиотеки | @openzeppelin/contracts 5.4.0 |
| Разрешённые импорты | только @openzeppelin/contracts |
Безопасность компиляции
Разрешён импорт только из
@openzeppelin/contracts. Произвольные внешние импорты блокируются — это защищает сборку и сеть.Компиляция (без деплоя)#
POST
/api/devportal/contracts/compilepublicsourcestringrequiredИсходный код Solidity.
fileNamestringoptionalИмя файла (опционально).
Ответ
{
"compilerVersion": "0.8.20",
"evmVersion": "paris",
"warnings": [],
"contracts": [
{ "name": "MyToken", "abi": [ ... ], "bytecodeSize": 4821 }
]
}Деплой#
POST
/api/devportal/contracts/deployBearer (dev)sourcestringrequiredИсходный код Solidity.
contractNamestringoptionalИмя контракта, если в файле их несколько.
constructorArgsunknown[]optionalАргументы конструктора в порядке объявления.
network"testnet" | "mainnet"optionalПо умолчанию testnet.
projectIdstringoptionalПривязать контракт к проекту.
Запрос
curl -X POST https://kazsmartchain.org/api/devportal/contracts/deploy \
-H "Authorization: Bearer <JWT>" \
-H "Content-Type: application/json" \
-d '{
"source": "<SOLIDITY>",
"contractName": "MyToken",
"constructorArgs": [],
"network": "testnet"
}'Ответ (объект контракта)
{
"id": "9f1c...",
"name": "MyToken",
"network": "testnet",
"status": "deployed",
"address": "0x...",
"deployTxHash": "0x...",
"deployedBlock": 5530,
"compilerVersion": "0.8.20",
"evmVersion": "paris",
"abi": [ ... ]
}Жизненный цикл и статусы#
| Статус | Значение |
|---|---|
| compiled | Скомпилирован, ожидает одобрения (mainnet) |
| deployed | Успешно задеплоен on-chain |
| failed | Деплой завершился ошибкой (см. поле error) |
Mainnet и одобрение#
- Testnet — деплой выполняется сразу, контракт получает статус
deployed. - Mainnet — контракт сначала компилируется и переходит в статус
compiled, ожидая ручного одобрения оператором; после одобрения выполняется деплой.
Редактор кода в портале
Код в онлайн-редакторе портала не сохраняется автоматически между страницами. Сохраняйте исходник локально перед навигацией, чтобы не потерять изменения.

