Що таке Гаманець?

ПочатківецьOct 01, 2024
У цьому пості ми розглянемо, що таке гаманець, як створюються гаманці та як вони використовують еліптичну криву криптографію для генерації та захисту приватно-публічних ключів, отримання фраз-сіда та забезпечення безпечних взаємодій з блокчейном.
Що таке Гаманець?

Гаманці - це важливі інструменти, які дозволяють користувачам управляти своїми обліковими записами у блокчейні, безпечно зберігати свої активи та підписувати транзакції для внесення змін до стану блокчейну.

У цьому пості ми розглянемо, що таке гаманець, як створюються гаманці, і як вони використовують еліптичну криву криптографію для генерації та захисту приватно-публічних ключевих пар, похідні мнемонічні фрази та полегшують безпечну взаємодію з блокчейном.

Що таке Гаманець?

Гаманець - це програма, яка дозволяє переглядати та взаємодіяти з вашими обліковими записами блокчейну; ці облікові записи дозволяють вам надсилати транзакції для виконання дій, таких як відправлення токенів або взаємодія з смарт-контрактами.

Кожний обліковий запис на блокчейні складається з криптографічної пари ключів; набору з 2 ключів, які пов'язані між собою. У контексті блокчейнів цей вид облікового запису зазвичай називається Зовнішнім Власним Обліковим Записом (EOA) і складається з публічного ключа і приватного ключа:

  • Публічний ключ: Адреса вашого гаманця. Його можна поділитися з ким завгодно, і інші люди (або розумні контракти) можуть використовувати його, щоб відправити вам криптовалюту.
  • Приватний ключ: «Ключ підпису», який ви використовуєте для підпису повідомлень або транзакцій. Будь-хто, хто має доступ до приватного ключа, має повний контроль над коштами на гаманці.

Ця пара ключів має потужну функцію, яка називається функцією підвіконня. Це означає, що:

  • Легко знайти відкритий ключ, якщо у вас є приватний ключ (A→B).
  • Неможливо визначити приватний ключ, якщо у вас є публічний ключ (B→A).

Для чого використовуються гаманці?

Гаманці використовуються для підпису повідомлень або транзакцій за допомогою приватного ключа гаманця, щоб відправити на блокчейн.

Гаманці надають можливість знати, які повідомлення або транзакції погодив гаманець; оскільки публічний ключ відправника транзакції може бути відновлений з підпису транзакції. Це надзвичайно важливо для запобігання прийняття фальшивих / зловісних транзакцій у блокчейні.

Наприклад, Джаррод міг би подати транзакцію, заявляючи, що Абріл відправила йому 5 ETH, навіть якщо вона ніколи не погодилася на цю транзакцію. Однак, оскільки блокчейн перевіряє підпис кожної транзакції, він швидко відхилить транзакцію, оскільки відновлена адреса з підпису не відповідає «відправнику» транзакції (тобто Абріл).

Блокчейни, такі як Ethereum, використовують ECDSA (еліптичний цифровий алгоритм підпису на еліптичній кривій), щоб перевірити, чи відновлений публічний ключ з підпису транзакції відповідає публічному ключу особи, яка відправила транзакцію до мережі.

Як створюються гаманці?

Для створення гаманця необхідно створити пару публічного-приватного ключа. Однак, значення цієї пари ключів повинні дотримуватися кількох правил, щоб вони працювали на блокчейні.

  1. Приватний ключ складається з 64 шістнадцяткових символів (символи 0→F).
  2. Публічний ключ виводиться з приватного ключа за допомогою криптографії еліптичної кривої (ECC).
  3. Публічний ключ розрізаний, хешований і форматований, щоб стати адресою з 42 символами.

Цей трьохетапний процес є основним потоком того, як генеруються облікові записи на блокчейні.

Далі ми розглянемо, як отримується публічний ключ за допомогою еліптичної кривої та приватного ключа. Але перед цим ми відповімо на кілька інших питань, які у вас можуть виникнути щодо гаманців, наприклад:

  • Як я можу забезпечити випадкове генерування мого приватного ключа?
  • Що робити, якщо я отримаю той самий приватний ключ, що й хтось інший?
  • Як вписуються фрази-сімки в цей процес?
  • Як генеруються кілька пар ключів з однієї фрази-сім'ї?

