So funktioniert es –Aperture

Unter der Haube

Echter Code.
Echte Sicherheit.

Genau das passiert auf Ihrem Gerät, wenn Sie eine Wallet erstellen, wiederherstellen und Geld bewegen – Schritt für Schritt verfolgt, durch den Open-Source-Code, der auf Ihrem iPhone läuft.

1 / 5

128 Bit echte Zufälligkeit

Das System CSPRNG erzeugt Rohentropie auf Ihrem Gerät – der einzigen Quelle Ihres gesamten Geldbeutels.

// 128 Bit Entropie aus dem System CSPRNG
var entropy = Daten (Anzahl: 16)
SecRandomCopyBytes(kSecRandomDefault, 16, &entropy)
// Prüfsumme = erste Bits von SHA-256 (Entropie)
let checksum = SHA256.hash(data: entropy).prefix(1)
seien Bits = Entropie + Prüfsumme
// Jede 11-Bit-Gruppe der BIP-39-Wortliste zuordnen
let mnemonic = bits.chunks(of: 11)
.map { wordlist[$0] } // 12 Wörter
// Auf einen 512-Bit-Seed dehnen (PBKDF2-HMAC-SHA512)
let seeds = PBKDF2.sha512(mnemonic.joined(" "),
Salz: „mnemonic“, Runden: 2048)
// Versiegeln Sie denSecure Enclave – er verlässt ihn nie
Versuchen Sie es mit Keychain.store(seed, Zugriff:.thisDeviceOnly,
Biometrie:.faceID)
1 / 4

Sie geben Ihren Satz ein

Es wird lokal eingegeben und niemals irgendwohin übertragen.

// Lesen Sie den von Ihnen eingegebenen Satz – wird nie übermittelt
let Words = Phrase.lowercased().split(" ")
// Jedes Wort muss in der BIP-39-Liste vorhanden sein
Guard-Wörter.allSatisfy(wordlist.contains)
else { throw WalletError.unknownWord }
// Prüfsumme neu berechnen und überprüfen
let (entropy, sum) = Words.toEntropy()
Guard SHA256.hash(data: entropy).verified(sum)
else { throw WalletError.badChecksum }
// gleiche Ableitung wie Generation – vollständig offline
let seeds = PBKDF2.sha512(words.joined(" "),
Salz: „mnemonic“, Runden: 2048)
Versuchen Sie es mit Keychain.store(Seed, Zugriff:.thisDeviceOnly)
1 / 3

Ihre eigenen Münzen werden ausgewählt

Die Eingaben stammen aus Ihren nicht ausgegebenen Ausgaben – es ist kein Dritter beteiligt.

// M—nzen aus deinen eigenen nicht ausgegebenen Ausgaben auswählen
let inputs = wallet.selectUTXOs(amount + fee)
// Die Transaktion vollständig auf dem Gerät erstellen
let tx = TxBuilder(.bitcoin)
.add(Eingaben)
.send(Betrag, an: Empfänger)
.change(to: wallet.changeAddress).build()
// Sie überprüfen jedes Detail, bevor sich etwas bewegt
vorhanden (bestätigen: tx.summary)
// Betrag · Gebühr · Empfänger – noch nichts gesendet
1 / 4

Der Signaturschlüssel wird abgeleitet

Über den BIP-32-Pfad wird ein untergeordneter Schlüssel pro Eingabe abgeleitet.

// Den untergeordneten Schlüssel für diese Eingabe ableiten (BIP-32)
let key = masterKey.derive("m/84'/0'/0'/0/\(i)")
// Hash des Transaktions-Preimages (doppelter SHA-256)
sei h = SHA256(SHA256(tx.preimage(i)))
// imSecure Enclave unterschreiben (Face ID erforderlich)
let sig = try SecureEnclave.sign(h, key: key,
Kurve:.secp256k1)
// nur signierte Bytes verlassen das Gerät
tx.attach(sig, Eingabe: i)
network.broadcast(tx.serialized)

Vereinfacht durchApertures Open-Source-Swift – die echten Algorithmen auf Ihrem Gerät.

Lesen Sie die vollständige Quelle

Beachten Sie, was fehlt: kein Server, kein Konto, kein Schlüssel, der jemals das Netzwerk passiert. Der private Schlüssel wird vollständig imSecure Enclave Ihres Geräts erstellt, gespeichert und verwendet.