Відзначимо: коли до нас звернувся клієнт із завданням портувати 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 день. Зв'яжіться з нами для обговорення деталей.