Що таке фраза-сід?

Хоча можливо згенерувати випадкове значення 64-шістнадцяткового значення, як ми щойно продемонстрували, зазвичай, приватні ключі генеруються за допомогою конкретних стандартів, які виникли з Bitcoin. Ці стандарти дозволяють користувачам запам'ятовувати фразу-сім'ю, яка складається з 12-24 слів, яку можна використовувати для створення будь-якої кількості нових облікових записів, пов'язаних з нею.

Це дозволяє користувачам запам'ятовувати один набір слів для доступу до всіх своїх облікових записів; кожен з окремою парою публічного-приватного ключа. Будь-яку кількість нових приватних ключів можна отримати з одного початкового фрази за допомогою конкретної функції виведення ключа (KDF).

Таким чином, спочатку давайте розберемо, як генеруються фрази зі сім'ями насіння через випадкову ентропію і як приватні ключі можна похідні від фрази зі сім'єю насіння, перш ніж нарешті повернутися до того, як публічні ключі походять від приватних ключів.

Як працюють фрази насіння

Коли ви вперше встановлюєте додаток для гаманця, зазвичай вас попросять записати і безпечно зберегти фразу для відновлення десь; зазвичай це комбінація з 12 або 24 слів. Ви можете побачити приклад списку можливих англійських слів тут, яку ви помітите, складається з 2048 слів у довжину (ми скоро повернемося до цього числа).

Що таке BIP-39?

Ця ідея зберігання мнемонічних кодів була запропонована в 2013 році з BIP (пропозиція щодо поліпшення Bitcoin); BIP-39. Ця пропозиція надає стандартизований спосіб генерації випадкової ентропії та перекладу її на послідовність легко запам'ятовуваних слів.

Як генерується фраза-насіння?

Спочатку ми повинні переконатися, що наша фраза-сід була випадково згенерована, в кінці кінців, ми не хочемо, щоб хтось інший випадково потрапив у наш гаманець і отримав доступ до наших коштів.

Для цього генерується випадкове число за допомогою CSPRNG (криптографічно стійкого псевдовипадкового генератора чисел), що можна зробити в вашому браузері:

Ця випадкове число називається ентропією. Ця ентропія використовується для створення набору слів, які утворюють фразу-сід. У нашому випадку, 128 біт відповідає 12 словам, але також можливо використовувати інші довжини, наприклад:

  • 15 слів: 160 біт
  • 18 слов: 192 біти
  • 21 слово: 224 біти
  • 24 слова: 256 біт

Отже, як ми використовуємо ці біти, щоб створити фразу-сід? Яка взаємозв'язок між бітами та словами? Спочатку для ентропії створюється контрольна сума та додається до 128 бітів; це 4-бітний хеш ентропії, створений для забезпечення її цілісності.

Таким чином, зараз у нас є 128 біт ентропії + 4 біти контрольної суми, загалом 132 біти. Далі 132 біти перетворюються на двійковий код; конкретно вони розбиваються на частини по 11 біт.

У нас зараз є набір з 12 двійкових чисел, кожне з яких має довжину 11 біт. Підказка: у нас є 12 чисел, і наш код-фраза складатиметься з 12 слів!

Згадайте, що у нашому списку 2048 слів, і 2048 було обрано, оскільки 2048 дорівнює 2^11, оскільки існує 2048 різних можливих двійкових чисел, які можна створити з 11 біт.

Тепер нам просто потрібно перетворити ці двійкові числа на слова зі списку слів. Це виконується за допомогою двійкового числа як індексу для пошуку слова в списку слів. тобто Якщо двійкове число - 10, ми використовуємо 9-е слово в списку (оскільки ми починаємо з індексу 0), наприклад:

  • 000000111, (7 у двійковій системі) є 8-м пунктом у списку, який абстрактний! 😉
  • 11111111111, (2047 у двійковій системі) — останній пункт у списку (2048-й), яким є «зоопарк».

Повторіть це 12 разів, один для кожного 11-розрядного числа, щоб сформувати фразу-насіння, що містить 12 слів.

