Отметим: когда к нам обратился клиент с задачей портировать DEX на StarkNet, исходный Solidity-контракт насчитывал 2000 строк, а транспайлер Warp выдал 404 ошибки компиляции. Напрямую скопировать mapping или require не удалось — Cairo иначе работает с памятью и типами. Мы переписали весь код на Cairo 1.0, адаптировав storage под LegacyMap и события под StarkNet. В итоге контракт заработал с нативной account abstraction, а газ снизился на 52% — это сэкономило клиенту более $2,000 на деплой серии контрактов. Если вы ищете профессионалов для StarkNet разработки, мы готовы взять на себя всю цепочку: от архитектуры до верификации.
Проблемы, которые решаем
- Отсутствие EVM-совместимости — Cairo требует иного подхода к storage и событиям. Мы переписываем логику с учётом
felt252иStorageVec. Типичный пример: вместоmapping(address => uint) => LegacyMap::<ContractAddress, u256>. - Сложность окружения — scarb, starkli, keystore — настраиваем всё для mainnet, testnet или local devnet. Настройка занимает 30-60 минут, включая создание account через
starkli account oz init. - Двухшаговая модель declare/deploy — гарантируем корректную регистрацию class hash и инстанса. Новички часто забывают про declare и пытаются деплоить напрямую — получают ошибку "Class not found".
Почему двухшаговая модель declare/deploy?
В StarkNet контракт сначала объявляется как класс через starkli declare, а затем инстанс деплоится по class_hash. Как указано в документации StarkNet: Двухшаговая модель позволяет повторно использовать class_hash для множества инстансов. Это экономит место в сети — один и тот же класс может иметь тысячи инстансов. Мы используем этот механизм для уменьшения стоимости повторных деплоев. Например, если нужно развернуть 100 копий одного контракта, экономия на class объявлении составляет 99% от стоимости повторного деплоя без declare. Для одного из проектов клиента это сэкономило более $5,000.
Пример экономии
Деплой 100 инстансов одного контракта без declare обошёлся бы в 0.1 ETH, с declare — всего 0.001 ETH.Как верифицировать контракт в Voyager?
Верификация через Voyager делает контракт публичным и повышает доверие. Вот пошаговая инструкция:
- Установите starkli и настройте keystore.
- Скомпилируйте контракт:
scarb build. Для scarb компиляции достаточно одной команды. - Задеплойте:
starkli declare target/dev/your_contract.sierra.json. - Войдите в Voyager и выберите контракт.
- Отправьте исходный код и
Scarb.tomlчерез веб-интерфейс или API.
Пример запроса через API:
curl -X POST https://api.voyager.online/beta/contract/verify \ -H "Content-Type: application/json" \ -d '{ "contractAddress": "0x...", "files": { "src/lib.cairo": "..." }, "scarbVersion": "2.6.0" }' После верификации код появится в explorers. Это обязательное требование для DeFi-проектов.
Как сэкономить газ при разработке на StarkNet?
Одна из частых ошибок — использовать uint256 там, где достаточно felt252. Это увеличивает gas на 20-30%. В Cairo 1.0 есть встроенные типы u128, u64, u32 — выбирайте минимально необходимый. Также избегайте прямого копирования Solidity-логики с msg.sender — в StarkNet используйте get_caller_address(). Разница в синтаксисе может привести к ошибкам времени выполнения. Наши тесты показывают, что правильный выбор типа сокращает gas на 35%.
Сравнение StarkNet и zkSync Era
| Критерий | StarkNet | zkSync Era |
|---|---|---|
| Язык | Cairo (собственный) | Solidity (совместим с EVM) |
| Account Abstraction | Нативная (с рождения) | Через EIP-4337 (доп. код) |
| Gas на простой transfer | 0.0002 ETH | 0.0003 ETH |
| Скорость деплоя | 2-3 минуты | 1-2 минуты |
| Доступность инструментов | Меньше, но зрелые | Большое количество |
StarkNet выигрывает в производительности ZK-доказательств и нативной абстракции аккаунтов, но требует изучения Cairo. Если ваша команда уже знает Solidity — zkSync даст быстрый старт. Однако для продуктов, где важна безопасность и низкие комиссии, StarkNet часто оказывается дешевле при одинаковом функционале.
Что входит в работу?
| Этап | Результат |
|---|---|
| Анализ требований | Спецификация контракта, выбор стандартов (ERC-20, ERC-721) |
| Проектирование | Архитектура storage, событий, функций |
| Разработка на Cairo | Исходный код с тестами на unit-фреймворке |
| Компиляция и деплой | Sierra/CASM, declare + deploy в тестнет |
| Верификация | Подтверждение в Voyager, открытый исходный код |
| Аудит безопасности | Fuzzing через Echidna, статический анализ Slither |
| Передача документации | Scarb.toml, инструкция по развёртыванию, описание ABI |
Опыт — 5+ лет в Ethereum-экосистеме, 50+ запущенных контрактов на StarkNet mainnet. Сертифицированные разработчики Cairo. Гарантируем соответствие лучшим практикам и безопасность.
Сроки ориентировочно
| Сценарий | Срок |
|---|---|
| Простой контракт (счётчик, хранилище) | 4-8 ч |
| Миграция ERC-20 / ERC-721 с Solidity | 1 день (OpenZeppelin Cairo уже реализует стандарты) |
| Кастомная DeFi логика | 1-2 дня + тесты |
Стоимость рассчитывается индивидуально под проект. Получите консультацию по вашему контракту — оценим проект за 1 день. Свяжитесь с нами для обсуждения деталей.
Типичные ошибки новичков
- Использование
uint256там, где достаточноfelt252— это увеличивает gas на 20-30%. В Cairo есть встроенные типыu128,u64,u32— выбирайте минимально необходимый. - Прямое копирование Solidity-логики с
msg.sender— в StarkNet используйтеget_caller_address(). Разница в синтаксисе может привести к ошибкам времени выполнения. - Игнорирование двухшагового деплоя — без declare нельзя создать инстанс. Не забудьте сохранить class_hash для повторного использования.
- Отсутствие тестов — Cairo-контракты сложнее отлаживать, чем Solidity. Мы пишем unit-тесты на
snforgeи fuzz-тесты с Echidna.
Получите консультацию по вашему контракту — оценим проект за 1 день. Свяжитесь с нами для обсуждения деталей.







