מדריך מלא לשילוב Coinbase Wallet עבור dApps
כאשר אנו בונים dApps על React/Next.js, אנו מקבלים לעתים קרובות בקשות לשילוב Coinbase Wallet. לקוחות מתלוננים על אי-התאמה ב-SSR ובקשות מיותרות במהלך החתימה. הגישה שלנו פותרת בעיות אלו תוך הבטחת חוויית משתמש חלקה. השילוב בדרך כלל עולה $500–$1000, ושימוש ב-Wagmi חוסך ללקוחות $300–$500 בהשוואה לפיתוח ישיר עם ה-SDK, ומפחית את התחזוקה העתידית ב-30%.
לאחרונה, סטארטאפ של שוק NFT על Next.js פנה אלינו. הם נתקלו בכשלי זיהוי ארנק בטעינת העמוד ובשגיאות חתימה לאחר החיבור. אבחנו את הבעיה: ייבוא דינמי חסר של ה-SDK וטיפול שגוי ב-Suspense. לאחר שילוב דרך Wagmi עם מחבר coinbaseWallet והגדרת SSR, הבעיה נפתרה ביום אחד.
מדוע שילוב סטנדרטי של Coinbase Wallet יכול להיכשל
-
אי-התאמה במהלך רינדור שרת: ה-Coinbase Wallet SDK אינו מותאם ל-SSR. שימוש ב-
window.ethereumללא בדיקות גורם לשגיאות ב-Next.js. אנו משתמשים בייבוא דינמי וב-Suspense. -
בקשות N+1 במהלך אישור: כל קריאה ל-
eth_requestAccountsעלולה לגרום לבקשות מיותרות. אנו שומרים את הכתובת במטמון באמצעותuseAccountמ-Wagmi. -
קישור עמוק לנייד: ב-iOS/Android, ה-WalletConnect SDK לא תמיד פותח את האפליקציה כראוי. יש צורך בהגדרה נכונה של
cbwallet://ובגיבוי.
הגרסאות האחרונות של ה-Coinbase Wallet SDK (ראה Coinbase Wallet SDK ב-GitHub) תומכות ב-Smart Wallet ללא ביטויי גיבוי.
הימנעות משגיאות SSR עם Coinbase Wallet
כדי למנוע אי-התאמה, ייבאו דינמית את ה-SDK ואת רכיב החיבור. עטפו קוד הניגש ל-window.ethereum ב-useEffect או השתמשו ב-next/dynamic עם SSR מושבת. דוגמה:
const WalletButton = dynamic(() => import('./WalletButton'), { ssr: false }); זה מבטיח שקוד הארנק רץ רק בצד הלקוח.
שילוב Coinbase Wallet שלב אחר שלב
בצעו את השלבים הבאים לשילוב Coinbase Wallet:
- התקינו חבילות:
const WalletButton = dynamic(() => import('./WalletButton'), { ssr: false });. - צרו תצורת Wagmi עם מחבר
npm install @coinbase/wallet-sdk wagmi viem @tanstack/react-queryוהגדירו רשתות. - יישמו את רכיב החיבור: השתמשו ב-hook
coinbaseWalletמ-Wagmi כדי להתחיל את החיבור.
import { createConfig, http } from 'wagmi';
import { mainnet, polygon } from 'wagmi/chains';
import { coinbaseWallet } from 'wagmi/connectors';
export const config = createConfig({
chains: [mainnet, polygon],
connectors: [
coinbaseWallet({ appName: 'My App', preference: 'smartWalletOnly' }),
metaMask(),
walletConnect({ projectId: 'YOUR_PROJECT_ID' })
],
transports: {
[mainnet.id]: http(),
[polygon.id]: http()
}
}); Smart Wallet (Coinbase Wallet v4)
Coinbase Smart Wallet הוא סוג ארנק חדש ללא ביטויי גיבוי, המבוסס על Passkey. הוא מאפשר יצירת ארנק ללא MetaMask או ביטוי גיבוי:
import { CoinbaseWalletSDK } from '@coinbase/wallet-sdk';
const sdk = new CoinbaseWalletSDK({
appName: 'My App',
preference: {
options: 'smartWalletOnly', // только Smart Wallet
keysUrl: 'https://keys.coinbase.com/connect'
}
});פרטים נוספים: Passkey — טכנולוגיית אימות ללא סיסמה.
אישור מבוסס חתימה
import { useConnect, useSignMessage, useAccount } from 'wagmi';
import { coinbaseWallet } from 'wagmi/connectors';
function CoinbaseLogin() {
const { connect } = useConnect();
const { address, isConnected } = useAccount();
const { signMessageAsync } = useSignMessage();
const handleLogin = async () => {
if (!isConnected) {
await connect({ connector: coinbaseWallet({ appName: 'My App' }) });
}
const nonce = await getNonce(address);
const signature = await signMessageAsync({ message: `Login to example.com\nNonce: ${nonce}` });
const token = await verifySignature(address, signature);
setToken(token);
};
return <button onClick={handleLogin}>Войти через Coinbase Wallet</button>;
} קישור עמוק לנייד
מידע נוסף על הגדרת קישור עמוק
במכשירים ניידים, ה-WalletConnect SDK פותח אוטומטית את אפליקציית Coinbase Wallet דרך קישור עמוק: useConnect. לפעולה תקינה:
- הוסיפו את הדומיין לרשימת ההיתרים של WalletConnect Cloud.
- הגדירו גיבוי דפדפן אם האפליקציה לא מותקנת.
- בדקו על סימולטורים של iOS ו-Android.
בחירה בין SDK ישיר ל-Wagmi
ה-Coinbase Wallet SDK הגולמי מספק חבילה קטנה יותר (~20 KB) אך דורש ניהול מצב ידני. Wagmi + מחבר coinbaseWallet מגדיל את החבילה ל-~50 KB אך מספק מצב אוטומטי, תמיכה ב-MetaMask וב-WalletConnect, וטיפול מובנה ב-SSR. Wagmi מהיר פי 3 ליישום מה-SDK הישיר, ומפחית קוד boilerplate בכ-60%. לעומת זאת, החבילה של ה-SDK הישיר קטנה פי 2.5 מזו של Wagmi (20 KB לעומת 50 KB), אך חסרה תמיכה במספר ארנקים ואופטימיזציית SSR.
| פרמטר | SDK ישיר של Coinbase Wallet | Wagmi + מחבר |
|---|---|---|
| התקנה | בינונית (מצב ידני) | גבוהה (מצב אוטומטי) |
| SSR | דורש התאמה | מובנה דרך ייבוא דינמי |
| תאימות | Coinbase בלבד | כל ארנק תואם Wagmi |
| חבילה | ~20 KB | ~50 KB |
| זמן פיתוח | 3-4 ימים | 1-2 ימים |
| חיסכון בעלויות | אין | חיסכון של $300–$500 |
הבחירה תלויה בעדיפויות. לחבילה הקטנה ביותר, השתמשו ב-SDK הישיר. לגמישות ותמיכה במספר ארנקים, השתמשו ב-Wagmi. מבחינת יעילות עלות, שילוב Wagmi זול ב-40% מה-SDK הישיר בשל זמן פיתוח מופחת.
כיצד אנו מספקים שילוב תוך 2–3 ימים
אנו משתמשים ב-Wagmi + מחבר coinbaseWallet. זה מרכז את ניהול מצב הארנק ותומך ב-MetaMask וב-WalletConnect. תהליך העבודה שלנו:
| שלב | פרטים | לוח זמנים |
|---|---|---|
| ניתוח וארכיטקטורה | קביעת שיטת השילוב | 0.5 יום |
| התקנת SDK ותצורה | התקנת חבילות, רשתות, transport | 0.5 יום |
| יישום חיבור וחתימה | רכיב, nonce, אימות | יום אחד |
| קישור עמוק לנייד ובדיקות | בדיקה על iOS/Android | 0.5 יום |
| תיעוד ומסירה | README, העברת קוד | 0.5 יום |
סה"כ: 2 עד 4 ימים תלוי במורכבות. שילוב Wagmi מפחית עלויות פיתוח ותחזוקה בכ-30%.
מה כלול
- קוד מקור של הרכיב (TypeScript, React/Vue/Angular)
- תצורת WalletConnect Cloud (אם נדרש)
- שילוב backend (nonce, אימות חתימה)
- בדיקות על מכשירים ניידים אמיתיים
- תיעוד ו-README
- תמיכה חודש לאחר המסירה
יש לנו ניסיון של 10+ שנים בפיתוח web ו-50+ פרויקטים של Web3. אנו מציעים אחריות של 3 חודשים על הקוד. העלות קבועה — בקשו הצעת מחיר לפי המפרט הטכני שלכם. לייעוץ בנושא שילוב, צרו קשר עם המהנדסים שלנו. הזמינו שילוב Coinbase Wallet לפרויקט שלכם.







