Професійне розгортання смарт-контрактів у TON під ключ

Ми допомагаємо проєктам розгорнути смарт-контракти в блокчейні TON: від розробки на FunC і Tact до деплою в testnet та mainnet з повною верифікацією. Наша команда — 5 років на ринку блокчейн-розробки та 20+ успішних проєктів на TON. Оцінимо ваш проєкт за один день. TON — не EVM. Це принципово інш

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Ми допомагаємо проєктам розгорнути смарт-контракти в блокчейні TON: від розробки на FunC і Tact до деплою в testnet та mainnet з повною верифікацією. Наша команда — 5 років на ринку блокчейн-розробки та 20+ успішних проєктів на TON. Оцінимо ваш проєкт за один день.

TON — не EVM. Це принципово інша архітектура, і досвід деплою в Ethereum тут не переноситься. Контракти пишуться на FunC (або Tact — більш високорівнева мова), компілюються в TVM bytecode, і взаємодіють через асинхронні повідомлення. Синхронного виклику contract.someFunction() не існує — тільки відправка message та очікування відповідного повідомлення. Кожна транзакція споживає газ, і оптимізація газу критична для production.

Як деплоїти смарт-контракт у TON?

Деплой у TON використовує концепцію StateInit: контракт розгортається надсиланням повідомлення з init (code + initial data) на адресу, обчислену детерміновано з hash(code, data). Це означає, ви знаєте адресу до деплою. Для зручності використовуємо Blueprint — офіційний фреймворк (аналог Hardhat для EVM).

Покрокова інструкція:

  1. Створіть проєкт: npm create ton@latest my-project і встановіть залежності.
  2. Напишіть контракт на Tact у папці contracts/.
  3. Зберіть код: npx blueprint build.
  4. Напишіть тести в tests/ і виконайте їх: npx blueprint test.
  5. Для деплою в testnet виконайте npx blueprint run --testnet.
  6. Після успішного тестування деплойте в mainnet: npx blueprint run --mainnet.

Отримайте консультацію, якщо потрібна допомога з налаштуванням середовища.

Що таке storage rent і як його враховувати?

На відміну від Ethereum, TON стягує оренду за зберігання даних. Контракт з нульовим балансом «заморожується» через ~6 місяців, а дані видаляються через кілька років. Для production:

  1. Закладайте 0.1–0.5 TON при деплої (простий контракт).
  2. Реалізуйте механізм поповнення балансу.
  3. Моніторте баланс через TonAPI.
Приклад розрахунку storage rent Механізм стягнення оренди залежить від обсягу зайнятого storage (code + persistent data). Ставка фіксована: 1 KB даних ~0.015 TON/рік. Для контракту з 500 байтами даних оренда складе ~0.0075 TON/рік. Рекомендується закладати 0.1–0.5 TON, щоб контракт жив кілька років без поповнення.

Порівняння FunC і Tact

Критерій FunC Tact
Рівень Низький Високий
Швидкість розробки Низька Висока
Контроль газу Повний Обмежений
Помилки в storage Часті Мінімізовані
Для чого підходить Gas-оптимізовані контракти Типові проєкти (NFT, Jetton, DeFi)

Для нових проєктів рекомендуємо Tact — синтаксис ближчий до TypeScript, швидше писати, менше багів. Приклад контракту на Tact:

contract Counter { counter: Int as uint32; init() { self.counter = 0; } receive("increment") { self.counter = self.counter + 1; } get fun value(): Int { return self.counter; } } 

Еквівалент на FunC зайняв би втричі більше рядків з явним store_uint/load_uint.

Що входить в роботу?

  • Розробка смарт-контракту (FunC/Tact) під ваші бізнес-вимоги
  • Написання модульних тестів на TypeScript з емулятором TVM
  • Деплой в testnet з налагодженням через Tenderly (для TON)
  • Деплой в mainnet з верифікацією на verifier.ton.org
  • Документація та інструкція по взаємодії
  • Пост-деплойна підтримка на 7 днів

Замовляйте розгортання — і ми запустимо ваш контракт у TON з гарантією працездатності.

Компіляція та тести

npx blueprint build npx blueprint test 

Тести працюють на локальному TVM емуляторі (@ton/sandbox), виконуються без доступу до мережі. Приклад тесту:

import { Blockchain, SandboxContract, TreasuryContract } from '@ton/sandbox'; import { Counter } from '../wrappers/Counter'; describe('Counter', () => { let blockchain: Blockchain; let deployer: SandboxContract<TreasuryContract>; let counter: SandboxContract<Counter>; beforeEach(async () => { blockchain = await Blockchain.create(); deployer = await blockchain.treasury('deployer'); counter = blockchain.openContract(await Counter.fromInit()); await counter.send( deployer.getSender(), { value: toNano('0.05') }, { $$type: 'Deploy', queryId: 0n } ); }); it('should increment', async () => { await counter.send(deployer.getSender(), { value: toNano('0.01') }, 'increment'); expect(await counter.getValue()).toBe(1n); }); }); 

Деплой в testnet і mainnet

import { toNano } from '@ton/core'; import { Counter } from '../wrappers/Counter'; import { NetworkProvider } from '@ton/blueprint'; export async function run(provider: NetworkProvider) { const counter = provider.open(await Counter.fromInit()); await counter.send( provider.sender(), { value: toNano('0.05') }, { $$type: 'Deploy', queryId: 0n } ); await provider.waitForDeploy(counter.address); console.log('Deployed at:', counter.address.toString()); } 

Запустіть npx blueprint run --testnet для testnet або --mainnet для mainnet. Blueprint запитає seed phrase або підключення Tonkeeper через QR.

Jetton (аналог ERC-20) і NFT

Стандартні токени TON реалізовані через TEP-74 (Jetton) та TEP-62 (NFT). Архітектура відрізняється від ERC-20: кожен власник має окремий контракт JettonWallet. Основний JettonMaster тільки мінтить і зберігає глобальну інформацію. Адреса гаманця обчислюється через getWalletAddress(ownerAddress). Blueprint надає готові обгортки від TON Foundation — не пишіть з нуля.

Верифікація та аудит контракту

Після деплою верифікуємо контракт на verifier.ton.org. Завантажуємо вихідні коди та proof-of-compilation — сервіс підтверджує відповідність bytecode. Після верифікації tonviewer.com і tonscan.org відображають код і дозволяють викликати getter-функції. Також проводимо аудит смарт-контрактів TON з використанням Slither і Mythril для виявлення вразливостей.

Орієнтири за термінами

Тип контракту Термін розробки
Простий (counter, storage) 1–2 дні
Середній (Jetton, NFT) 3–5 днів
Складний (AMM, стейкінг) 1–2 тижні

Деплой готового контракту (testnet + mainnet + верифікація) — від 2–4 годин. Вартість розраховується індивідуально під задачу. Зв'яжіться з нами — ми оцінимо ваш проєкт за 1 день.