Web3Modal ב-dApp: חיבור ארנק, SSO ורשתות מותאמות אישית

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

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

שאלות נפוצות

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

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

אם ה-dApp שלך משתמש רק ב-MetaMask, אתה מפסיד עד 70% מהמשתמשים שמעדיפים ארנקים אחרים. Web3Modal v3 מ-WalletConnect פותר את בעיית התאימות, אך האינטגרציה דורשת הבנה של מספר מלכודות: SSR hydration, הגדרת Project ID, רשתות מותאמות אישית ואופטימיזציה של מגבלת גז. נעבור איתך על כל שלב — מהתקנה ועד פריסה, בהסתמך על 5+ שנות ניסיון בפיתוח בלוקצ'יין ו-20+ dApps מוצלחים עם Web3Modal. אנו מבטיחים פעילות יציבה ותמיכה לאחר פריסה. חיסכון של עד 40% מהתקציב שלך, אתה מקבל פתרון מוכן במקום סלקטור מותאם אישית.

Web3Modal טוב פי 10 מסלקטור ארנקים מותאם אישית מבחינת מספר הארנקים הנתמכים: 300+ לעומת 2–3 בפיתוח עצמי. WalletConnect מציינים שאינטגרציה של Web3Modal מגדילה את המרת החיבור ב-40%. לפי התיעוד הרשמי, Web3Modal הוא הכלי הפופולרי ביותר לחיבור ארנקים.

בפרויקט אחד, הלקוח בילה 3 שבועות בתחזוקת סלקטור מותאם אישית שעדיין החמיץ באגי אבטחה. לאחר מעבר ל-Web3Modal, צמצמנו את זמן הפיתוח ליומיים וביטלנו לחלוטין פגיעויות reentrancy בממשק החיבור.

יתרונות Web3Modal על פני סלקטור מותאם אישית

סלקטור ארנקים מותאם אישית לוקח 2–3 שבועות לפיתוח ומציג 5+ באגי אבטחה פוטנציאליים. Web3Modal מספק 300+ ארנקים, תמיכה ב-WalletConnect, deeplinks למובייל והתחברות באמצעות אימייל מחוץ לקופסה. השוואה בין פתרונות פופולריים:

תכונה Web3Modal RainbowKit ConnectKit
מספר ארנקים 300+ 20+ (עיקריים) 50+ (פופולריים)
רכישת קריפטו מובנית (fiat on-ramp) כן (באמצעות enableOnramp) לא לא
התחברות אימייל/חברתית כן (Web3Auth) לא לא
רשתות מותאמות אישית כן (defineChain) כן כן
מחיר חינם (בסיסי) חינם חינם

הגדרת Web3Modal: התקנה ותצורה

npm install @web3modal/wagmi wagmi viem @tanstack/react-query 
// config/web3modal.ts
import { createWeb3Modal } from '@web3modal/wagmi/react'
import { defaultWagmiConfig } from '@web3modal/wagmi/react/config'
import { mainnet, arbitrum, base, polygon } from 'wagmi/chains'

const projectId = import.meta.env.VITE_WC_PROJECT_ID

const metadata = {
  name: 'My dApp',
  description: 'My dApp description',
  url: 'https://mydapp.xyz',
  icons: ['https://mydapp.xyz/icon.png'],
}

export const config = defaultWagmiConfig({
  chains: [mainnet, arbitrum, base, polygon],
  projectId,
  metadata,
})

createWeb3Modal({
  wagmiConfig: config,
  projectId,
  enableAnalytics: true,
  enableOnramp: true,
  themeMode: 'dark',
  themeVariables: {
    '--w3m-accent': '#7c3aed',
    '--w3m-border-radius-master': '4px',
  },
})

ה-Project ID מתקבל מ-cloud.walletconnect.com. בלעדיו, ה-Modal יופעל, אך חיבורי WalletConnect לא יעבדו.

אינטגרציה ב-React

// main.tsx
import { WagmiProvider } from 'wagmi'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { config } from './config/web3modal'

const queryClient = new QueryClient()

export function App() {
  return (
    <WagmiProvider config={config}>
      <QueryClientProvider client={queryClient}>
        <Router />
      </QueryClientProvider>
    </WagmiProvider>
  )
}

// Component with connect button
import { useWeb3Modal } from '@web3modal/wagmi/react'
import { useAccount } from 'wagmi'

function ConnectWallet() {
  const { open } = useWeb3Modal()
  const { address, isConnected } = useAccount()

  return (
    <button onClick={() => open()}>
      {isConnected ? `${address?.slice(0,6)}...${address?.slice(-4)}` : 'Connect Wallet'}
    </button>
  )
}

איך להימנע משגיאות Hydration ב-Next.js?

ב-Next.js App Router, מתרחשת בעיית hydration: Web3Modal מאותחל בצד הלקוח, אך השרת מרנדר HTML שונה. זה קורה כי הארנק אינו זמין בשרת. הפתרון הוא ההוראה npm install @web3modal/wagmi wagmi viem @tanstack/react-query ו-guard של mounted. SSR hydration הוא הבאג הנפוץ ביותר במהלך אינטגרציה.

// providers/Web3Provider.tsx
'use client'
import { createWeb3Modal } from '@web3modal/wagmi/react'
import { useEffect, useState } from 'react'

createWeb3Modal({ wagmiConfig: config, projectId })

