פתרונות ארנק מותאמים לפלטפורמות ניידות
משתמש מאבד את ביטוי הגיבוי שלו — 12 מילים שרוטות על פיסת נייר. חשבון של 200,000 דולר קפוא לנצח. ארנק לא-משמורת צריך לשלול תרחישים כאלה מבחינה ארכיטקטונית: המפתח הפרטי מוצפן ומאוחסן רק במכשיר, השחזור אפשרי רק באמצעות הביטוי המנמוני. ב-True Tech, אנו מפתחים ארנקי קריפטו לא-משמורת כבר שנים, ומספקים למעלה מ-15 פרויקטים ל-iOS ולאנדרואיד. הניסיון שלנו מראה שהמפתח הוא יישום נכון של תקני BIP ואחסון מאובטח של ביטוי הגיבוי. פיתוח ארנק קריפטו נייד לא-משמורת דורש תשומת לב קפדנית לפרטים אלה. אנו מספקים שירותי פיתוח ארנק נייד, כולל יצירת ארנק קריפטו BIP39, פיתוח ארנק קריפטו ל-iOS ולאינדרואיד, אינטגרציה עם WalletConnect, ואחסון מאובטח של ביטוי הגיבוי. הארנק הרב-רשתי שלנו תומך בארנק Ethereum וברשתות אחרות. אימות ביומטרי בארנק מבטיח אבטחה. אנו משתמשים בפיתוח ארנק Swift ל-iOS ובפיתוח ארנק Kotlin לאנדרואיד. ארנק לא-משמורת בסיסי מתחיל ב-25,000 דולר, והוספת בלוקצ'יין עולה 5,000–10,000 דולר לכל אחד, חוסך 40% לעומת בנייה מאפס.
יסודות ארנקים לא-משמורת
מדוע ארנק לא-משמורת הוא הבחירה המאובטחת היחידה
הבעיה הנפוצה ביותר היא אובדן ביטוי הגיבוי. משתמשים לא מגבים, מאבדים את פיסת הנייר, או מאחסנים אותה בענן ללא הצפנה. הבעיה השנייה היא חוסר תאימות: נגזרת לא-סטנדרטית מונעת שחזור כתובות בארנקים אחרים. השלישית היא דליפת מפתח פרטי כאשר הוא מאוחסן בטקסט פשוט. בנוסף, חישוב גז שגוי (EIP-1559) מגדיל עמלות פי 2–5, והיעדר WalletConnect מבודד את הארנק ממערכת האקולוגית של DeFi. כל הבעיות הללו נפתרות מבחינה ארכיטקטונית.
מדוע BIP39/32/44 הוא יסוד חובה
אנו מתחילים עם הביטוי המנמוני. BIP39 מגדיר רשימה של 2048 מילים ואלגוריתם ליצירת זרע של 512 סיביות מ-12 או 24 מילים בתוספת סיסמה אופציונלית באמצעות PBKDF2-HMAC-SHA512 (2048 איטרציות). זרע → מפתח ראשי באמצעות BIP32 HMAC-SHA512. נגזרת היררכית של מפתחות באמצעות נתיב BIP44: m/44'/60'/0'/0/0 — כתובת Ethereum ראשונה, m/44'/0'/0'/0/0 — כתובת Bitcoin ראשונה. מדוע זה קריטי: המשתמש חייב להיות מסוגל לשחזר את כל כתובותיו בכל ארנק תואם אחר (MetaMask, Trust Wallet, Ledger) באמצעות אותו ביטוי מנמוני. סטייה מהתקן שוללת מהמשתמש יכולת זו.
יצירת ביטוי מנמוני באנדרואיד:
// BitcoinJ или Web3j для BIP39
val entropy = ByteArray(16) // 128 бит → 12 слов
SecureRandom().nextBytes(entropy)
val mnemonic = MnemonicCode.INSTANCE.toMnemonic(entropy) // ["word1", "word2", ..., "word12"]
// seed из мнемоники
val seed = MnemonicCode.toSeed(mnemonic, "") // без passphrase
val masterKey = HDKeyDerivation.createMasterPrivateKey(seed)סכום הבידוק של הביטוי המנמוני (המילה האחרונה או חלק ממנה) הוא אימות חובה בעת ייבוא. משתמשים עושים שגיאות הקלדה באופן קבוע.
iOS, Swift:
// WalletCore от Trust Wallet — отличная библиотека для iOS/Android
let wallet = HDWallet(strength: 128, passphrase: "")
let mnemonic = wallet.mnemonic // 12 слов
let ethAddress = wallet.getAddressForCoin(coin: .ethereum)Trust Wallet Core (WalletCore) הוא קוד פתוח, תומך ביותר מ-60 בלוקצ'יינים, ומיישם את כל תקני BIP. הוא משמש ב-Trust Wallet, Argent, ובעשרות ארנקים אחרים. עבור ארנק לא-משמורת חדש, זו הבחירה הסטנדרטית לליבה. WalletCore מהיר פי 2 מבנייה מאפס. WalletCore מאיץ את הפיתוח פי 2 בהשוואה לבנייה מאפס.
כיצד להבטיח אחסון מאובטח של מפתחות
המפתח לעולם לא צריך להיות מאוחסן בטקסט פשוט — לא בקובץ, ב-SharedPreferences, או במסד נתונים. התוכנית:
- המשתמש יוצר קוד PIN או מגדיר ביומטריה
- נוצר מפתח הצפנה אקראי (AES-256), מוגן על ידי Android Keystore / iOS Secure Enclave המקושר לביומטריה
- הזרע מוצפן עם מפתח זה
- ה-blob המוצפן מאוחסן במסד נתונים מוצפן (SQLCipher) או ב-EncryptedSharedPreferences
במהלך אימות ביומטרי:
val cryptoObject = BiometricPrompt.CryptoObject(cipher) // cipher привязан к ключу в Keystore
biometricPrompt.authenticate(promptInfo, cryptoObject) // в onAuthenticationSucceeded:
val decryptedSeed = result.cryptoObject?.cipher?.doFinal(encryptedSeed)המפתח הפרטי בצורה מפוענחת חי בזיכרון רק למשך חתימת עסקה. לאחר מכן, אנו מאפסים את מערך הבתים — GC אינו מבטיח שחרור, ולכן נעשה שימוש מפורש ב-// BitcoinJ или Web3j для BIP39 val entropy = ByteArray(16) // 128 бит → 12 слов SecureRandom().nextBytes(entropy) val mnemonic = MnemonicCode.INSTANCE.toMnemonic(entropy) // ["word1", "word2", ..., "word12"] // seed из мнемоники val seed = MnemonicCode.toSeed(mnemonic, "") // без passphrase val masterKey = HDKeyDerivation.createMasterPrivateKey(seed) . ההצפנה שלנו משתמשת ב-AES-256 (מפתח של 256 סיביות) שהוא חזק פי 3.4×10^38 מ-128 סיביות.
כיצד לשלב עם בלוקצ'יינים ו-DeFi
עבור רשתות תואמות Ethereum (ETH, BSC, Polygon, Arbitrum, Optimism) — Web3j (אנדרואיד) או web3.swift (iOS). עבור Bitcoin — BitcoinJ. עבור Solana — Solana Mobile Stack SDK. עבור TON — ton-kotlin או TonConnect. חיבור לרשת באמצעות ספק RPC: Infura, Alchemy, QuickNode. לפרטיות — צומת משלך (אך יקר לתחזוקה) או שימוש במספר ספקים עם גיבוי.
שליחת עסקת ETH:
val credentials = Credentials.create(privateKeyHex)
val nonce = web3j.ethGetTransactionCount(
credentials.address,
DefaultBlockParameterName.PENDING
).send().transactionCount
val rawTransaction = RawTransaction.createEtherTransaction(
nonce,
gasPrice,
gasLimit,
toAddress,
amountInWei
)
val signedTransaction = TransactionEncoder.signMessage(rawTransaction, chainId, credentials)
val txHash = web3j.ethSendRawTransaction(
Numeric.toHexString(signedTransaction)
).send().transactionHashהמפתח הפרטי משמש רק עבור // WalletCore от Trust Wallet — отличная библиотека для iOS/Android let wallet = HDWallet(strength: 128, passphrase: "") let mnemonic = wallet.mnemonic // 12 слов let ethAddress = wallet.getAddressForCoin(coin: .ethereum) — החתימה מתרחשת מקומית; רק העסקה החתומה (ללא המפתח) נשלחת לרשת.
EIP-1559 וחישוב גז
עם ה-hard fork של לונדון (EIP-1559), לעסקאות יש val cryptoObject = BiometricPrompt.CryptoObject(cipher) // cipher привязан к ключу в Keystore biometricPrompt.authenticate(promptInfo, cryptoObject) // в onAuthenticationSucceeded: val decryptedSeed = result.cryptoObject?.cipher?.doFinal(encryptedSeed) ו-Arrays.fill(keyBytes, 0.toByte()) במקום val credentials = Credentials.create(privateKeyHex) val nonce = web3j.ethGetTransactionCount( credentials.address, DefaultBlockParameterName.PENDING ).send().transactionCount val rawTransaction = RawTransaction.createEtherTransaction( nonce, gasPrice, gasLimit, toAddress, amountInWei ) val signedTransaction = TransactionEncoder.signMessage(rawTransaction, chainId, credentials) val txHash = web3j.ethSendRawTransaction( Numeric.toHexString(signedTransaction) ).send().transactionHash פשוט. חישוב נכון: השתמש בשיטת RPC TransactionEncoder.signMessage כדי לנתח בלוקים אחרונים, אלגוריתם לבחירת maxFeePerGas (טיפ) בהתבסס על אחוזונים. MetaMask משתמש באחוזון ה-50 של עמלות עדיפות מ-5 הבלוקים האחרונים כהצעה בסיסית. הצג למשתמש שלוש אפשרויות (איטי/רגיל/מהיר) עם זמן אישור משוער — חוויית משתמש סטנדרטית. חישוב שגוי מגדיל את עלות העסקה בעד 30%.
WalletConnect עבור dApps
ללא WalletConnect, הארנק מבודד מהמערכת האקולוגית של DeFi. WalletConnect v2 (Sign API) הוא פרוטוקול לחיבור ארנק עם dApp באמצעות שרת ממסר. יישום: WalletConnect Swift SDK (iOS), WalletConnect Kotlin SDK (אנדרואיד). מושב נוצר באמצעות קוד QR או deep link:
- ה-dApp יוצר URI:
maxPriorityFeePerGas - המשתמש סורק את ה-QR עם הארנק
- מושב מוצפן E2E נוצר באמצעות הממסר
- ה-dApp מבקש
gasPrice→ המשתמש רואה פרטים → חותם
תהליך גיבוי ביטוי הגיבוי
חוויית המשתמש לגיבוי ביטוי הגיבוי היא קריטית. משתמשים מאבדים כסף עקב אובדן ביטוי הגיבוי. התהליך הנכון:
- הצג את הביטוי המנמוני — בקש אישור שהוא נרשם
- אימות: הצג 3 מילים אקראיות מהביטוי, בקש להזין את מספרי הסדר שלהן
- הזכר על גיבוי במהלך ההתחברות ומדי פעם
השבת צילומי מסך במסך הביטוי באמצעות
eth_feeHistory/ iOSmaxPriorityFeePerGas.
רב-רשתיות וטוקנים
טוקני ERC-20 אינם דורשים מפתחות נפרדים — אותה כתובת Ethereum. יתרה באמצעות קריאת חוזה wc:...@2?relay-protocol=irn&symKey=.... רשימת טוקנים — באמצעות API של CoinGecko או מאגר Trust Wallet Assets (רשימה פתוחה עם אייקונים ל-10,000+ טוקנים). NFTs (ERC-721, ERC-1155) — eth_sendTransaction / FLAG_SECURE. מטא-דאטה באמצעות UIScreen.capturedDidChangeNotification → IPFS או HTTP.
השוואת שיטות אחסון מפתחות
| שיטה | אבטחה | מהירות | תאימות |
|---|---|---|---|
| Android Keystore + AES-256 | גבוהה (TEE) | מהירה | אנדרואיד בלבד |
| iOS Secure Enclave + AES-256 | גבוהה (SEP) | מהירה | iOS בלבד |
| ספריית Keychain (iOS) | בינונית (תלויה ב-jailbreak) | מהירה | iOS בלבד |
| EncryptedSharedPreferences + Keystore | גבוהה | מהירה | אנדרואיד |
לוח זמנים ועלות פיתוח
| תכונה | משך | עלות |
|---|---|---|
| ארנק בסיסי (ETH + ERC-20 + WC + ביטוי גיבוי) | 2–4 חודשים | 25,000 דולר |
| בלוקצ'יין נוסף | 2–4 שבועות | 5,000–10,000 דולר |
| ארנק מלא (5+ רשתות) | 4–6 חודשים | 50,000+ דולר |
מה כלול בעבודה
- אנליטיקה ועיצוב: דרישות פונקציונליות, בחירת בלוקצ'יין, ארכיטקטורה
- יישום: יצירת מפתחות, אחסון מאובטח, לוגיקת חתימה
- אינטגרציה: RPC, WalletConnect v2, רמפות פיאט אופציונליות
- בדיקות: בדיקות חדירה, סימולציות אובדן ביטוי גיבוי, בדיקות תאימות
- השקה: פרסום ב-App Store וב-Google Play, הגדרת CI/CD
- תוצרים: קוד מקור מלא ל-iOS ו/או אנדרואיד, תיעוד ארכיטקטורה ואבטחה, גישה למאגר ולצינורות CI
- תמיכה: יומיים של הדרכה לצוות שלך, 3 חודשים של תמיכת אחריות
תהליך פיתוח ולוחות זמנים
ארנק לא-משמורת בסיסי (Ethereum + ERC-20 + WalletConnect + גיבוי ביטוי) לוקח 2–4 חודשים. הוספת כל בלוקצ'יין חדש עם אינטגרציה מלאה לוקחת 2–4 שבועות. העלות מחושבת באופן אישי. פיתוח ארנק בסיסי מתחיל ב-25,000 דולר. ארנקים לא-משמורת מאובטחים פי 10 מארנקי משמורת מכיוון שמשתמשים שולטים במפתחות.
ארנק לא-משמורת ברוב תחומי השיפוט אינו דורש רישיון — המשתמש מנהל את המפתחות שלו. אבל אם אתה מוסיף החלפת מטבעות (swap), רמפת פיאט — המצב משתנה. התייעצות עם עורך דין רגולטורי היא חובה לפני השקת תכונות כאלה. אנו מבטיחים שהמוצר שלך יעמוד בשיטות האבטחה הטובות ביותר ובדרישות הנחיות הביקורת של App Store.
פרטים על BIP44
BIP44 מגדיר היררכיית מפתחות עבור מטבעות קריפטוגרפיים וחשבונות שונים. הנתיב `m/44'/coin'/account'/change/address`. `coin'` עבור Ethereum הוא 60', עבור Bitcoin הוא 0'. `account'` הוא החשבון של המשתמש, `change` — כתובות חיצוניות/פנימיות. זה מבטיח יצירה דטרמיניסטית סטנדרטית של כל הכתובות.קבל ייעוץ על הפרויקט שלך — צור קשר. הזמן פיתוח ארנק עם אבטחה מובטחת.







