Ako to funguje —Aperture

Pod kapotou

Skutočný kód.
Skutočná bezpečnosť.

To je presne to, čo sa deje na vašom zariadení, keď si vytvoríte peňaženku, obnovíte ju a presuniete finančné prostriedky – vysledované, krok za krokom, cez open source kód, ktorý beží na vašom iPhone.

1 / 5

128 bitov skutočnej náhodnosti

Systém CSPRNG produkuje surovú entropiu na vašom zariadení – jediný zdroj celej vašej peňaženky.

// 128 bitov entropie zo systému CSPRNG
var entropia = Údaje (počet: 16)
SecRandomCopyBytes(kSecRandomDefault, 16, &entropia)
// kontrolný súčet = prvé bity SHA-256(entropia)
nech kontrolný súčet = SHA256.hash(údaje: entropia).prefix(1)
nech bity = entropia + kontrolný súčet
// mapuje každú 11-bitovú skupinu do zoznamu slov BIP-39
nech mnemotechnická pomôcka = bits.chunks(of: 11)
.map { wordlist[$0] } // 12 slov
// roztiahnutie na 512-bitový základ (PBKDF2-HMAC-SHA512)
nech semeno = PBKDF2.sha512(mnemonic.joined(" "),
soľ: "mnemotechnická pomôcka", kolá: 2048)
// tesnenie vSecure Enclave — nikdy neopustí
skúste Keychain.store(seed, access:.thisDeviceOnly,
biometria:.faceID)
1 / 4

Napíšte svoju frázu

Zadáva sa lokálne a nikdy sa nikam neprenáša.

// prečítaj si frázu, ktorú napíšeš — nikdy sa neprenáša
nech slová = fráza.malé písmená().split(" ")
// každé slovo musí existovať v zozname BIP-39
ochranné slová.allSatisfy(zoznam slov.obsahuje)
else { throw WalletError.unknownWord }
// prepočítajte a overte kontrolný súčet
nech (entropia, súčet) = words.toEntropy()
strážca SHA256.hash(údaje: entropia).overuje(súčet)
else { throw WalletError.badChecksum }
// rovnaké odvodenie ako pri generovaní — plne offline
nech semeno = PBKDF2.sha512(words.joined(" "),
soľ: "mnemotechnická pomôcka", kolá: 2048)
skúste Keychain.store(seed, access:.thisDeviceOnly)
1 / 3

Vaše vlastné mince sú vybrané

Vstupy pochádzajú z vašich nevyčerpaných výstupov – nie je zapojená žiadna tretia strana.

// vyberajte mince z vlastných nevyčerpaných výstupov
nech inputs = wallet.select UTXOs(suma + poplatok)
// zostavenie transakcie úplne na zariadení
nech tx = TxBuilder(.bitcoin)
.add(vstupy)
.poslať(suma, komu: príjemca)
.change(to: wallet.changeAddress).build()
// skontrolujete každý detail predtým, ako sa niečo pohne
prítomný(potvrdiť: tx.summary)
// suma · poplatok · príjemca — zatiaľ sa nič neodoslalo
1 / 4

Podpisový kľúč je odvodený

Podradený kľúč pre každý vstup je odvodený cez cestu BIP-32.

// odvodiť podradený kľúč pre tento vstup (BIP-32)
nech kľúč = masterKey.derive("m/84'/0'/0'/0/\(i)")
// hašujte predobraz transakcie (dvojité SHA-256)
nech h = SHA256(SHA256(tx.preimage(i)))
// prihlásenie doSecure Enclave (vyžaduje Face ID)
nech sig = skúste SecureEnclave.sign(h, kľúč: kľúč,
krivka:.secp256k1)
// zariadenie opúšťajú iba podpísané bajty
tx.attach(sig, vstup: i)
network.broadcast(tx.serialized)

Zjednodušené pomocou open-source Swift odAperture – skutočných algoritmov na vašom zariadení.

Prečítajte si celý zdroj

Všimnite si, čo chýba: žiadny server, žiadny účet, žiadny kľúč, ktorý nikdy neprekračuje sieť. Súkromný kľúč sa vytvára, ukladá a používa výhradne vo vnútriSecure Enclave vášho zariadenia.