אינטגרציה עם 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 בפרויקט שלכם
תהליך האינטגרציה כולל ארבעה שלבים:
- אנליטיקה — קביעת הפונקציות הנדרשות: אימות, Frames, ערוצים, קריאת נתונים. בחירת ספק Hubs: Neynar (מנוהל, התחלה מהירה) או Pinata (אירוח עצמי).
- עיצוב — הגדרת מפתחות חתימה Ed25519, בחירת מחסנית: Frog עבור Frames, @farcaster/auth-kit עבור SIWF, Neynar API עבור נתונים.
- יישום — כתיבת חוזים חכמים (אם נדרש), מטפלי שרת, hooks בצד הלקוח. אופטימיזציית גז לעסקאות על השרשרת דרך EIP-1559.
- בדיקות ופריסה — בדיקות ב-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+ פרויקטים.







