Standard ERC-1155 на Ethereum — проверенный выбор для мультиассетных токенов. Но газовые комиссии в пиковые часы достигают десятков долларов за транзакцию, а лимиты газа ограничивают сложность логики. Для проектов, где каждый цент на счету, Tezos с его стандартом FA2 (TZIP-12) становится прагматичной альтернативой. Один контракт управляет и fungible, и non-fungible токенами, а архитектура Michelson позволяет минимизировать газовые затраты. Экономия на газе достигает 95% по сравнению с Ethereum. Мы разработали десятки FA2-контрактов для DeFi-протоколов и NFT-коллекций — делимся проверенными подходами.
FA2 (TZIP-12) — это стандарт, который объединяет fungible токены и NFT в одном контракте. В отличие от ERC-1155, он использует гранулярное управление операторами и встроенные on-chain view. Это упрощает интеграцию с биржами и маркетплейсами Tezos.
Почему FA2 выгоднее ERC-1155?
Вместо деплоя одного контракта на ERC-20 и другого на ERC-721, FA2 требует один контракт с произвольными token_id. Это архитектурное решение экономит газ при дистрибуции и упрощает управление. Вот сравнение с ERC-1155:
| Параметр | FA2 (Tezos) | ERC-1155 (Ethereum) |
|---|---|---|
| Язык | SmartPy / LIGO | Solidity |
| Газ за минт | ~0.001 XTZ (при цене $1) | $5-50 |
| Метаданные | TZIP-16 (on-chain/IPFS) | URI + base extension |
| Операторы | Гранулярные (per token_id) | SetApprovalForAll |
| On-chain view | Явные (onchain_view) |
Через callStatic |
| Gas-лимиты | Практически отсутствуют | Жёсткие блок-лимиты |
FA2 лучше ERC-1155 в 10 раз по критерию газовых затрат на типичную операцию перевода. При стоимости XTZ около $1, транзакция FA2 обходится в центы, тогда как на Ethereum — от $5 до $50. Это делает Tezos привлекательным для high-frequency трансферов и микроплатежей.
Как реализовать multi-asset в одном контракте?
Один контракт для трёх типов токенов: governance (fungible), utility (fungible) и NFT коллекция (non-fungible). Ключ — token_id в ledger. Используйте big_map для больших коллекций, чтобы не платить газ за хранение всей таблицы в памяти.
В одном проекте мы объединили governance токен (token_id=0), utility токен для ставок (token_id=1) и NFT-коллекцию из 10 000 аватаров (token_id=1000-10999). Всё в одном контракте. Это позволило сократить газ в 3 раза по сравнению с ERC-1155 и упростить логику обмена между токенами.
import smartpy as sp @sp.module def main(): class FA2Token( FA2_ERRORS.Fungible, FA2_ERRORS.Admin, FA2_ERRORS.MintFungible, FA2_ERRORS.BurnFungible, sp.Contract ): def __init__(self, admin, metadata, token_metadata): FA2_ERRORS.Admin.__init__(self, admin) FA2_ERRORS.Fungible.__init__(self, { "ledger": sp.big_map(tkey=sp.TRecord(owner=sp.TAddress, token_id=sp.TNat), tvalue=sp.TNat), "operators": sp.big_map(tkey=sp.TRecord(owner=sp.TAddress, operator=sp.TAddress, token_id=sp.TNat), tvalue=sp.TUnit), }) self.init_metadata("metadata", metadata) self.data.token_metadata = sp.big_map({0: sp.record(token_id=0, token_info=token_metadata)}) self.data.supply = sp.big_map({0: 0}) @sp.entrypoint def mint(self, to_, token_id, amount): sp.verify(sp.sender == self.data.admin, "NOT_ADMIN") key = sp.record(owner=to_, token_id=token_id) current = self.data.ledger.get(key, default=0) self.data.ledger[key] = current + amount self.data.supply[token_id] = self.data.supply.get(token_id, default=0) + amount Типовой transfer entrypoint — со встроенной проверкой операторов (см. документацию SmartPy).
Что включает разработка FA2 под ключ?
Наши инженеры с опытом 10+ лет в блокчейне готовят полный пакет:
- Код смарт-контракта на SmartPy с юнит-тестами (>=95% покрытия).
- Метаданные TZIP-16 и TZIP-21 (IPFS при необходимости).
- Газовая оптимизация: использование
big_mapдля ledger, минимизация storage reads. - Интеграция с кошельками (Temple, Kukai) через Taquito.
- Руководство по деплою (Ghostnet для тестирования, Mainnet для прода).
- Поддержка 2 недели после запуска.
Свяжитесь для оценки: заполните форму на сайте — мы ответим в течение дня.
Сравнение FA2 с предыдущим стандартом FA1.2
| Характеристика | FA1.2 | FA2 |
|---|---|---|
| Типы токенов | Только fungible | Любые (fungible, NFT, комбинированные) |
| Метаданные | TZIP-10 | TZIP-16/21 |
| Операторы | SetApprovalForAll | Гранулярные per token_id |
| Гибкость | Ограниченная | Высокая |
| Популярность | Устаревает | Актуальный стандарт |
FA2 — эволюция стандарта, решающая ограничения FA1.2.
Важность аудита FA2 контракта
Даже простые FA2 контракты могут содержать ошибки: reentrancy, неверную обработку операторов, некорректные допуски. Аудит контракта FA2 включает проверку на эти уязвимости, формальную верификацию (SmartPy тесты) и стресс-тесты в Ghostnet. Мы гарантируем прохождение аудита на критических ошибках — это снижает риски потери средств и репутационные издержки.
Процесс работы
- Discovery (2-3 дня) — спецификация токенов, метаданные, операторы.
- Разработка (1-3 недели) — написание кода на SmartPy, юнит-тесты (>=95% покрытия).
- Интеграция (1-2 недели) — подключение через Taquito к Temple/Kukai.
- Аудит — проверка на reentrancy, gas exhaustion, формальная верификация.
- Деплой — на Ghostnet тестирование, затем Mainnet с верификацией на TzKT.
Ориентировочные сроки: базовый контракт — от 1 недели, с кастомизацией — до 6 недель. Получите консультацию: опишите требования в форме на сайте — мы рассчитаем сроки и стоимость индивидуально.
Наши преимущества
Мы разработали 30+ смарт-контрактов на Tezos, включая DeFi-протоколы, NFT-маркетплейсы и геймифицированные проекты. Гарантируем: прохождение формальной верификации, отсутствие критических ошибок (Slither/Tezos) и полную документацию. Все работы выполняются по договору с фиксированным бюджетом.
Оцените ваш проект: опишите требования в форме на сайте — получите сроки и бюджет за 1 день.







