שילוב Farcaster: Frames, SIWF ותכונות חברתיות

כשאתם בונים dApp חברתי, אתם נאלצים לבחור בין APIs מרכזיים לבין עסקאות בלוקצ'יין יקרות. אנחנו מפתחים אינטגרציות Farcaster שמשלבות דצנטרליזציה עם הודעות off-chain מיידיות ואימות נוח באמצעות SIWF. הצוות שלנו מספק פרויקט turnkey—מהגדרת Frames ועד להטמעת Neynar API—ומבטיח פתרון אמין שגדל עם העסק שלכם.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1335
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1031

אינטגרציה עם Farcaster

כשבונים dApp חברתי, אתם עומדים בפני דילמה: להשתמש ב-API מרכזי או בבלוקצ'יין עם עמלות גבוהות. Farcaster מציע דרך שלישית—פרוטוקול מבוזר עם הודעות מחוץ לשרשרת וזהות על השרשרת. Farcaster הוא פרוטוקול שבו כל פעולה אינה דורשת גז, והזהות מקושרת ל-Ethereum דרך FID. שילבנו אותו ביותר מ-30 פרויקטים במהלך השנים, ועכשיו הפרויקט שלכם יכול להצטרף למערכת האקולוגית הזו.

Farcaster הוא פרוטוקול חברתי מבוזר עם זהות על השרשרת (Ethereum) והודעות מחוץ לשרשרת (Hubs). בניגוד ל-Lens, Farcaster נותן עדיפות למהירות וחוויית מפתח: אין גז לכל פעולה, אין השהיית בלוקצ'יין להודעות. מערכת אקולוגית שצומחת במהירות עם Warpcast כלקוח הראשי. אימות דרך SIWF אורך 2 שניות, ו-Frames מאפשרים יצירת פוסטים אינטראקטיביים ללא טעינת עמוד מחדש.

למה Farcaster עדיף על פני Lens

קריטריון Farcaster Lens Protocol
גז לכל פעולה אין (הודעות מחוץ לשרשרת) כן, לכל עסקה
חוויית מפתח גבוהה (Neynar API, Frog) בינונית (חתימות Polygon)
מהירות הודעות מיידית תלויה בבלוקצ'יין
Frames (אינטראקטיביים) תמיכה מובנית דורש פתרונות חיצוניים
אימות SIWF (Sign In With Farcaster) SIWE (Sign In With Ethereum)

Farcaster מספק פי 10 פחות השהיה להודעות ואינו דורש עמלות גז לכל פעולה, מה שחיוני ליישומים חברתיים. בפרויקט אמיתי—שוק NFT—צמצמנו את זמן האימות ל-2 שניות, ופרסום cast הוא מיידי.

איך לשלב את Farcaster בפרויקט שלכם

תהליך האינטגרציה כולל ארבעה שלבים:

  1. אנליטיקה — קביעת הפונקציות הנדרשות: אימות, Frames, ערוצים, קריאת נתונים. בחירת ספק Hubs: Neynar (מנוהל, התחלה מהירה) או Pinata (אירוח עצמי).
  2. עיצוב — הגדרת מפתחות חתימה Ed25519, בחירת מחסנית: Frog עבור Frames, @farcaster/auth-kit עבור SIWF, Neynar API עבור נתונים.
  3. יישום — כתיבת חוזים חכמים (אם נדרש), מטפלי שרת, hooks בצד הלקוח. אופטימיזציית גז לעסקאות על השרשרת דרך EIP-1559.
  4. בדיקות ופריסה — בדיקות ב-Warpcast ובקליינטים אחרים, שימוש באמולטור Frog לניפוי מקומי, הרצת בדיקות עומס.

רכיבי מפתח באינטגרציה

  • FID (Farcaster ID): מזהה על השרשרת ב-Optimism. נרשם פעם אחת, עולה גז. אנו מסייעים ברישום ובניהול.
  • Frames: אלמנטים אינטראקטיביים ישירות בפיד—יישומי מיני בתוך פוסטים. מחסנית: Frog (TypeScript), תמונות Open Graph.
  • Sign In With Farcaster (SIWF): אימות דרך חשבון Farcaster—מקביל ל-SIWE. השתמשו ב-@farcaster/auth-kit עבור React.
  • Neynar API: API מנוהל של Hub, מבטל את הצורך להריץ Hub משלכם. מספק פרסום cast, קריאת פיד, חיפוש משתמשים.

מקרה אמיתי: אינטגרציית Farcaster לפלטפורמת P2P

לקוח רצה להוסיף פונקציות חברתיות לפלטפורמת החלפת טוקנים P2P שלו. המשימות העיקריות היו אימות דרך Farcaster ופרסום עסקאות לערוצים. יישמנו SIWF עם @farcaster/auth-kit תוך 3 ימים, הגדרנו Neynar API לקריאת פידים של עוקבים, ויצרנו Frames מותאמים אישית לאישור עסקאות ישירות בפיד. משתמשים יכלו להשלים החלפות מבלי לעזוב את Warpcast. תוצאה: זמן האימות קטן פי 5, העסקאות שהושלמו גדלו ב-40%.

דוגמת יישום Frame

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 Hooks עבור 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

  • פגיית מפתח חתימה: למפתחות Ed25519 יש אורך חיים מוגבל. אנו משתמשים בלוגיקת TTL עם חידוש אוטומטי דרך Neynar.
  • שגיאת פרסום cast: לעיתים קרובות נובעת מ-signerUUID שגוי. אנו מוודאים רישום חותם דרך לוח הבקרה של Neynar.
  • גז עבור Frames עם עסקאות: בצעו אופטימיזציה לקריאות חוזים חכמים, השתמשו ב-EIP-1559 לעלויות צפויות.
  • חוסר תאימות של Frames בין קליינטים: בדקו ב-Warpcast, Supercast ודרך אמולטור Frog.

מה כלול בעבודה

  • פיתוח חוזים חכמים (אם נדרשת לוגיקה מותאמת אישית)
  • הגדרת Neynar API ומפתחות חתימה
  • יישום SIWF עם @farcaster/auth-kit
  • יצירת Frames באמצעות Frog
  • אינטגרציה של ערוצים וקריאת פיד
  • תיעוד קוד והוראות פריסה
  • תמיכה טכנית למשך שבועיים לאחר הפריסה
  • מסירת אישורים והדרכה לצוות שלכם

התחילו את אינטגרציית Farcaster שלכם כדי שה-dApp שלכם יהפוך לחלק ממערכת אקולוגית שצומחת במהירות.

ציר זמן ועלות

שלב משך תוצאה
SIWF + פיד חברתי בסיסי החל משבוע אימות מוכן, פיד עוקבים
Frames עם עסקאות החל משבוע פוסטים אינטראקטיביים עם minting/הצבעות
חבילה מלאה (SIWF + Frames + ערוצים + חוזים מותאמים) החל מ-3 שבועות dApp חברתי מלא על Farcaster

העלות מחושבת באופן אישי לאחר הערכת הפרויקט. קבלו ייעוץ מהמהנדס שלנו—צרו קשר, ונספק הערכה ראשונית תוך יום.

אנו מבטיחים איכות קוד ועמידה בתקני אבטחה. הפקידו את האינטגרציה בידי אנשי מקצוע עם ניסיון של 30+ פרויקטים.