Генеруючи випадкове значення ентропії, розбиваючи його на частини бінарного коду і використовуючи ці значення як індекси для пошуку слів у списку слів, ми отримуємо випадкову фразу-сід.

Чи може хтось вгадати мою фразу-сід?

Ваша негайна реакція на це може бути такою: "Якщо є лише 2048 можливих слів, чи не зможе хтось вгадати мою фразу-сід?" Технічно так, але це дуже... дуже малоймовірно. Як малоймовірно ви запитуєте?

Уявіть, що ми забуваємо про випадковий 128-бітний крок генерації, і просто вручну вибираємо 12 слів зі списку. Щоразу, коли ми вибираємо слово, ми вибираємо один варіант із пулу з 2048 слів.

Отже, ми можемо сказати, що для того, щоб хтось інший також вгадав цю саму послідовність слів, йому потрібно правильно вгадати те саме слово, що й ми, з ймовірністю 1/2048, 12 разів поспіль. Зараз ви, напевно, думаєте: «Добре, це звучить не так вже й складно...», чи не так??Але давайте зіграємо в це:

  • Перше слово: 2048 варіантів
  • Друге слово: 2048 варіантів
  • І так далі, до 12: 2048 варіантів

Це 2048 х 2048 х 2048 ... 12 разів. Або 2048^12. Що є... абсурдно велика кількість. Приблизно, 5 септильйонів, або 5 квадрильйонів мільярдів. Це незбагненно для нас, але давайте спробуємо...

Уявіть, що ви почали вгадувати прямо зараз, використовуючи неймовірно потужний комп'ютер, який може вгадувати 1 трлн фраз насіння за секунду. Цій машині знадобиться 159 трлн років, щоб вгадати одну фразу насіння. Або (в залежності від того, в що ви вірите), приблизно в 11 000 разів довше, ніж поточний вік Всесвіту.

Чи є початкові фрази з 24 слів кращими за 12?

Деякі гаманці вибирають 128 біт (12 слів), але сучасніші гаманці просить вас запам'ятати 24 слова для вашої початкової фрази! Це, знову ж таки, надзвичайно велике.

Як приватні ключі походять від seed фраз

Тепер у нас є початкова фраза з 12 слів, як вона використовується для створення приватних ключів для облікових записів? Для цього нам потрібно перетворити нашу seed-фразу в двійкове насіння, яке можна використовувати для генерації гаманців. Цей процес включає в себе наступні етапи:

  1. За бажанням користувач надає додатковий пароль.
  2. Алгоритм з назвою PBKDF2 (функція похідного ключа на основі пароля) приймає: Seed-фразу. Комбінацію рядка «мнемоніка» та необов'язкового пароля.

Цей процес (називається функцією похідного ключа) виводить 64-байтове хеш-значення, яке називається бінарним насінням, використовуючи інший алгоритм, який називається HMAC-SHA512, як псевдовипадкову функцію.

Виведене 64-байтове хеш-значення може бути використане для генерації рахунків за допомогою логіки, що виникла з інших стандартів Bitcoin; а саме BIP-32 і за бажанням, розширення BIP-32, BIP-44.

Що таке BIP-32?

BIP-32 вводить ієрархічні визначені (HD) гаманці; де з одного насіння може бути похідних багато гаманців, і з цих гаманців можуть бути похідні ще більше гаманців, створюючи "дерево" гаманців.

Що таке BIP-44?

BIP-44 надає стандартизований спосіб створення ієрархії для структур гаманця з одного бінарного насіння шляхом виконання конкретного шляху похідності відповідно до структури: m / purpose’ / coin_type’ / account’ / change / address_index:

  • призначення: Визначає використаний стандарт BIP; для BIP-44 це 44’.
  • coin_type: Вказує криптовалюту; наприклад, 0' для Bitcoin, 60' для Ethereum.
  • Обліковий запис: Розрізняє різні облікові записи користувачів.
  • change: Вказує тип адреси: 0 - для отримання, 1 - для зміни.
  • address_index: Надає унікальний індекс для кожної адреси в межах одного облікового запису та типу зміни.

Не всі гаманці використовують BIP-44, але це загальний спосіб стандартизації походження облікових записів від бінарного насіння.

