Интеграция с Farcaster
При разработке социального dApp вы сталкиваетесь с дилеммой: использовать централизованный API или блокчейн с высокими комиссиями. Farcaster предлагает третий путь — децентрализованный протокол с off-chain сообщениями и on-chain идентификацией. Farcaster — протокол, где каждое действие не требует газа, а идентификация привязана к Ethereum через FID. Мы внедрили его в более чем 30 проектах за несколько лет, и теперь ваш проект может присоединиться к этой экосистеме.
Farcaster — децентрализованный social protocol с on-chain identity (Ethereum) и off-chain сообщениями (Hubs). В отличие от Lens, Farcaster приоритизирует скорость и developer experience: нет газа за каждое действие, нет latency блокчейна для сообщений. Быстро растущая экосистема с Warpcast как основным клиентом. Аутентификация через SIWF занимает 2 секунды, а Frames позволяют создавать интерактивные посты без перезагрузки страницы.
Почему Farcaster лучше Lens?
| Критерий | Farcaster | Lens Protocol |
|---|---|---|
| Gas за действия | Нет (off-chain сообщения) | Есть за каждую транзакцию |
| Developer experience | Высокая (Neynar API, Frog) | Средняя (подписи на Polygon) |
| Скорость сообщений | Мгновенная | Зависит от блокчейна |
| Frames (интерактив) | Встроенная поддержка | Требует внешних решений |
| Аутентификация | SIWF (Sign In With Farcaster) | SIWE (Sign In With Ethereum) |
Farcaster обеспечивает в 10 раз меньше задержек для сообщений и не требует оплаты газа за каждое действие, что критично для социальных приложений. В реальном проекте NFT-маркетплейса мы сократили время аутентификации до 2 секунд, а публикация кастов происходит мгновенно.
Как интегрировать Farcaster в проект?
Процесс интеграции состоит из четырёх этапов:
- Аналитика — определяем необходимые функции: аутентификация, Frames, каналы, чтение данных. Выбираем провайдера Hubs: Neynar (managed, быстрый запуск) или Pinata (самостоятельный хостинг).
- Проектирование — настраиваем signer-ключи Ed25519, выбираем стек: Frog для Frames, @farcaster/auth-kit для SIWF, Neynar API для данных.
- Реализация — пишем смарт-контракты (если нужны), серверные обработчики, клиентские хуки. Оптимизируем gas для on-chain транзакций через EIP-1559.
- Тестирование и деплой — проверяем в Warpcast и других клиентах, используем эмулятор Frog для локальной отладки, запускаем нагрузочное тестирование.
Ключевые компоненты интеграции
- FID (Farcaster ID): on-chain идентификатор на Optimism. Регистрация один раз, стоит газ. Мы помогаем с регистрацией и управлением.
- Frames: интерактивные элементы прямо в ленте — мини-приложения внутри постов. Стек: Frog (TypeScript), Open Graph изображения.
- Sign In With Farcaster (SIWF): аутентификация через Farcaster аккаунт — аналог SIWE. Используем @farcaster/auth-kit для React.
- Neynar API: managed Hub API, снимает необходимость запускать собственный Hub. Предоставляет публикацию кастов, чтение ленты, поиск пользователей.
Реальный кейс: интеграция Farcaster для P2P-платформы
Заказчик хотел добавить социальные функции в свою P2P-платформу обмена токенами. Основная задача — аутентификация через Farcaster и публикация сделок в каналы. Мы реализовали SIWF с @farcaster/auth-kit за 3 дня, настроили Neynar API для чтения ленты подписчиков и создали кастомные Frames для подтверждения сделок прямо в ленте. Пользователи получили возможность совершать обмен без перехода на сайт — всё внутри Warpcast. Результат: время аутентификации сократилось в 5 раз, количество завершённых сделок выросло на 40%.
Пример реализации Frames
import { Frog } from "frog"; import { Button, FrameContext } from "frog"; const app = new Frog({ basePath: "/api" }); // Простой frame с минтингом NFT app.frame("/mint-nft", async (c: FrameContext) => { const { buttonValue, frameData } = c; let status = "ready"; let txHash = ""; if (buttonValue === "mint") { // Инициируем минт транзакцию try { txHash = await mintNFT(frameData?.fid?.toString() ?? ""); status = "minted"; } catch { status = "error"; } } return c.res({ image: ( <div style={{ display: "flex", flexDirection: "column", alignItems: "center" }}> <img src="https://yourapp.com/nft-preview.png" width="400" height="300" /> {status === "minted" && <p>Minted! TX: {txHash.slice(0, 10)}...</p>} {status === "error" && <p>Error minting. Try again.</p>} {status === "ready" && <p>Mint your exclusive NFT</p>} </div> ), intents: [ status === "ready" && <Button value="mint">Mint NFT</Button>, status === "minted" && <Button.Link href={`https://etherscan.io/tx/${txHash}`}>View TX</Button.Link>, ], }); }); Пример работы с Neynar API
import { NeynarAPIClient } from "@neynar/nodejs-sdk"; const neynar = new NeynarAPIClient({ apiKey: process.env.NEYNAR_API_KEY! }); // Публикация каста (поста) const cast = await neynar.publishCast( signerUUID, // UUID signer, зарегистрированного через Neynar "Hello Farcaster! #web3", { embeds: [{ url: "https://yourapp.com/post/123" }], channelId: "dev", // публикация в канале /dev } ); // Получение ленты по FID const feed = await neynar.fetchFeed("following", { fid: 12345, limit: 25, cursor: nextCursor, }); // Получение followers const followers = await neynar.fetchUserFollowers({ fid: 12345 }); // Поиск пользователей const users = await neynar.searchUser("alice", { viewerFid: myFid }); Аутентификация через SIWF
import { createAppClient, viemConnector } from "@farcaster/auth-client"; const appClient = createAppClient({ ethereum: viemConnector(), }); // Создаём channel для auth const { channelToken, url, nonce } = await appClient.createChannel({ siweUri: "https://yourapp.com/login", domain: "yourapp.com", }); // Пользователь сканирует QR код или переходит по ссылке в Warpcast // После подтверждения — получаем статус const status = await appClient.watchStatus({ channelToken }); if (status.data.state === "completed") { const { fid, displayName, pfpUrl, username } = status.data; // Пользователь аутентифицирован await createUserSession(fid, username); } React хуки для Farcaster
import { AuthKitProvider, useSignIn } from "@farcaster/auth-kit"; function LoginButton() { const { signIn, isLoading, isSuccess, profile } = useSignIn({ onSuccess: (res) => { console.log(`Logged in as ${res.username} (FID: ${res.fid})`); }, }); return ( <button onClick={signIn} disabled={isLoading}> {isLoading ? "Connecting..." : "Sign In with Farcaster"} </button> ); } function App() { return ( <AuthKitProvider config={{ rpcUrl: "https://mainnet.optimism.io", domain: "yourapp.com", siweUri: "https://yourapp.com/login", }} > <LoginButton /> </AuthKitProvider> ); } Какие проблемы возникают при интеграции Farcaster?
- Истечение signer-ключей: ключи Ed25519 имеют срок действия. Используем TTL-логику с автоматическим продлением через Neynar.
- Ошибка при публикации каста: часто из-за неверного signerUUID. Проверяем регистрацию signer через Neynar Dashboard.
- Gas для Frames с транзакциями: оптимизируем вызовы смарт-контрактов, используем EIP-1559 для прогнозируемой стоимости.
- Несовместимость Frames в разных клиентах: тестируем в Warpcast, Supercast и через эмулятор Frog.
Что входит в работу?
- Разработка смарт-контрактов (если требуется кастомная логика)
- Настройка Neynar API и signer-ключей
- Реализация SIWF с @farcaster/auth-kit
- Создание Frames с использованием Frog
- Интеграция каналов и чтения ленты
- Документация кода и инструкция по развертыванию
- Техническая поддержка 2 недели после деплоя
- Передача доступов и обучение вашей команды
Закажите интеграцию Farcaster уже сегодня, чтобы ваше dApp стало частью быстрорастущей экосистемы.
Сроки и стоимость
| Этап | Длительность | Результат |
|---|---|---|
| SIWF + базовая социальная лента | от 1 недели | Готовая аутентификация, лента подписчиков |
| Frames с транзакциями | от 1 недели | Интерактивные посты с минтингом / голосованием |
| Полный набор (SIWF + Frames + каналы + кастомные контракты) | от 3 недель | Полноценное социальное dApp на Farcaster |
Стоимость рассчитывается индивидуально после оценки проекта. Получите консультацию нашего инженера — свяжитесь с нами, и мы дадим примерную оценку в течение дня.
Мы гарантируем качество кода и соблюдение стандартов безопасности. Доверьте интеграцию профессионалам с опытом 30+ проектов.







