איך זה עובדAperture

מתחת למכסה המנוע

קוד אמיתי.
בטיחות אמיתית.

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

1 / 5

128 סיביות של אקראיות אמיתית

המערכת CSPRNG מייצרת אנטרופיה גולמית במכשיר שלך - המקור היחיד של כל הארנק שלך.

// 128 סיביות של אנטרופיה ממערכת CSPRNG
var entropy = נתונים (ספירה: 16)
SecRandomCopyBytes(kSecRandomDefault, 16, &entropy)
// checksum = סיביות ראשונות של SHA-256(אנטרופיה)
let checksum = SHA256.hash(data: entropy).prefix(1)
let bits = אנטרופיה + checksum
// מפה כל קבוצת 11 סיביות לרשימת המילים BIP-39
let mnemonic = bits.chunks(מתוך: 11)
.map { wordlist[$0] } // 12 מילים
// מתיחה ל-Seed של 512 סיביות (PBKDF2-HMAC-SHA512)
let seed = PBKDF2.sha512(mnemonic.joined(" "),
מלח: "מנמוניק", סיבובים: 2048)
// חותם בSecure Enclave — הוא אף פעם לא עוזב
try Keychain.store(seed, access:.thisDeviceOnly,
ביומטריה:.faceID)
1 / 4

אתה מקליד את הביטוי שלך

הוא מוזן באופן מקומי ולא מועבר לשום מקום.

// קרא את הביטוי שאתה מקליד - מעולם לא הועבר
let words = phrase.lowercased().split(" ")
// כל מילה חייבת להתקיים ברשימת BIP-39
guard words.allSatisfy(wordlist.contains)
else { throw WalletError.unknownWord }
// חשב מחדש ואמת את סכום הבדיקה
let (אנטרופיה, סכום) = words.toEntropy()
guard SHA256.hash(data: entropy).verifies(sum)
else { throw WalletError.badChecksum }
// אותה גזירה כמו הדור - במצב לא מקוון לחלוטין
let seed = PBKDF2.sha512(words.joined(" "),
מלח: "מנמוניק", סיבובים: 2048)
try Keychain.store(seed, access:.thisDeviceOnly)
1 / 3

המטבעות שלך נבחרים

התשומות מגיעות מהפלטים שלא הוצאו - אף צד שלישי לא מעורב.

// בחר מטבעות מהפלטים שלך שלא ניצלו
let input = wallet.selectUTXOs(amount + עמלה)
// בנה את העסקה כולה במכשיר
let tx = TxBuilder(.bitcoin)
‎.add(כניסות)
.send(amount, to: recipient)
.change(to: wallet.changeAddress).build()
// אתה בודק כל פרט לפני שמשהו זז
present(confirm: tx.summary)
// סכום · עמלה · נמען — שום דבר עדיין לא נשלח
1 / 4

מפתח החתימה נגזר

מפתח צאצא לכל קלט נגזר דרך נתיב BIP-32.

// גזר את מפתח הצאצא עבור קלט זה (BIP-32)
let key = masterKey.derive("m/84'/0'/0'/0/\(i)")
// גיבוב את התמונה המוקדמת של העסקה (SHA-256 כפול)
let h = SHA256(SHA256(tx.preimage(i))))
// סימן בתוך הSecure Enclave (צריך מזהה פנים)
let sig = try SecureEnclave.sign(h, key: key,
עקומה:.secp256k1)
// רק בתים חתומים עוזבים את המכשיר
tx.attach(sig, input: i)
network.broadcast(tx.serialized)

פשוט מ-Swift בקוד פתוח שלAperture - האלגוריתמים האמיתיים במכשיר שלך.

קרא את המקור המלא

שימו לב למה שחסר: אין שרת, אין חשבון, אף מפתח לא חוצה את הרשת. המפתח הפרטי נוצר, מאוחסן ונעשה בו שימוש כולו בתוך הSecure Enclave של המכשיר שלך.