Як створюються приватні ключі з бінарного насіння?

Як ми вже зазначали раніше, приватні ключі складаються з 64 шістнадцяткових символів, тобто 32 байти. І ми щойно згенерували 64-байтове бінарне насіння через процес PBKDF2 - отже, як ми використовуємо це 64-байтове хеш-значення для створення приватних ключів?

Спочатку хеш розбивається на дві половини, кожна по 32 байти в розмірі:

  1. Перша половина - це головний закритий ключ. Це пряме відображення 1-1 бінарного початкового числа (згенерованого за допомогою вашої початкової фрази) та вашого гаманця. Його можна використовувати в процесі створення дочірніх закритих ключів.
  2. Друга половина - це код ланцюга. Він використовується для забезпечення: якщо дитячий ключ піддається компрометації, то майстер-ключ залишається безпечним. Дитячі ключі можуть бути створені послідовно й кожен з них унікальний.

Тепер ми розуміємо, як виглядають приватні ключі, як вони випадковим чином генеруються та як з однієї секретної фрази можна отримати кілька ключів. Наступне, давайте дослідимо, як публічні ключі походять від приватних ключів.

Як працюють публічні та приватні ключі

З використанням шифрування еліптичних кривих (ECC) ми можемо знайти публічний ключ для заданого приватного ключа. Існують різні види еліптичних кривих, але той, що використовується як Bitcoin, так і Ethereum, називається secp256k1.

Специфікація для цієї еліптичної кривої включає базову точку G, яка використовується як початкова точка для створення інших точок на кривій. З цієї початкової точки ми «рухаємося по» кривій певну кількість разів (визначену нашим приватним ключем) в певний спосіб. Точка на кривій, в якій ми зупиняємо цей процес, буде нашим публічним ключем.

Спосіб, яким ми «рухаємося» по кривій, називається скалярним множенням. При роботі з еліптичними кривими скаляр означає число, яке використовується для масштабування точки на кривій. Ми беремо базову точку G і застосовуємо до неї скалярне число, щоб досягти нової точки на кривій шляхом «розтягування» цієї точки.

Скалярне число, яке ми застосовуємо до базисної точки, є нашим приватним ключем; Простіше кажучи, ми беремо нашу початкову точку G і масштабно множимо її на наш приватний ключ, щоб досягти нашого відкритого ключа.

Насправді, оскільки крива визначена над простим полем ℤp, вона виглядає більше як купа розкиданих крапок... але все ще має ті ж властивості еліптичної кривої.

Наприкінці цього процесу скалярного множення (підстрибування навколо <приватного ключа> кількість разів) ми опинимося в новій точці кривої, яка є нашим відкритим ключем. Ви можете уявити, що цей процес виглядає приблизно так:

Для чого використовуються публічні ключі на блокчейні?

Публічні ключі, як ім'я вказує, можуть бути розповсюджені публічно з будь-ким. Вони корисні для:

  • Перегляд того, хто відправив транзакцію на блокчейн
  • Отримання коштів, таких як ETH, з інших гаманців
  • Може бути використаний для перевірки, чи підписав приватний ключ повідомлення чи ні.

Завершення

Гаманці - це важлива складова блокчейнів, які використовують еліптичну криву криптографію для того, щоб дозволити користувачам відправляти транзакції та підписувати повідомлення зі своїх облікових записів.

Однак, деякі блокчейни, такі як Abstract, також підтримують нові види гаманців, що називаються рахунками розумних контрактів, які надають більше функцій і забезпечують більшу безпеку, механізми відновлення та інше.