export function Web3Provider({ children }: { children: React.ReactNode }) {
  const [mounted, setMounted] = useState(false)
  useEffect(() => setMounted(true), [])
  return (
    <WagmiProvider config={config}>
      <QueryClientProvider client={queryClient}>
        {mounted ? children : null}
      </QueryClientProvider>
    </WagmiProvider>
  )
}

אילו רשתות אפשר להוסיף?

הוסף רשת משלך באמצעות // config/web3modal.ts import { createWeb3Modal } from '@web3modal/wagmi/react' import { defaultWagmiConfig } from '@web3modal/wagmi/react/config' import { mainnet, arbitrum, base, polygon } from 'wagmi/chains' const projectId = import.meta.env.VITE_WC_PROJECT_ID const metadata = { name: 'My dApp', description: 'My dApp description', url: 'https://mydapp.xyz', icons: ['https://mydapp.xyz/icon.png'], } export const config = defaultWagmiConfig({ chains: [mainnet, arbitrum, base, polygon], projectId, metadata, }) createWeb3Modal({ wagmiConfig: config, projectId, enableAnalytics: true, enableOnramp: true, themeMode: 'dark', themeVariables: { '--w3m-accent': '#7c3aed', '--w3m-border-radius-master': '4px', }, }) מ-viem:

import { defineChain } from 'viem'

const sonic = defineChain({
  id: 146,
  name: 'Sonic',
  nativeCurrency: { name: 'Sonic', symbol: 'S', decimals: 18 },
  rpcUrls: {
    default: {
      http: ['https://rpc.soniclabs.com'],
    },
  },
  blockExplorers: {
    default: {
      name: 'SonicScan',
      url: 'https://sonicscan.org',
    },
  },
})

export const config = defaultWagmiConfig({
  chains: [mainnet, sonic],
  // ...
})

כדי להחליף רשתות באופן תוכנתי, השתמש ב-// main.tsx import { WagmiProvider } from 'wagmi' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { config } from './config/web3modal' const queryClient = new QueryClient() export function App() { return ( <WagmiProvider config={config}> <QueryClientProvider client={queryClient}> <Router /> </QueryClientProvider> </WagmiProvider> ) } // Component with connect button import { useWeb3Modal } from '@web3modal/wagmi/react' import { useAccount } from 'wagmi' function ConnectWallet() { const { open } = useWeb3Modal() const { address, isConnected } = useAccount() return ( <button onClick={() => open()}> {isConnected ? `${address?.slice(0,6)}...${address?.slice(-4)}` : 'Connect Wallet'} </button> ) } .

התחברות אימייל וחברתית: כניסה ללא ארנק קריפטו

Web3Modal תומך בארנקים לא-משמורנים (non-custodial) באמצעות Web3Auth. הפעל זאת בתצורה עם 'use client'. המשתמש מזין אימייל, מקבל OTP ויוצר ארנק המנוהל על ידי חוזה חכם. עבור קהל רחב, זה מוריד את חסם הכניסה פי 10. בנוסף, מומלץ להגדיר // providers/Web3Provider.tsx 'use client' import { createWeb3Modal } from '@web3modal/wagmi/react' import { useEffect, useState } from 'react' createWeb3Modal({ wagmiConfig: config, projectId }) export function Web3Provider({ children }: { children: React.ReactNode }) { const [mounted, setMounted] = useState(false) useEffect(() => setMounted(true), []) return ( <WagmiProvider config={config}> <QueryClientProvider client={queryClient}> {mounted ? children : null} </QueryClientProvider> </WagmiProvider> ) } בתצורת Wagmi לתאימות עם Web3Auth.

שלבי אינטגרציה של Web3Modal

  1. ניתוח דרישות ורישום Project ID ב-WalletConnect Cloud
  2. התקנת חבילות והגדרת תצורת Wagmi בסיסית
  3. פיתוח Provider ופתרון SSR hydration עבור Next.js
  4. אינטגרציה של רשתות מותאמות אישית באמצעות defineChain
  5. הגדרת התחברות אימייל/חברתית באמצעות Web3Auth והפעלת fiat on-ramp
  6. בדיקות ב-mainnet/testnet ואופטימיזציה של מגבלת גז
  7. תיעוד והדרכת צוות

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

  • תצורת Web3Modal מותאמת לפרויקט שלך
  • פיתוח Provider עבור React/Next.js עם פתרון SSR hydration
  • הוספת רשתות מותאמות אישית והגדרת מעבר בין רשתות
  • אינטגרציה של התחברות אימייל/חברתית ו-fiat on-ramp
  • בדיקות ב-mainnet ו-testnet, אופטימיזציה של מגבלת גז
  • תיעוד והדרכת צוות
  • תמיכה לאחר פריסה

תהליך עבודה ולוח זמנים

שלב משך
ניתוח דרישות והגדרת Project ID 1–2 ימים
פיתוח Provider ופתרון SSR hydration 2–3 ימים
אינטגרציה של רשתות מותאמות אישית יום אחד
הגדרת התחברות אימייל/חברתית ו-fiat on-ramp 1–2 ימים
בדיקות ב-mainnet/testnet 2–3 ימים
תיעוד והדרכת צוות 1–2 ימים

לוחות הזמנים הסופיים תלויים במורכבות הפרויקט. עבור dApp טיפוסי עם שתי רשתות והתחברות אימייל — בין 7 ל-10 ימי עבודה. המחיר מחושב באופן אישי.

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