Разработка фракционализации NFT
CryptoPunk #5822 продали за $23.7 миллиона в 2022 году. Среднестатистический участник рынка не может позволить себе такую позицию — но хочет exposure. Фракционализация разбивает ownership на тысячи ERC-20 токенов, каждый из которых представляет долю в NFT. Механически звучит просто. На практике — нужно решить вопрос governance (кто решает продавать?), ценообразования (как определить fair value для выкупа?) и ликвидности (куда деть эти ERC-20 токены).
Как работает фракционализация технически
Vault контракт и custodial модель
Базовая схема: NFT локируется в vault контракте, контракт минтит ERC-20 токены в заданном количестве. Держатели ERC-20 = совладельцы NFT. Vault — custodian, NFT никуда не уходит.
contract NFTVault {
IERC721 public nft;
uint256 public tokenId;
IERC20 public fractionToken; // ERC-20 с fixed supply
function fractionalize(address _nft, uint256 _tokenId, uint256 _supply) external {
IERC721(_nft).transferFrom(msg.sender, address(this), _tokenId);
FractionToken(fractionToken).mint(msg.sender, _supply);
}
}
После локирования NFT — vault становится его единственным владельцем. Оригинальный depositor получает все fraction токены и может продать/распределить их как угодно.
Механизм buyout — самая сложная часть
Любой держатель fraction токенов должен иметь путь к ликвидации — иначе это просто спекулятивный токен без права на актив. Механизм buyout позволяет любому участнику выкупить все fraction токены по установленной цене и получить NFT.
Reserve price и auction buyout (Fractional/Tessera модель):
Depositor устанавливает reservePrice при фракционализации. Любой может инициировать auction если готов платить ≥ reservePrice. Auction длится N дней. Держатели fraction токенов могут голосовать за обновление reserve price (взвешенное голосование по количеству токенов). Если auction завершается — победитель получает NFT, fraction держатели получают ETH пропорционально доле.
Тонкий момент: governance атака на reserve price. Крупный holder может проголосовать за снижение reserve price, организовать дешёвый buyout и выгнать мелких holders по заниженной цене. Защита: ограничение на изменение reserve price — не более X% за период Y, timelock на применение изменений.
Instant buyout без auction:
Альтернативный паттерн — любой может выкупить NFT, купив 100% fraction токенов по текущей рыночной цене. Контракт проверяет баланс: if (fractionToken.balanceOf(msg.sender) == fractionToken.totalSupply()) → transferNFT. Это требует от покупателя собрать все токены с open market — невозможно сделать insider buyout.
Ценообразование и TWAP oracle
Для протоколов, где fraction токены используются как collateral (Aave-стиль кредитование под долю в NFT), нужна цена floor. Два подхода:
AMM TWAP. Fraction токены торгуются в Uniswap v3 пуле против ETH или USDC. NFT valuation = fraction_price * total_supply. Это market-driven оценка. Проблема: низкая ликвидность в маленьких пулах → легко манипулировать → flash loan attack на оракул.
Chainlink NFT floor price feed. Chainlink запустил floor price feeds для топовых коллекций (BAYC, CryptoPunks, Azuki). Если NFT из поддерживаемой коллекции — используем Chainlink. Если нет — более сложная задача.
ERC-721 vs ERC-1155 source токены
ERC-721 фракционализируется один к одному: один NFT → N fraction токенов. Vault хранит один tokenId.
ERC-1155 — сложнее. Если source токен уже имеет amount > 1 (semi-fungible), vault может держать количество, и fraction токены представляют долю в этом количестве. Пример: 100 единиц edition #5 фракционализируются в 1000 ERC-20 токенов — каждый токен = 0.1 единицы edition.
Для фракционализации ERC-1155 нужно дополнительно трекать: сколько единиц source токена в vault, и при buyout — сколько единиц получает покупатель за 100% fraction tokens.
Ликвидность для fraction токенов
Создание ERC-20 токена — только полдела. Без ликвидности держатель fraction токена не может выйти из позиции. Стандартные подходы:
Uniswap v3 пул при старте. Depositor предоставляет начальную ликвидность: часть fraction токенов + ETH в пул. Начальная цена = reserve_price / total_supply.
Liquidity bootstrapping pool (Balancer LBP). Продажа fraction токенов через LBP с убывающим весом — аналог dutch auction. Позволяет провести price discovery без начальной ликвидности.
Curve стейблкоин пул. Если fraction токены привязаны к USD-деноминированному активу — Curve пул с USDC дает лучший slippage для крупных объёмов.
Процесс разработки
Mechanism design (3-5 дней). Определяем: buyout механику, governance модель, oracle для ценообразования, liquidity strategy. Пишем формальную спецификацию инвариантов.
Контракты (2-3 недели). Vault + ERC-20 fraction token + buyout auction + governance. Foundry с property-based тестами: «сумма fraction tokens всегда равна totalSupply», «NFT покидает vault только через buyout с полной оплатой».
Oracle интеграция (3-5 дней). Chainlink floor price или Uniswap TWAP с anti-manipulation защитой.
Frontend (1-2 недели). Фракционализация UI, marketplace fraction токенов, buyout flow, governance голосование.
Ориентиры по срокам
Базовая фракционализация с instant buyout — 1-2 недели. Полный протокол с auction, governance, LP bootstrap и oracle — от 4-6 недель.
Стоимость рассчитывается после обсуждения buyout механики и требований к governance.