Застереження:

  1. Ця стаття передрукована з [https://abs.xyz/blog], Перешліть оригінальний заголовок« Що таке гаманець? », Усі авторські права належать оригінальному автору [ Джаррод Уоттс ]. Якщо є заперечення щодо цього передруку, будь ласка, зв'яжіться зGate Learnкоманда, і вони швидко цим займуться.

  2. Відповідальність за відмову: погляди та думки, висловлені в цій статті, належать виключно автору і не становлять жодної інвестиційної поради.

  3. Переклади статей на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, заборонено копіювання, розповсюдження або плагіат перекладених статей.

Що таке Гаманець?

ПочатківецьOct 01, 2024
У цьому пості ми розглянемо, що таке гаманець, як створюються гаманці та як вони використовують еліптичну криву криптографію для генерації та захисту приватно-публічних ключів, отримання фраз-сіда та забезпечення безпечних взаємодій з блокчейном.
Що таке Гаманець?

Гаманці - це важливі інструменти, які дозволяють користувачам управляти своїми обліковими записами у блокчейні, безпечно зберігати свої активи та підписувати транзакції для внесення змін до стану блокчейну.

У цьому пості ми розглянемо, що таке гаманець, як створюються гаманці, і як вони використовують еліптичну криву криптографію для генерації та захисту приватно-публічних ключевих пар, похідні мнемонічні фрази та полегшують безпечну взаємодію з блокчейном.

Що таке Гаманець?

Гаманець - це програма, яка дозволяє переглядати та взаємодіяти з вашими обліковими записами блокчейну; ці облікові записи дозволяють вам надсилати транзакції для виконання дій, таких як відправлення токенів або взаємодія з смарт-контрактами.

Кожний обліковий запис на блокчейні складається з криптографічної пари ключів; набору з 2 ключів, які пов'язані між собою. У контексті блокчейнів цей вид облікового запису зазвичай називається Зовнішнім Власним Обліковим Записом (EOA) і складається з публічного ключа і приватного ключа:

  • Публічний ключ: Адреса вашого гаманця. Його можна поділитися з ким завгодно, і інші люди (або розумні контракти) можуть використовувати його, щоб відправити вам криптовалюту.
  • Приватний ключ: «Ключ підпису», який ви використовуєте для підпису повідомлень або транзакцій. Будь-хто, хто має доступ до приватного ключа, має повний контроль над коштами на гаманці.

Ця пара ключів має потужну функцію, яка називається функцією підвіконня. Це означає, що:

  • Легко знайти відкритий ключ, якщо у вас є приватний ключ (A→B).
  • Неможливо визначити приватний ключ, якщо у вас є публічний ключ (B→A).

Для чого використовуються гаманці?

Гаманці використовуються для підпису повідомлень або транзакцій за допомогою приватного ключа гаманця, щоб відправити на блокчейн.

Гаманці надають можливість знати, які повідомлення або транзакції погодив гаманець; оскільки публічний ключ відправника транзакції може бути відновлений з підпису транзакції. Це надзвичайно важливо для запобігання прийняття фальшивих / зловісних транзакцій у блокчейні.

Наприклад, Джаррод міг би подати транзакцію, заявляючи, що Абріл відправила йому 5 ETH, навіть якщо вона ніколи не погодилася на цю транзакцію. Однак, оскільки блокчейн перевіряє підпис кожної транзакції, він швидко відхилить транзакцію, оскільки відновлена адреса з підпису не відповідає «відправнику» транзакції (тобто Абріл).

Блокчейни, такі як Ethereum, використовують ECDSA (еліптичний цифровий алгоритм підпису на еліптичній кривій), щоб перевірити, чи відновлений публічний ключ з підпису транзакції відповідає публічному ключу особи, яка відправила транзакцію до мережі.

Як створюються гаманці?

Для створення гаманця необхідно створити пару публічного-приватного ключа. Однак, значення цієї пари ключів повинні дотримуватися кількох правил, щоб вони працювали на блокчейні.

  1. Приватний ключ складається з 64 шістнадцяткових символів (символи 0→F).
  2. Публічний ключ виводиться з приватного ключа за допомогою криптографії еліптичної кривої (ECC).
  3. Публічний ключ розрізаний, хешований і форматований, щоб стати адресою з 42 символами.

Цей трьохетапний процес є основним потоком того, як генеруються облікові записи на блокчейні.

Далі ми розглянемо, як отримується публічний ключ за допомогою еліптичної кривої та приватного ключа. Але перед цим ми відповімо на кілька інших питань, які у вас можуть виникнути щодо гаманців, наприклад:

  • Як я можу забезпечити випадкове генерування мого приватного ключа?
  • Що робити, якщо я отримаю той самий приватний ключ, що й хтось інший?
  • Як вписуються фрази-сімки в цей процес?
  • Як генеруються кілька пар ключів з однієї фрази-сім'ї?

Що таке фраза-сід?

Хоча можливо згенерувати випадкове значення 64-шістнадцяткового значення, як ми щойно продемонстрували, зазвичай, приватні ключі генеруються за допомогою конкретних стандартів, які виникли з Bitcoin. Ці стандарти дозволяють користувачам запам'ятовувати фразу-сім'ю, яка складається з 12-24 слів, яку можна використовувати для створення будь-якої кількості нових облікових записів, пов'язаних з нею.

Це дозволяє користувачам запам'ятовувати один набір слів для доступу до всіх своїх облікових записів; кожен з окремою парою публічного-приватного ключа. Будь-яку кількість нових приватних ключів можна отримати з одного початкового фрази за допомогою конкретної функції виведення ключа (KDF).

Таким чином, спочатку давайте розберемо, як генеруються фрази зі сім'ями насіння через випадкову ентропію і як приватні ключі можна похідні від фрази зі сім'єю насіння, перш ніж нарешті повернутися до того, як публічні ключі походять від приватних ключів.

Як працюють фрази насіння

Коли ви вперше встановлюєте додаток для гаманця, зазвичай вас попросять записати і безпечно зберегти фразу для відновлення десь; зазвичай це комбінація з 12 або 24 слів. Ви можете побачити приклад списку можливих англійських слів тут, яку ви помітите, складається з 2048 слів у довжину (ми скоро повернемося до цього числа).

Що таке BIP-39?

Ця ідея зберігання мнемонічних кодів була запропонована в 2013 році з BIP (пропозиція щодо поліпшення Bitcoin); BIP-39. Ця пропозиція надає стандартизований спосіб генерації випадкової ентропії та перекладу її на послідовність легко запам'ятовуваних слів.

Як генерується фраза-насіння?

Спочатку ми повинні переконатися, що наша фраза-сід була випадково згенерована, в кінці кінців, ми не хочемо, щоб хтось інший випадково потрапив у наш гаманець і отримав доступ до наших коштів.

Для цього генерується випадкове число за допомогою CSPRNG (криптографічно стійкого псевдовипадкового генератора чисел), що можна зробити в вашому браузері:

Ця випадкове число називається ентропією. Ця ентропія використовується для створення набору слів, які утворюють фразу-сід. У нашому випадку, 128 біт відповідає 12 словам, але також можливо використовувати інші довжини, наприклад:

  • 15 слів: 160 біт
  • 18 слов: 192 біти
  • 21 слово: 224 біти
  • 24 слова: 256 біт

Отже, як ми використовуємо ці біти, щоб створити фразу-сід? Яка взаємозв'язок між бітами та словами? Спочатку для ентропії створюється контрольна сума та додається до 128 бітів; це 4-бітний хеш ентропії, створений для забезпечення її цілісності.

Таким чином, зараз у нас є 128 біт ентропії + 4 біти контрольної суми, загалом 132 біти. Далі 132 біти перетворюються на двійковий код; конкретно вони розбиваються на частини по 11 біт.

У нас зараз є набір з 12 двійкових чисел, кожне з яких має довжину 11 біт. Підказка: у нас є 12 чисел, і наш код-фраза складатиметься з 12 слів!

Згадайте, що у нашому списку 2048 слів, і 2048 було обрано, оскільки 2048 дорівнює 2^11, оскільки існує 2048 різних можливих двійкових чисел, які можна створити з 11 біт.

Тепер нам просто потрібно перетворити ці двійкові числа на слова зі списку слів. Це виконується за допомогою двійкового числа як індексу для пошуку слова в списку слів. тобто Якщо двійкове число - 10, ми використовуємо 9-е слово в списку (оскільки ми починаємо з індексу 0), наприклад:

  • 000000111, (7 у двійковій системі) є 8-м пунктом у списку, який абстрактний! 😉
  • 11111111111, (2047 у двійковій системі) — останній пункт у списку (2048-й), яким є «зоопарк».

Повторіть це 12 разів, один для кожного 11-розрядного числа, щоб сформувати фразу-насіння, що містить 12 слів.

Генеруючи випадкове значення ентропії, розбиваючи його на частини бінарного коду і використовуючи ці значення як індекси для пошуку слів у списку слів, ми отримуємо випадкову фразу-сід.

Чи може хтось вгадати мою фразу-сід?

Ваша негайна реакція на це може бути такою: "Якщо є лише 2048 можливих слів, чи не зможе хтось вгадати мою фразу-сід?" Технічно так, але це дуже... дуже малоймовірно. Як малоймовірно ви запитуєте?

Уявіть, що ми забуваємо про випадковий 128-бітний крок генерації, і просто вручну вибираємо 12 слів зі списку. Щоразу, коли ми вибираємо слово, ми вибираємо один варіант із пулу з 2048 слів.

Отже, ми можемо сказати, що для того, щоб хтось інший також вгадав цю саму послідовність слів, йому потрібно правильно вгадати те саме слово, що й ми, з ймовірністю 1/2048, 12 разів поспіль. Зараз ви, напевно, думаєте: «Добре, це звучить не так вже й складно...», чи не так??Але давайте зіграємо в це:

  • Перше слово: 2048 варіантів
  • Друге слово: 2048 варіантів
  • І так далі, до 12: 2048 варіантів

Це 2048 х 2048 х 2048 ... 12 разів. Або 2048^12. Що є... абсурдно велика кількість. Приблизно, 5 септильйонів, або 5 квадрильйонів мільярдів. Це незбагненно для нас, але давайте спробуємо...

Уявіть, що ви почали вгадувати прямо зараз, використовуючи неймовірно потужний комп'ютер, який може вгадувати 1 трлн фраз насіння за секунду. Цій машині знадобиться 159 трлн років, щоб вгадати одну фразу насіння. Або (в залежності від того, в що ви вірите), приблизно в 11 000 разів довше, ніж поточний вік Всесвіту.

Чи є початкові фрази з 24 слів кращими за 12?

Деякі гаманці вибирають 128 біт (12 слів), але сучасніші гаманці просить вас запам'ятати 24 слова для вашої початкової фрази! Це, знову ж таки, надзвичайно велике.

Як приватні ключі походять від seed фраз

Тепер у нас є початкова фраза з 12 слів, як вона використовується для створення приватних ключів для облікових записів? Для цього нам потрібно перетворити нашу seed-фразу в двійкове насіння, яке можна використовувати для генерації гаманців. Цей процес включає в себе наступні етапи:

  1. За бажанням користувач надає додатковий пароль.
  2. Алгоритм з назвою PBKDF2 (функція похідного ключа на основі пароля) приймає: Seed-фразу. Комбінацію рядка «мнемоніка» та необов'язкового пароля.

Цей процес (називається функцією похідного ключа) виводить 64-байтове хеш-значення, яке називається бінарним насінням, використовуючи інший алгоритм, який називається HMAC-SHA512, як псевдовипадкову функцію.

Виведене 64-байтове хеш-значення може бути використане для генерації рахунків за допомогою логіки, що виникла з інших стандартів Bitcoin; а саме BIP-32 і за бажанням, розширення BIP-32, BIP-44.

Що таке BIP-32?

BIP-32 вводить ієрархічні визначені (HD) гаманці; де з одного насіння може бути похідних багато гаманців, і з цих гаманців можуть бути похідні ще більше гаманців, створюючи "дерево" гаманців.

Що таке BIP-44?

BIP-44 надає стандартизований спосіб створення ієрархії для структур гаманця з одного бінарного насіння шляхом виконання конкретного шляху похідності відповідно до структури: m / purpose’ / coin_type’ / account’ / change / address_index:

  • призначення: Визначає використаний стандарт BIP; для BIP-44 це 44’.
  • coin_type: Вказує криптовалюту; наприклад, 0' для Bitcoin, 60' для Ethereum.
  • Обліковий запис: Розрізняє різні облікові записи користувачів.
  • change: Вказує тип адреси: 0 - для отримання, 1 - для зміни.
  • address_index: Надає унікальний індекс для кожної адреси в межах одного облікового запису та типу зміни.

Не всі гаманці використовують BIP-44, але це загальний спосіб стандартизації походження облікових записів від бінарного насіння.

Як створюються приватні ключі з бінарного насіння?

Як ми вже зазначали раніше, приватні ключі складаються з 64 шістнадцяткових символів, тобто 32 байти. І ми щойно згенерували 64-байтове бінарне насіння через процес PBKDF2 - отже, як ми використовуємо це 64-байтове хеш-значення для створення приватних ключів?

Спочатку хеш розбивається на дві половини, кожна по 32 байти в розмірі:

  1. Перша половина - це головний закритий ключ. Це пряме відображення 1-1 бінарного початкового числа (згенерованого за допомогою вашої початкової фрази) та вашого гаманця. Його можна використовувати в процесі створення дочірніх закритих ключів.
  2. Друга половина - це код ланцюга. Він використовується для забезпечення: якщо дитячий ключ піддається компрометації, то майстер-ключ залишається безпечним. Дитячі ключі можуть бути створені послідовно й кожен з них унікальний.

Тепер ми розуміємо, як виглядають приватні ключі, як вони випадковим чином генеруються та як з однієї секретної фрази можна отримати кілька ключів. Наступне, давайте дослідимо, як публічні ключі походять від приватних ключів.

Як працюють публічні та приватні ключі

З використанням шифрування еліптичних кривих (ECC) ми можемо знайти публічний ключ для заданого приватного ключа. Існують різні види еліптичних кривих, але той, що використовується як Bitcoin, так і Ethereum, називається secp256k1.

Специфікація для цієї еліптичної кривої включає базову точку G, яка використовується як початкова точка для створення інших точок на кривій. З цієї початкової точки ми «рухаємося по» кривій певну кількість разів (визначену нашим приватним ключем) в певний спосіб. Точка на кривій, в якій ми зупиняємо цей процес, буде нашим публічним ключем.

Спосіб, яким ми «рухаємося» по кривій, називається скалярним множенням. При роботі з еліптичними кривими скаляр означає число, яке використовується для масштабування точки на кривій. Ми беремо базову точку G і застосовуємо до неї скалярне число, щоб досягти нової точки на кривій шляхом «розтягування» цієї точки.

Скалярне число, яке ми застосовуємо до базисної точки, є нашим приватним ключем; Простіше кажучи, ми беремо нашу початкову точку G і масштабно множимо її на наш приватний ключ, щоб досягти нашого відкритого ключа.

Насправді, оскільки крива визначена над простим полем ℤp, вона виглядає більше як купа розкиданих крапок... але все ще має ті ж властивості еліптичної кривої.

Наприкінці цього процесу скалярного множення (підстрибування навколо <приватного ключа> кількість разів) ми опинимося в новій точці кривої, яка є нашим відкритим ключем. Ви можете уявити, що цей процес виглядає приблизно так:

Для чого використовуються публічні ключі на блокчейні?

Публічні ключі, як ім'я вказує, можуть бути розповсюджені публічно з будь-ким. Вони корисні для:

  • Перегляд того, хто відправив транзакцію на блокчейн
  • Отримання коштів, таких як ETH, з інших гаманців
  • Може бути використаний для перевірки, чи підписав приватний ключ повідомлення чи ні.

Завершення

Гаманці - це важлива складова блокчейнів, які використовують еліптичну криву криптографію для того, щоб дозволити користувачам відправляти транзакції та підписувати повідомлення зі своїх облікових записів.

Однак, деякі блокчейни, такі як Abstract, також підтримують нові види гаманців, що називаються рахунками розумних контрактів, які надають більше функцій і забезпечують більшу безпеку, механізми відновлення та інше.

Застереження:

  1. Ця стаття передрукована з [https://abs.xyz/blog], Перешліть оригінальний заголовок« Що таке гаманець? », Усі авторські права належать оригінальному автору [ Джаррод Уоттс ]. Якщо є заперечення щодо цього передруку, будь ласка, зв'яжіться зGate Learnкоманда, і вони швидко цим займуться.

  2. Відповідальність за відмову: погляди та думки, висловлені в цій статті, належать виключно автору і не становлять жодної інвестиційної поради.

  3. Переклади статей на інші мови виконуються командою Gate Learn. Якщо не зазначено інше, заборонено копіювання, розповсюдження або плагіат перекладених статей.

ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!