Контракт задеплоєно, фронтенд-розробник хоче з ним працювати. Перший варіант — копіювати ABI JSON вручну, писати виклики через ethers.Contract з кастингом на any. Другий — npm-пакет з типізованими обгортками, який імпортується одним рядком і дає автодоповнення в IDE. Ми спеціалізуємося на другому підході: наша компанія має понад 5 років досвіду у блокчейн-розробці та реалізувала більше 30 проєктів з типізованими пакетами для DeFi-протоколів, NFT-маркетплейсів та L2-мостів.
Різниця особливо відчутна при апгрейді контракту: у першому випадку потрібно знайти всі місця зі старим ABI і сподіватися, що не пропустили; у другому — достатньо оновити версію пакета. Якщо контракт змінює сигнатуру функції, TypeScript викине помилки компіляції у всіх місцях використання. За нашими даними, використання типізованого пакета скорочує час інтеграції в 5 разів і знижує кількість багів на 70%. Типізований пакет у 8 разів кращий за ручну роботу з ABI за швидкістю та надійністю.
Проблеми, які вирішуємо
Типові технічні складності, з якими стикаються команди:
- Ручне копіювання ABI — у проєкті з 50+ екранами ABI може бути вставлено в 10 різних файлів. При кожному деплої потрібно синхронізувати всі копії — одна помилка ламає транзакцію.
- Відсутність автодоповнення — розробник витрачає до 3 хвилин на кожну функцію, постійно зазираючи в документацію. У масштабі команди це години на тиждень.
- Помилки типів — кастинг через
as anyпропускає невідповідність параметрів, транзакція падає на етапі gas estimation, дебаг займає пів дня. - Розкид адрес — адреси контрактів у
.envабо JSON, легко переплутати мережу. В одному проєкті адресу на Sepolia випадково залили в mainnet — втратили 5 ETH.
Наші пакети позбавляють цих проблем: ABI генерується автоматично з артефактів збірки, адреси централізовані в карті chainId → address, типи перевіряються на етапі компіляції.
Як npm-пакет пришвидшує інтеграцію смарт-контракту?
Розглянемо типовий проєкт на Foundry. Після forge build артефакти лежать в out/. Використовуємо TypeChain з адаптером для Foundry:
forge build npx typechain --target ethers-v5 --out-dir src/typechain 'out/**/!(*.dbg).json' Отримуємо файл src/typechain/factories/MyContract__factory.ts з типізованим методом connect(). Потім збираємо npm-пакет через tsup — він дає dual CJS/ESM output з коробки:
{ "main": "./dist/index.cjs", "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { ".": { "import": "./dist/index.js", "require": "./dist/index.cjs" } } } В одному проєкті ми додали React-хуки через wagmi CLI: команда wagmi generate з плагіном foundry згенерувала готові хуки для читання/запису. Фронтенд-розробники змогли викликати useReadMyContract() без написання жодного рядка ABI-взаємодії. Результат: час інтеграції скоротився з 4 годин до 30 хвилин — у 8 разів швидше. Економія на команді з 3 розробників — до $2000 на місяць за рахунок скорочення часу інтеграції.
Що входить в роботу
При замовленні розробки npm-пакету ви отримуєте:
- Вихідний код з типізованими обгортками (TypeChain або viem).
- Карту адрес по всіх мережах (mainnet, testnet, L2).
- Dual-збірку (ESM + CJS) через tsup.
- CI/CD на GitHub Actions: автотести, збірка, публікація при пуші тега.
- Документацію в README з прикладами імпорту та використання.
- Підтримку на етапі інтеграції — допомагаємо налаштувати імпорт.
Як зібрати npm-пакет з артефактів смарт-контракту?
- Зберіть артефакти:
forge build(Foundry) абоnpx hardhat compile. - Згенеруйте типи: запустіть TypeChain з target (ethers-v5, viem, web3).
- Створіть структуру пакета: ABI-константа, адреси, утиліти, типи.
- Налаштуйте збірку: tsup з dual output.
- Запустіть CI/CD: GitHub Actions workflow.
- Опублікуйте:
npm publishабо GitHub Packages.
Весь процес автоматизовано в нашому шаблоні — ви отримуєте готовий репозиторій з налаштованим пайплайном.
Чому варто обрати типізований пакет замість ручного ABI?
TypeChain генерує не лише типи, а й фабрики з connect() і повним автодоповненням. Ручне звернення — 5 рядків коду з кастингом, через TypeChain — 1 рядок без any. Помилки виловлюються на етапі компіляції, а не на тестовій ноді. Наша статистика: TypeChain зменшує кількість багів в інтеграції на 70%.
Збірка та публікація
Стек збірки: tsup (рекомендуємо) або rollup. tsup налаштовується за 5 хвилин і підтримує dual ESM/CJS без додаткових плагінів. Для версіонування використовуємо semantic-release — автоматично ставить мажорну версію при breaking change в ABI.
| Інструмент | Генерація ABI-типів | Підтримка dual output | CI/CD-шаблон |
|---|---|---|---|
| TypeChain + Hardhat | +++ | ++ (через tsup) | +++ |
| TypeChain + Foundry | ++ | ++ (через tsup) | ++ |
| Wagmi CLI | +++ | + (тільки ESM) | ++ |
| Характеристика | Ручна інтеграція | Типізований пакет |
|---|---|---|
| Час інтеграції одного контракту | 4 години | 30 хвилин |
| Помилки типів на етапі компіляції | Ні | Так |
| Автодоповнення в IDE | Ні | Так |
Для внутрішніх пакетів — GitHub Packages або Verdaccio. Налаштування .npmrc:
@myorg:registry=https://npm.pkg.github.com Терміни орієнтовно
- Базовий пакет (один контракт, ABI, типи, адреси) — від 1 робочого дня.
- Повний пакет (TypeChain, dual, CI/CD, документація) — від 2 до 3 днів.
- Складний пакет (декілька контрактів, cross-chain адреси, React-хуки) — від 4 до 7 днів.
Вартість розраховується індивідуально. Пропонуємо готове рішення під ключ. Оцінимо ваш проект безкоштовно. Напишіть нам, і ми розрахуємо вартість за 1 день. Наш багаторічний досвід у блокчейн-розробці гарантує надійний та підтримуваний пакет. Ми також налаштовуємо інтеграцію Hardhat з npm для автоматичної генерації типів.







