Інтеграція з Blend (NFT lending)
Blur запустив Blend у травні 2023 року з однією нестандартною механікою: безстроконові кредити під залог NFT без oracle. Більшість NFT кредитних протоколів (BendDAO, NFTfi) використовують oracle для визначення floor price та автоматичних ліквідацій. Blend їх повністю видалив — ліквідація відбувається тільки коли кредитор запускає аукціон, а позичальник не рефінансує позицію протягом 30 годин.
Це змінює архітектуру інтеграції: немає підписки на ціни события, але потрібен моніторинг аукціону-подій та точний розрахунок часу до ліквідації.
Ключові механіки Blend для інтеграції
Життєвий цикл кредиту та события
Повний життєвий цикл кредиту в Blend проходить через кілька станів:
- Створення пропозиції — кредитор підписує off-chain пропозицію (EIP-712 signature) з параметрами: колекція, rate, сума, закінчення
- Початок кредиту — позичальник приймає пропозицію on-chain, NFT йде в escrow контракт Blend
- Рефінансування — хтось може запропонувати кращу ставку; якщо позичальник приймає — старий кредитор отримує гроші + процент, новий займає його місце
-
Запуск аукціону — кредитор викликає
startAuction(), починається 30-годинне вікно -
Конфіскація — якщо позичальник не рефінансував, кредитор забирає 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 підписи
Пропозиції в Blend не зберігаються on-chain до прийняття. Це зменшує газ для кредиторів, але ускладнює інтеграцію: потрібно отримувати та верифікувати підписи через Blur API.
Структура пропозиції для EIP-712 верифікації:
-
collection— адреса NFT контракту -
totalAmount— максимальна сума кредитів по пропозиції -
maxAmount— максимальна сума одного кредиту -
minAmount— мінімальна сума -
auctionDuration— тривалість аукціону (зазвичай 30 годин) -
salt— унікальний nonce -
expirationTime -
rate— ставка у форматі Blend (wei-scaled)
Верифікуйте підпис через ethers.verifyTypedData() або viem verifyTypedData перед показом пропозиції користувачу.
Як будуємо інтеграцію
Читання активних кредитів. Через The Graph (subgraph blend-protocol) або прямі вызови контракту. Для конкретного NFT tokenId — getActiveLoans(collection, tokenId), повертає масив активних lienId.
Моніторинг аукціонів. Якщо продукт включає сповіщення для позичальників — WebSocket підписка на `StartAuction» события. При виявленні: push-сповіщення користувачу з таймером (30 годин мінус витрачений час). У нас є готовий модуль на Node.js з viem, який обробляє до 500 одночасних моніторингів.
Виконання рефінансування. Виклик refinance(lien, lienId, newLoanAmount, loanOffer, signature). Сума newLoanAmount повинна покривати поточний борг з процентами — беремо з getLoanDebt() + буфер 1-2% на зміни під час mining.
Власні пропозиції (для кредиторів). EIP-712 підпис через MetaMask/WalletConnect, публікація через Blur API. Відозвати пропозицію — інкремент nonce on-chain.
Процес роботи
Аналіз вимог (1 день). Визначаємо роль клієнта: позичальник, кредитор, або маркетплейс поверх Blend. Від цього залежить набір функцій для інтеграції.
Розробка (2-3 дні). Smart contract логіка не пишеться — Blend вже розгорнутий та immutable. Робота: SDK/helpers на TypeScript/viem, React-компоненти для відображення кредитів та позицій, backend-сервіс для моніторингу аукціонів.
Тестування. Fork-тест в Foundry зі станом Ethereum mainnet: моделюємо кредит → аукціон → рефінансування через vm.prank. Це дозволяє тестувати граничні випадки без реальних токенів.
Терміни — 2-4 дні від ТЗ до деплоєму. Вартість залежить від обсягу UI та наявності серверного моніторингу.







