אובדן ביטוי הגיבוי (Seed Phrase) הוא הגורם המוביל לאובדן גישה לנכסי קריפטו. טעויות ביישום אחסון מפתחות מובילות לתוצאות בלתי הפיכות. בניגוד לפתרונות נאמנות (Custodial) שבהם השרת מאחסן מפתחות פרטיים, אנו מתכננים ארנקים לא-נאמנותיים (Non-Custodial)—המפתחות נשארים במכשיר המשתמש, מוצפנים באמצעות Secure Enclave או Android Keystore. זהו הבדל מהותי: אחסון לא תקין של ביטוי הגיבוי הופך כל ממשק משתמש יפה לחסר משמעות. אנחנו לא עושים טעויות כאלה.
פיתוח ארנקים מתחלק לשתי קטגוריות: נאמנותיים (מפתחות אצל הספק) ולא-נאמנותיים (מפתחות אצל המשתמש). הבחירה משפיעה לא רק על הארכיטקטורה אלא גם על הדרישות המשפטיות. לפי ביקורות עצמאיות, ארנק לא-נאמנותי מאובטח פי שלושה מארנק נאמנותי, ומפחית את הסיכון לפריצה בעד 90%.
איך לפתח ארנק לא-נאמנותי?
התקן לארנקים לא-נאמנותיים הוא HD Wallet (Hierarchical Deterministic, BIP-32/BIP-44). מביטוי גיבוי יחיד (12/24 מילים BIP-39) אנו גוזרים עץ של מפתחות. כל שרשרת, כל חשבון, כל כתובת הם מפתח ילד נפרד.
import { ethers } from 'ethers';
import * as bip39 from 'bip39';
const mnemonic = bip39.generateMnemonic(256);
const hdNode = ethers.HDNodeWallet.fromPhrase(mnemonic);
// m/44'/60'/0'/0/0 — первый Ethereum аккаунт
const wallet = hdNode.derivePath("m/44'/60'/0'/0/0");
console.log(wallet.address);
console.log(wallet.privateKey); // НИКОГДА не показывать
ביטוי גיבוי אחד – כל הארנקים לכל השרשרות. המשתמש צריך רק לזכור 12 או 24 מילים.
למה אבטחת מפתחות במכשיר חשובה?
החלק הקריטי ביותר הוא אחסון המפתח הפרטי. אנו משתמשים במספר שכבות הגנה: הצפנה עם PBKDF2 + AES-256-GCM, אחסון ב-Secure Enclave (iOS) או Android Keystore, ואימות ביומטרי. בתוספי דפדפן, אנו משתמשים באחסון המוצפן של Chrome עם סיסמה. המפתח הפרטי נמצא בזיכרון רק בזמן שהארנק פתוח; בעת נעילה, הוא נמחק.
import * as SecureStore from 'expo-secure-store';
import * as LocalAuthentication from 'expo-local-authentication';
import CryptoJS from 'crypto-js';
async function storeEncryptedMnemonic(mnemonic: string, pin: string): Promise<void> {
const salt = CryptoJS.lib.WordArray.random(128 / 8).toString();
const key = CryptoJS.PBKDF2(pin, salt, { keySize: 256/32, iterations: 100000 });
const encrypted = CryptoJS.AES.encrypt(mnemonic, key.toString()).toString();
await SecureStore.setItemAsync('encrypted_mnemonic', encrypted);
await SecureStore.setItemAsync('pbkdf2_salt', salt);
} אינטגרציה עם ארנקי חומרה
לאבטחה מקסימלית, אנו מחברים ארנקי חומרה (Ledger, Trezor) דרך HID/WebUSB. המפתח הפרטי לעולם לא עוזב את המכשיר.
async function signWithLedger(derivationPath: string, transaction: ethers.TransactionRequest): Promise<string> {
const transport = await TransportWebUSB.create();
const eth = new Eth(transport);
const { address } = await eth.getAddress(derivationPath);
const unsignedTx = ethers.Transaction.from(transaction);
const serialized = ethers.getBytes(unsignedTx.unsignedSerialized);
const signature = await eth.signTransaction(derivationPath, Buffer.from(serialized).toString('hex'), null);
const signedTx = ethers.Transaction.from({
...transaction,
signature: {
r: '0x' + signature.r,
s: '0x' + signature.s,
v: parseInt(signature.v, 16)
}
});
return signedTx.serialized;
} למה תמיכה בריבוי שרשרות קריטית לארנק מודרני?
ארנק מודרני חייב לתמוך במספר רשתות. עבור שרשרות EVM (Ethereum, Polygon, Arbitrum, BSC, Avalanche) אנו משתמשים במפתח יחיד וב-RPC שונים. שרשרות שאינן EVM (Solana, Bitcoin, Cosmos) דורשות אלגוריתמים קריפטוגרפיים שונים. אנו מיישמים ממשק אחיד לכל השרשרות.
אנו משתמשים ב-Multicall3 כדי לשלוף יתרות טוקנים בקריאת RPC אחת עבור N טוקנים במקום N קריאות, ומאיצים את הצגת תיק ההשקעות עד פי 5.
סימולציית עסקאות – הגנה מטעויות
לפני שליחת עסקה, אנו מראים למשתמש מה יקרה: שינויים ביתרה, revert אפשרי, או ניקוז נכסים בלתי צפוי. אנו משתמשים ב-Alchemy Simulate Asset Changes או Tenderly Simulation API. אם הסימולציה מזהה בעיה, אנו מזהירים לפני שליחה בפועל. זה מונע שליחה לכתובת שגויה או קריאה לחוזה מסוכן.
async function simulateTransaction(tx: ethers.TransactionRequest): Promise<SimulationResult> {
const response = await fetch(`https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: 1,
jsonrpc: '2.0',
method: 'alchemy_simulateAssetChanges',
params: [{
from: tx.from,
to: tx.to,
data: tx.data,
value: tx.value ? `0x${BigInt(tx.value).toString(16)}` : '0x0'
}],
}),
});
const result = await response.json();
return {
willSucceed: !result.result.error,
balanceChanges: result.result.changes,
gasEstimate: result.result.gasUsed
};
} WalletConnect v2: חיבור ל-dApps
אנו משלבים WalletConnect v2 כדי לאפשר למשתמשים לחבר את הארנק שלהם ליישומים מבוזרים. אנו מטפלים בבקשות סשן: מציגים חלון מודאלי עם פרטי ה-dApp, ולאחר אישור, חותמים על עסקאות.
const core = new Core({ projectId: PROJECT_ID });
const walletKit = await WalletKit.init({ core, metadata: { name: 'My Wallet', ... } });
walletKit.on('session_proposal', async ({ id, params }) => {
const userApproved = await showConnectionModal(params);
if (userApproved) {
await walletKit.approveSession({ id, namespaces: { /* ... */ } });
}
}); השוואה בין ארנקים לא-נאמנותיים לנאמנותיים
| מאפיין | לא-נאמנותי | נאמנותי |
|---|---|---|
| שליטה במפתחות | משתמש | ספק |
| סיכון לפריצה | נמוך (מפתח במכשיר) | גבוה (אחסון מרכזי) |
| שחזור גישה | דרך ביטוי גיבוי | דרך תמיכה |
| אחריות משפטית | מינימלית | גבוהה (רגולציה) |
רוצים לתת למשתמשים שלכם שליטה מלאה על הנכסים שלהם? הזמינו פיתוח ארנק לא-נאמנותי.
רשימת בדיקות אבטחה
| פריט | תיאור |
|---|---|
| אחסון ביטוי גיבוי | PBKDF2 + AES-256-GCM, מאוחסן ב-Secure Enclave/Keystore |
| אבטחת זיכרון | מפתח פרטי רק בזיכרון בזמן פתיחה |
| צילום מסך | צילום מסך חסום בעת הצגת ביטוי גיבוי |
| לוח גזירה | נמחק 60 שניות לאחר העתקה |
| סימולציית עסקאות | אזהרה על revert או ניקוז |
| הגנה מפני פישינג | אימות כתובת URL של dApp, אזהרה על חוזים לא ידועים |
| ביומטריה | פתיחה ביומטרית אופציונלית |
| תעבורה | רק HTTPS/WSS, הצמדת תעודות לנייד |
| ביקורת תלויות | npm audit / Snyk על כל התלויות |
מה כלול בפיתוח ארנק
אנו מספקים: תיעוד ארכיטקטוני, קוד מקור (חוזים חכמים, frontend, backend), אינטגרציית API (WalletConnect, RPC), עיצוב UI/UX, בדיקות יחידה ואינטגרציה, ביקורת אבטחה, הוראות שימוש, ו-30 ימי תמיכה לאחר השקה.
מחסנית טכנית
נייד (React Native): React Native + expo-secure-store + ethers.js v6 + viem + WalletConnect SDK + Reown AppKit.
תוסף דפדפן: React + WebExtension API + chrome.storage.
מבוסס-אינטרנט (PWA): Next.js + wagmi + viem + WalletConnect.
תהליך עבודה
- החלטת ארכיטקטורה (שבוע 1): סוג ארנק, שרשרות, פלטפורמה.
- פיתוח ליבה (3-4 שבועות): ניהול מפתחות, חתימה, ריבוי שרשרות.
- ממשק משתמש (2-3 שבועות): התחברות, תיק השקעות, שליחה/קבלה, דפדפן dApp.
- סקירת אבטחה (1-2 שבועות): בדיקות חדירה לפונקציות קריטיות.
- בדיקות והשקה (1-2 שבועות): בדיקות בטא, בדיקות mainnet.
- מחזור מלא לארנק נייד: 3-4 חודשים. העלות מחושבת בנפרד לפי סט הפיצ'רים והפלטפורמות.
קבלו ייעוץ על ארכיטקטורת ארנק. הניסיון שלנו משתרע על פני למעלה מ-10 שנים בפיתוח בלוקצ'יין; אנו מבטיחים אבטחה והקפדה על שיטות עבודה מומלצות.







