Інтеграція з Farcaster

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція з Farcaster
Середній
~3-5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Інтеграція Farcaster

Farcaster—децентралізований соціальний протокол з on-chain ідентичністю (Ethereum) та off-chain повідомленнями (Hubs). На відміну від Lens, Farcaster пріоритизує швидкість та досвід розробника: без газу за кожну дію, без затримки блокчейна для повідомлень. Швидко зростаюча екосистема з Warpcast як основним клієнтом.

Архітектура Farcaster

FID (Farcaster ID): on-chain ідентифікатор на Ethereum (Optimism). Реєструвати один раз, коштує газ.

Signers: ключи Ed25519, зареєстровані для FID. Повідомлення підписуються ключем підписанта, а не ключем Ethereum. Це дозволяє додаткам підписувати повідомлення без доступу до приватного ключа гаманця.

Hubs: федеративні сервери, які зберігають та синхронізують повідомлення Farcaster. Neynar, Warpcast, Pinata—приклади провайдерів Hub.

Frames: інтерактивні елементи прямо в стрічці—міні-додатки всередині постів.

Frames—ключова функція для розробників

Frames—стандарт, подібний OpenGraph, для інтерактивних постів. Користувач бачить пост з кнопками, клацає—сервер обробляє дію та повертає новий frame. Можна будувати: mint NFT прямо зі стрічки, голосування, ігри, потоки входу.

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") {
    // Ініціюємо транзакцію 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—спрощена інтеграція

Neynar—керований Farcaster API, усуває необхідність запускати власний Hub:

import { NeynarAPIClient } from "@neynar/nodejs-sdk";

const neynar = new NeynarAPIClient({ apiKey: process.env.NEYNAR_API_KEY! });

// Опублікувати cast (пост)
const cast = await neynar.publishCast(
  signerUUID,      // UUID підписавта, зареєстрованого через 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,
});

// Отримати послідовників
const followers = await neynar.fetchUserFollowers({ fid: 12345 });

// Пошук користувачів
const users = await neynar.searchUser("alice", { viewerFid: myFid });

Sign In With Farcaster (SIWF)

Аутентифікація через акаунт Farcaster—аналог SIWE для Farcaster:

import { createAppClient, viemConnector } from "@farcaster/auth-client";

const appClient = createAppClient({
  ethereum: viemConnector(),
});

// Створити канал для 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—тематичні стрічки (аналог subreddits). Публікація в каналі = охоплення цільової аудиторії:

// Опублікувати у каналі /gaming
await neynar.publishCast(
  signerUUID,
  "Just deployed our new blockchain game! Check it out 🎮",
  {
    channelId: "gaming",
    embeds: [{ url: "https://game.com" }],
  }
);

// Отримати стрічку каналу
const channelFeed = await neynar.fetchFeedByChannelIds(["gaming", "web3"], {
  limit: 25,
  withRecasts: false,
});

Інтеграція Farcaster—1-2 тижні для Sign In + базові соціальні функції. Frames—окремо, 1-2 тижні для інтерактивного frame з транзакціями. Farcaster більш зручний для розробників, ніж Lens для швидкого старту—багата документація, Neynar API зменшує складність.