Како то функционише — ЗКСАПЕРТУРЕБРАНДЗКС

Испод хаубе

Прави код.
Права сигурност.

Управо то се дешава на вашем уређају када креирате новчаник, вратите га и преместите средства — праћено, корак по корак, преко отвореног кода који ради на вашем иПхоне-у.

1 / 5

128 бита праве насумице

Систем ЦСПРНГ производи сирову ентропију на вашем уређају — једини извор вашег целог новчаника.

// 128 бита ентропије из система ЦСПРНГ
вар ентропија = Подаци (број: 16)
СецРандомЦопиБитес(кСецРандомДефаулт, 16, &ентропија)
// контролна сума = први битови СХА-256 (ентропија)
нека контролна сума = СХА256.хаш(подаци: ентропија).префикс(1)
нека битови = ентропија + контролни збир
// мапирати сваку 11-битну групу у БИП-39 листу речи
нека мнемоника = битс.цхункс(од: 11)
.мап { вордлист[$0] } // 12 речи
// растегнути на 512-битно семе (ПБКДФ2-ХМАЦ-СХА512)
нека сеед = ПБКДФ2.сха512(мнемониц.јоинед(" "),
сол: "мнемоника", рунди: 2048)
// печат у ЗКССЕЦУРЕЕНЦЛАВЕЗКС — никада не одлази
покушајте Кеицхаин.сторе(сеед, аццесс:.тхисДевицеОнли,
биометрија:.фацеИД)
1 / 4

Укуцате своју фразу

Уноси се локално и никада се нигде не преноси.

// прочитајте фразу коју унесете — никада се не преноси
нека речи = фраза.мала слова().сплит(" ")
// свака реч мора постојати у БИП-39 листи
чувај речи.аллСатисфи(вордлист.цонтаинс)
елсе { тхров ВаллетЕррор.ункновнВорд}
// поново израчунати и проверити контролни збир
лет (ентропија, збир) = вордс.тоЕнтропи()
чувај СХА256.хаш(подаци: ентропија).верификује(збир)
елсе { тхров ВаллетЕррор.бадЦхецксум }
// иста деривација као генерација — потпуно ван мреже
нека сеед = ПБКДФ2.сха512(вордс.јоинед(" "),
сол: "мнемоника", рунди: 2048)
пробајте Кеицхаин.сторе(сеед, приступ:.тхисДевицеОнли)
1 / 3

Ваши сопствени новчићи су одабрани

Уноси потичу из ваших непотрошених излаза — није укључена трећа страна.

// бирамо новчиће из сопствених непотрошених излаза
пусти уносе = новчаник.селецтУТКСОс(износ + накнада)
// изградити трансакцију у потпуности на уређају
нека тк = ТкБуилдер(.битцоин)
.адд(уноси)
.сенд(износ, примаоцу)
.цханге(то: валлет.цхангеАддресс).буилд()
// прегледаш сваки детаљ пре него што се било шта помери
присутан (потврди: тк.суммари)
// износ · накнада · прималац — још ништа није послато
1 / 4

Кључ за потписивање је изведен

Подређени кључ по улазу се изводи путем БИП-32 путање.

// изведемо подређени кључ за овај улаз (БИП-32)
нека кључ = мастерКеи.дериве("м/84'/0'/0'/0/\(и)")
// хеширати предслику трансакције (двоструки СХА-256)
нека х = СХА256(СХА256(тк.преимаге(и)))
// потпиши унутар ЗКССЕЦУРЕЕНЦЛАВЕЗКС (потребан је Фаце ИД)
нека сиг = покушај СецуреЕнцлаве.сигн(х, кључ: кључ,
крива:.сецп256к1)
// само потписани бајтови напуштају уређај
тк.аттацх(сиг, инпут: и)
нетворк.броадцаст(тк.сериализед)

Поједностављено од ЗКСАПЕРТУРЕБРАНДЗКС-овог отвореног кода Свифт — правих алгоритама, на вашем уређају.

Прочитајте цео извор

Приметите шта недостаје: нема сервера, нема налога, ниједан кључ који никада не прелази мрежу. Приватни кључ се креира, чува и користи у потпуности унутар ЗКССЕЦУРЕЕНЦЛАВЕЗКС вашег уређаја.