Интеграция с Blend (NFT lending)
Blur запустил Blend в мае 2023 года с одной нестандартной механикой: бессрочные займы под залог NFT без оракулов. Большинство NFT lending протоколов (BendDAO, NFTfi) используют оракулы для определения floor price и автоматических ликвидаций. Blend их убрал полностью — ликвидация происходит только тогда, когда кредитор запускает auction, а заёмщик не рефинансирует позицию в течение 30 часов.
Это меняет архитектуру интеграции: нет подписки на ценовые события, зато нужен мониторинг auction-событий и точный расчёт времени до ликвидации.
Ключевые механики Blend для интеграции
Loan lifecycle и события
Полный жизненный цикл займа в Blend проходит через несколько состояний:
- Offer creation — кредитор подписывает off-chain offer (EIP-712 signature) с параметрами: коллекция, rate, amount, expiration
- Loan start — заёмщик принимает offer on-chain, NFT уходит в escrow контракт Blend
- Refinancing — любой может предложить лучшую ставку; если заёмщик принимает — старый кредитор получает деньги + проценты, новый занимает его место
-
Auction trigger — кредитор вызывает
startAuction(), начинается 30-часовое окно -
Seizure — если заёмщик не рефинансировал, кредитор забирает NFT через
seize()
Для интеграции нужно слушать события контракта Blend (0x29469...): LoanOfferTaken, Refinance, StartAuction, Seize. The Graph subgraph для Blend уже существует, но если нужна low-latency реакция на аукционы — прямой WebSocket на Ethereum ноду через eth_subscribe logs.
Расчёт процентов: непрерывное начисление
Blend использует непрерывное начисление процентов (continuous compounding) вместо простых процентов. Накопленный долг считается как:
debt = principal * e^(rate * time)
Где rate — годовая ставка в долях (например, 0.10 для 10% APR), time — время в секундах / 31536000. При интеграции это важно: если считать по простой формуле, долг будет занижен, транзакция рефинансирования реверснется с InsufficientRepayment.
Контракт Blend хранит startTime и rate для каждого займа. Текущую сумму долга на любой момент получаем через view-функцию getLoanDebt(lienId) — это надёжнее, чем считать самостоятельно.
Off-chain ордербук и EIP-712 подписи
Offers в Blend не хранятся on-chain до момента принятия. Это снижает газ-затраты кредиторов, но усложняет интеграцию: нужно получать и верифицировать подписи через Blur API.
Структура offer для EIP-712 верификации:
-
collection— адрес NFT контракта -
totalAmount— максимальная сумма займов по offer -
maxAmount— максимальная сумма одного займа -
minAmount— минимальная сумма -
auctionDuration— длительность аукциона (обычно 30 часов) -
salt— уникальный nonce -
expirationTime -
rate— ставка в формате Blend (wei-scaled)
Верификацию подписи делаем через ethers.verifyTypedData() или viem verifyTypedData перед показом offer пользователю.
Как строим интеграцию
Чтение активных займов. Через The Graph (subgraph blend-protocol) или прямые вызовы к контракту. Для конкретного NFT tokenId — getActiveLoans(collection, tokenId), возвращает массив активных lienId.
Мониторинг аукционов. Если продукт включает уведомления для заёмщиков — WebSocket подписка на StartAuction события. При обнаружении: push-уведомление пользователю с таймером (30 часов минус elapsed time). У нас есть готовый модуль на Node.js с viem, который обрабатывает до 500 одновременных мониторингов.
Исполнение refinance. Вызов refinance(lien, lienId, newLoanAmount, loanOffer, signature). Сумма newLoanAmount должна покрывать текущий долг с процентами — берём из getLoanDebt() + 1-2% буфер на изменение за время mining транзакции.
Собственные offers (для кредиторов). EIP-712 подпись через MetaMask/WalletConnect, публикация через Blur API. Отзыв offer — инкремент nonce on-chain.
Процесс работы
Анализ требований (1 день). Определяем роль клиента: заёмщик, кредитор, или маркетплейс поверх Blend. От этого зависит набор интегрируемых функций.
Разработка (2-3 дня). Смарт-контрактная логика не пишется — Blend уже deployed и immutable. Работа: SDK/хелперы на TypeScript/viem, React-компоненты для отображения займов и позиций, backend-сервис для мониторинга аукционов.
Тестирование. Fork-тест на Foundry с состоянием Ethereum mainnet: симулируем займ → аукцион → рефинансирование через vm.prank. Это позволяет тестировать граничные случаи без реальных токенов.
Сроки — 2-4 дня от ТЗ до деплоя. Стоимость зависит от объёма UI и наличия серверного мониторинга.







