Bitcoin Forum
November 13, 2024, 02:40:53 PM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Derivation path - простыми словами  (Read 1240 times)
witcher_sense (OP)
Legendary
*
Offline Offline

Activity: 2450
Merit: 4415


🔐BitcoinMessage.Tools🔑


View Profile WWW
June 29, 2019, 10:42:35 AM
Last edit: June 30, 2019, 12:46:27 PM by witcher_sense
Merited by xandry (5), Alex_Sr (5), suchmoon (4), chimk (4), Symmetrick (3), FontSeli (2), klarki (1), diks (1), johhnyUA (1), jokers10 (1), TheFuzzStone (1), IeSua (1), MaoChao (1), epidemia (1), TechPriest (1)
 #1

Оригинал статьи: https://ethereum.stackexchange.com/questions/70017/can-someone-explain-the-meaning-of-derivation-path-in-wallet-in-plain-english-s

Предыстория


Пути вывода (или по-другому пути деривации) имеют отношение к HD-кошелькам или HD-ключам, это такой тип кошелька, где у вас есть одна, удобочитаемая, seed-фраза, которая разблокирует несколько учетных записей/адресов/приватных ключей в любой поддерживаемой сети. Эти фразы обычно выглядят как brain surround have swap horror body response double fire dumb bring hazard.

Техническое описание для наиболее часто используемых HD-кошельков...

  • BIP-32 - описание HD-кошельков.
  • BIP-39 - мнемоническая фраза / список слов / остальные части этой загадки.
  • BIP-44 - материал про пути вывода / алгоритмы.

Обычно у вас есть один закрытый (приватный) ключ (напр. afdfd9c3d2095ef696594f6cedcae59e72dcd697e2a7521b1578140422a4f890), который позволяет вам получить доступ к своим средствам по соответствующему адресу (напр.  0x06A85356DCb5b307096726FB86A78c59D38e08ee). Это пара ключей.

В случае с HD-кошельками у вас есть единственная seed-фраза (напр. brain surround have swap horror body response double fire dumb bring hazard), которая с помощью математических вычислений, алгоритмов, кода и прочего выводит несколько пар ключей. Бесконечное количество пар ключей.

Кроме того, существует небезопасный формат кошелька, известный как Brain wallet или «мозговой кошелек», в котором можно использовать одну понятную человеку фразу и через математику, алгоритмы, код и прочее она превращается в одну пару ключей.


Хорошо, но что там насчет путей вывода?


Мозговые кошельки позволяют вам превратить dogsarecool12 или brain surround have swap horror body response double fire dumb bring hazard в единственный закрытый ключ, который затем используется для доступа к вашим средствам и подписания ваших транзакций.

Для простоты, давайте представим это как



Если бы я использовал в качестве своей фразы catsarecool10 вместо dogsarecool12, я бы получил другую пару ключей, другой адрес, другой аккаунт.

HD-кошельки похожи, но каждая фраза имеет бесконечное количество пар ключей или учетных записей, к которым она может получить доступ. Потому что, в отличие от мозговых кошельков (brain wallets), это более сложная математика. Для простоты, давайте представим это как



Если вы измените какую-либо из этих частей, закрытый ключ, который вы получите (или выведите), будет другим, так же, как это было выше с catsarecool10 против dogsarecool12. Однако, поскольку все кодеры следуют одним и тем же правилам, фрагменты, которые добавляются к исходной фразе, являются согласованными и позволяют пользователям получать доступ к одним и тем же учетным записям в нескольких продуктах или блокчейнах.

Эти части называются "путь вывода"

Вот это



его часть.

Настоящие части пути вывода

Полный путь: m/44'/60'/0'/0'/0

Что представляет собой каждое число: m / purpose' / coin_type' / account' / change / address_index



Вероятно, это просто случайный способ начать строку, чтобы кодеры могли легко определить, является ли что-то путем вывода, а не то что вы начинаете вводить «мама».



Тут всегда 44 '. Однако, если решат, что произошла эволюция системы ключей HD, вы сможете изменить ее на 45 ', чтобы кодеры снова могли различить старую систему и новую систему.



К какому блокчейну вы обращаетесь? Каждый блокчейн имеет номер, который его представляет. Биткойн это 0. Эфириум это 60. Aion это 425. Когда вы создаете новый блокчейн, вы запрашиваете неиспользованный номер. Вы можете увидеть все цепи и их номера здесь: https://github.com/satoshilabs/slips/blob/master/slip-0044.md



Число, которое начинается с 0 и увеличивается. Слой разделения или иерархии. (подробнее об этом ниже)



Иногда используется в Ethereum, а иногда нет. Первоначально был создан для Биткойна, который на самом деле не имеет «учетных записей», а имеет «неизрасходованные выходы транзакций». По сути, вы никогда не отправляете часть своих биткойнов, вы отправляете все свои биткойны по нескольким адресам. Если у вас 0,75 BTC, но вы хотите отправить мне только 0,5 BTC, вы отправите мне 0,5 BTC, а затем отправите себе 0,25 BTC. «Ваше» может вернуться к исходному адресу или к другому адресу, к которому у вас есть доступ (например, к следующему адресу в «списке»). Этот номер гласит: «Отправить все, что я не хочу отправлять другу, на 10-й адрес в моем списке. Или на 0-й адрес в списке (или адрес, с которого я отправляю).



Еще одна переменная для получения разных аккаунтов и т. д.


Разделение и Иерархия


Некоторые из приведенных выше переменных основаны на внешних факторах, например, в какой я цепи. Некоторые выбираются пользователем или программным обеспечением кошелька, например, переменная change. Переменные account и index дают мне (или моему кошельку) больше возможностей для изменения.

Например, скажем, я хочу отделить мои личные активы BTC от активов моей компании. Я мог бы использовать m / 44 '/ 0' / 0 '/ 0' / 0 для компании и m / 44 '/ 0' / 1 '/ 0' / 0 для своих личных.

Но скажем, я хочу иметь разные адреса для ...

  • моих личных сбережений
  • где я получаю свою зарплату каждую неделю
  • когда я лично получаю деньги от друзей
  • публичного показа в моем личном github для пожертвований
  • все мои личные расходы на учебу

Я мог бы использовать m / 44 '/ 0' / 1 '/ 0' / 0 для сбережений, m / 44 '/ 0' / 1 '/ 0' / 1 для зарплаты, m / 44 '/ 0' / 1 '/ 0 '/ 2 для того, чтобы мой друг вернул мне деньги, и так далее. Я мог бы сделать то же самое со счетами компании. Ура!


Полезные ссылки


█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
June 30, 2019, 07:47:22 PM
Merited by chimk (4), xandry (2), witcher_sense (1), FontSeli (1)
 #2

Quote
Пути вывода (или по-другому пути деривации) имеют отношение к HD-кошелькам или HD-ключам, это такой тип кошелька, где у вас есть одна, удобочитаемая, seed-фраза, которая разблокирует несколько учетных записей/адресов/приватных ключей в любой поддерживаемой сети.
В Bitcoin Core нет удобочитаемой seed-фразы, хотя это HD-кошелек.


Quote
Тут всегда 44 '. Однако, если решат, что произошла эволюция системы ключей HD, вы сможете изменить ее на 45 ', чтобы кодеры снова могли различить старую систему и новую систему.
Далеко не всегда 44', все чаще для биткоина используются сегвит-адреса (которые живут на 49' и 84' ветках дерева адресов). А в Bitcoin Core и Electrum вообще старый BIP32, где пути деривации типа m/0'. В оригинальной статье подразумевался эфир, но мы в разделе биткоина ).

И раз тема про пути деривации, то неплохо бы пояснить про эти апострофы.


Quote
К какому блокчейну вы обращаетесь? Каждый блокчейн имеет номер, который его представляет. Биткойн это 0. Эфириум это 60. Aion это 425. Когда вы создаете новый блокчейн, вы запрашиваете неиспользованный номер. Вы можете увидеть все цепи и их номера здесь: https://github.com/satoshilabs/slips/blob/master/slip-0044.md
В общем да, но эти номера производители кошельков не всегда соблюдают. Например, Леджер иногда назначает свои номера (которые в этой таблице по ссылке уже заняты другими монетами).

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
witcher_sense (OP)
Legendary
*
Offline Offline

Activity: 2450
Merit: 4415


🔐BitcoinMessage.Tools🔑


View Profile WWW
July 02, 2019, 08:00:38 AM
Merited by igor72 (1), Captain-Cryptory (1)
 #3

Цель этой темы заинтересовать вопросом "Derivation path" и подтолкнуть к более глубокому изучению вопроса. Я выбрал эту небольшую статью, потому что она заставила меня заинтересоваться. Те вопросы и уточнения, озвученные выше вполне закономерны, потому что статья небольшая и, так сказать, тезисная. Она не охватывает всех нюансов и частных случаев, а также технических спецификаций отдельно взятых аппаратных кошельков. Некоторые вопросы наиболее полно раскрываются в статьях и видео, приведенных в разделе "Полезные ссылки", где принципы объясняются даже с использованием непонятных математических формул.

Переместил топик в раздел "Новички", потому что этот вопрос не касается только биткойна, но и отдельно взятого раздела для полобных тем не предусмотрено.

По мере изучения вопроса, я постараюсь добавлять сноски и комментарии в первый пост, чтобы содержимое стало более понятно и более содержательно.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
July 02, 2019, 10:39:13 AM
Last edit: July 03, 2019, 03:22:51 PM by igor72
Merited by chimk (4), johhnyUA (1), jokers10 (1), m2017 (1)
 #4

Если позволите, попытаюсь изложить, насколько смогу простыми словами, свое определение derivation path.

В HD-кошельках (HD - это Hierarchical Deterministic) ключи вычисляются иерархически. Корнем всего этого дерева ключей является seed - огромное число в 64 байта корневой приватный мастер-ключ (полученный из огромного числа, называемого seed-ом), из которого математически получаются ключи первого уровня, из которых получаются ключи второго уровня, из которых... и так далее. Из одного конкретного сида всегда получается один и тот же набор ключей, и каждый ключ занимает одно и то же место на дереве ключей. Это дерево может ветвиться почти бесконечно, но на практике используется небольшая "глубина" ветвления - этого вполне достаточно.
Координата каждого ключа на дереве называется "derivation path" (на русский часто переводят, как "путь деривации", что ненамного понятней, идеального перевода я подобрать пока не могу) и записывается строкой, типа m/0/5/10/..., где m - не изменяется, это корневой мастер-ключ, а дальше идут ветви (счет ведется с нуля). В моем примере нужный ключ находится на 11-й веточке, которая выходит из 6-й ветки, которая в свою очередь выходит из первой ветви, выходящей из ствола дерева ).

Число веток на каждом уровне 232, то есть 4294967296. Первые 231 (2147483648) ключей являются non-hardened, вторая половина - hardened ("усиленные ключи"). Имея простой (non-hardened) приватный ключ и родительский публичный мастер-ключ (extended public key, xpub) можно легко вычислить остальные приватные ключи этой ветки, поэтому предпочтительнее использовать hardened ключи, где такой "взлом" невозможен. Но из публичного hardened мастер-ключа (xpub) нельзя получить (можно только из приватного xprv или non-hardened публичного xpub) дочерние публичные ключи, а получение публичных ключей из xpub необходимо для современых кошельков. Поэтому на практике используется смешанный derivation path - на верхних уровнях hardened, а уже на уровнях ниже аккаунтов non-hardened ключи. Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
July 03, 2019, 07:46:22 AM
 #5


[?] Корнем всего этого дерева ключей является seed - огромное число в 64 байта,

Не обязательно 64. По спецификации  BIP32 размер затравки (seed) может лежать в интервале от 16 до 64 байт, рекомендуемое значение составляет 32 байта:

Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.
Более полная цитата оттуда:
Quote
    Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.
    Calculate I = HMAC-SHA512(Key = "Bitcoin seed", Data = S)
    Split I into two 32-byte sequences, IL and IR.
    Use parse256(IL) as master secret key, and IR as master chain code.
Выделил цветом строку, где получается 64-байтное число, которое я имел в виду, называя его сидом. А то, что там называется "seed byte sequence S of a chosen length", это еще называют энтропией. В известном конвертере https://iancoleman.io/bip39/ , например, так.
Но, согласно BIP32, вы правы - seed=entropy. Спасибо за замечание.

Насчет того, что энтропия может лежать между 16 и 64 байт, я думаю, это просто рекомендация. Ничто не мешает мне сделать ее 1 байт или 100, просто меньше 16 считается уже небезопасно, а больше 64 слишком избыточно.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
July 03, 2019, 12:33:48 PM
Last edit: July 03, 2019, 12:52:36 PM by igor72
 #6

не есть корень дерева
Ошибку исправил, спасибо.
Quote
Когда говорят об энтропии S имеют ввиду размер затравки (псевдослучайного числа). Подмена  двух понятий, которая иногда используется, - seed и entropy -  может ставить в тупик.
Согласен.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
johhnyUA
Legendary
*
Offline Offline

Activity: 2436
Merit: 1849


Crypto for the Crypto Throne!


View Profile
July 20, 2019, 10:54:52 PM
 #7

Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

Здесь кстати интересный момент, если что, поправьте.
Если считать грубо, то вот что получается 232 (purpose) * 232 (coin type) * 232 (account) * 232 (change) * 232 (index)

Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов. Но так как purpose и coin type это у нас конкретные числа для конкретного блокчейна ( ну или пара чисел) то выходит что один сид покрывает - 1 * 1* 232 * 232 * 232 тоесть, 296 ключей.

Если ошибся, то извиняйте, немного заспанный. Буду благодарен любой критике.

.freebitcoin.       ▄▄▄█▀▀██▄▄▄
   ▄▄██████▄▄█  █▀▀█▄▄
  ███  █▀▀███████▄▄██▀
   ▀▀▀██▄▄█  ████▀▀  ▄██
▄███▄▄  ▀▀▀▀▀▀▀  ▄▄██████
██▀▀█████▄     ▄██▀█ ▀▀██
██▄▄███▀▀██   ███▀ ▄▄  ▀█
███████▄▄███ ███▄▄ ▀▀▄  █
██▀▀████████ █████  █▀▄██
 █▄▄████████ █████   ███
  ▀████  ███ ████▄▄███▀
     ▀▀████   ████▀▀
BITCOIN
DICE
EVENT
BETTING
WIN A LAMBO !

.
            ▄▄▄▄▄▄▄▄▄▄███████████▄▄▄▄▄
▄▄▄▄▄██████████████████████████████████▄▄▄▄
▀██████████████████████████████████████████████▄▄▄
▄▄████▄█████▄████████████████████████████▄█████▄████▄▄
▀████████▀▀▀████████████████████████████████▀▀▀██████████▄
  ▀▀▀████▄▄▄███████████████████████████████▄▄▄██████████
       ▀█████▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀█████▀▀▀▀▀▀▀▀▀▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.PLAY NOW.
igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
July 21, 2019, 05:43:32 AM
Last edit: July 21, 2019, 06:03:01 AM by igor72
 #8

Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

Здесь кстати интересный момент, если что, поправьте.
Если считать грубо, то вот что получается 232 (purpose) * 232 (coin type) * 232 (account) * 232 (change) * 232 (index)
Это по BIP44 такая схема принята. А по BIP32 (на который BIP44 опирается) таких уровней может быть больше. Не знаю, насколько больше, не важно. Например, ничто не мешает сделать в электруме кошелек с путем m/44'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0' (последний 0' - аккаунт) - это сколько ключей получается, 2576? ))
Quote
Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов.
Многие из этих 2160 ключей будут давать одинаковые адреса. Но, как я выше писал, уровней деривации больше, поэтому вы правы - из каждого сида теоретически можно получить все ключи. )
Quote
Но так как purpose и coin type это у нас конкретные числа для конкретного блокчейна ( ну или пара чисел) то выходит что один сид покрывает - 1 * 1* 232 * 232 * 232 тоесть, 296 ключей.
Вроде верно (если оставаться в рамках BIP44, что не обязательно).

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
johhnyUA
Legendary
*
Offline Offline

Activity: 2436
Merit: 1849


Crypto for the Crypto Throne!


View Profile
July 21, 2019, 01:18:32 PM
 #9

Это по BIP44 такая схема принята. А по BIP32 (на который BIP44 опирается) таких уровней может быть больше. Не знаю, насколько больше, не важно. Например, ничто не мешает сделать в электруме кошелек с путем m/44'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0' (последний 0' - аккаунт) - это сколько ключей получается, 2576? ))

Надо значит разбираться, интересная тема. Но по такой логике да, получается 2576

Quote
Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов.
Многие из этих 2160 ключей будут давать одинаковые адреса. Но, как я выше писал, уровней деривации больше, поэтому вы правы - из каждого сида теоретически можно получить все ключи. )

Не все ключи. я не правильно выразился. Все адреса, вот что я имел ввиду. У нас же количество легаси адресов ограничено 2160, тоесть, по моему примеру выше видно что можно покрыть всю область (в теории) легаси адресов всего лишь одним сидом. Но так, как мы используем условно только BIP44 и единый cointype, то уже не получится такое провернуть.

Вот правильно ли я размышляю, если с BIP44 и cointype 0 (для блокчейна биткоина), то у нас с одного сида получается 296 ключевых пар. Так как количество адресов ограничено 2160, то получается чтобы адреса не повторялись (случайно не отправил дядьке в Камбодже свои битки), то количество уникальных сидов тоже ограничено, и являет собой 2160-296 = 264 . Чет не очень много.

Ну вот если предположить что сегвит адреса, с их BIP49 и BIP84 (один для нестед , один для трушного, как я помню) то получится еще по 264. Тобишь всего в сумме 266

.freebitcoin.       ▄▄▄█▀▀██▄▄▄
   ▄▄██████▄▄█  █▀▀█▄▄
  ███  █▀▀███████▄▄██▀
   ▀▀▀██▄▄█  ████▀▀  ▄██
▄███▄▄  ▀▀▀▀▀▀▀  ▄▄██████
██▀▀█████▄     ▄██▀█ ▀▀██
██▄▄███▀▀██   ███▀ ▄▄  ▀█
███████▄▄███ ███▄▄ ▀▀▄  █
██▀▀████████ █████  █▀▄██
 █▄▄████████ █████   ███
  ▀████  ███ ████▄▄███▀
     ▀▀████   ████▀▀
BITCOIN
DICE
EVENT
BETTING
WIN A LAMBO !

.
            ▄▄▄▄▄▄▄▄▄▄███████████▄▄▄▄▄
▄▄▄▄▄██████████████████████████████████▄▄▄▄
▀██████████████████████████████████████████████▄▄▄
▄▄████▄█████▄████████████████████████████▄█████▄████▄▄
▀████████▀▀▀████████████████████████████████▀▀▀██████████▄
  ▀▀▀████▄▄▄███████████████████████████████▄▄▄██████████
       ▀█████▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀█████▀▀▀▀▀▀▀▀▀▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.PLAY NOW.
igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
July 21, 2019, 03:10:36 PM
Merited by johhnyUA (1)
 #10


Вот правильно ли я размышляю, если с BIP44 и cointype 0 (для блокчейна биткоина), то у нас с одного сида получается 296 ключевых пар. Так как количество адресов ограничено 2160, то получается чтобы адреса не повторялись (случайно не отправил дядьке в Камбодже свои битки), то количество уникальных сидов тоже ограничено, и являет собой 2160-296 = 264 . Чет не очень много.
Только не минус, а разделить.
Ну да, на каждого жителя Земли всего лишь по два с половиной миллиарда сидов с уникальными адресами выходит ).
Quote
Ну вот если предположить что сегвит адреса, с их BIP49 и BIP84 (один для нестед , один для трушного, как я помню) то получится еще по 264. Тобишь всего в сумме 266
0.75*266 на самом деле. Но все равно - практического смысла в этом не вижу, никто сиды на уникальность набора адресов не проверяет, это невозможно сделать. Имхо, адресные пространства разных сидов часто где-то пересекаются. Просто вероятность обнаружить эти пересечения ничтожно мала.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
johhnyUA
Legendary
*
Offline Offline

Activity: 2436
Merit: 1849


Crypto for the Crypto Throne!


View Profile
July 21, 2019, 10:07:35 PM
 #11

Только не минус, а разделить.
Ну да, на каждого жителя Земли всего лишь по два с половиной миллиарда сидов с уникальными адресами выходит ).

Кстати да, спешил и сглупил, там деление.

Ну население то не постоянное  Cheesy

Quote
0.75*266 на самом деле.

Почему 0.75 ?

.freebitcoin.       ▄▄▄█▀▀██▄▄▄
   ▄▄██████▄▄█  █▀▀█▄▄
  ███  █▀▀███████▄▄██▀
   ▀▀▀██▄▄█  ████▀▀  ▄██
▄███▄▄  ▀▀▀▀▀▀▀  ▄▄██████
██▀▀█████▄     ▄██▀█ ▀▀██
██▄▄███▀▀██   ███▀ ▄▄  ▀█
███████▄▄███ ███▄▄ ▀▀▄  █
██▀▀████████ █████  █▀▄██
 █▄▄████████ █████   ███
  ▀████  ███ ████▄▄███▀
     ▀▀████   ████▀▀
BITCOIN
DICE
EVENT
BETTING
WIN A LAMBO !

.
            ▄▄▄▄▄▄▄▄▄▄███████████▄▄▄▄▄
▄▄▄▄▄██████████████████████████████████▄▄▄▄
▀██████████████████████████████████████████████▄▄▄
▄▄████▄█████▄████████████████████████████▄█████▄████▄▄
▀████████▀▀▀████████████████████████████████▀▀▀██████████▄
  ▀▀▀████▄▄▄███████████████████████████████▄▄▄██████████
       ▀█████▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀█████▀▀▀▀▀▀▀▀▀▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.PLAY NOW.
igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
July 22, 2019, 05:22:50 AM
Merited by johhnyUA (1)
 #12

Почему 0.75 ?
264+264+264 = 3*264 = 1.5*265 = 0.75*266

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
tenant48
Full Member
***
Offline Offline

Activity: 349
Merit: 169


View Profile
November 07, 2019, 05:24:21 PM
 #13

Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

Здесь кстати интересный момент, если что, поправьте.
Если считать грубо, то вот что получается 232 (purpose) * 232 (coin type) * 232 (account) * 232 (change) * 232 (index)

Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов. Но так как purpose и coin type это у нас конкретные числа для конкретного блокчейна ( ну или пара чисел) то выходит что один сид покрывает - 1 * 1* 232 * 232 * 232 тоесть, 296 ключей.

Если ошибся, то извиняйте, немного заспанный. Буду благодарен любой критике.
Небольшая поправка: значение "change" обычно может принимать только 2 значения (0 внешние и 1 внутрение адреса). Так что теоретически ключей может быть еще меньше - 265

EdvinZ
Sr. Member
****
Offline Offline

Activity: 994
Merit: 260



View Profile
November 08, 2019, 05:20:00 AM
 #14

Seed фразы намного удобнее для запоминания человеческому мозгу, чем огромное число приватного ключа. Неудивительно, что был придуман этот способ запароливания кошельков, потому что обычный приватник наизусть не выучишь, а seed фразу при желании запомнить легко и можно получать доступ к своим средствам откуда угодно, не нося с собой флэшку с приватником, которая может быть скомпрометирована.

tenant48
Full Member
***
Offline Offline

Activity: 349
Merit: 169


View Profile
November 08, 2019, 06:24:16 AM
 #15

Seed фразы намного удобнее для запоминания человеческому мозгу, чем огромное число приватного ключа. Неудивительно, что был придуман этот способ запароливания кошельков, потому что обычный приватник наизусть не выучишь, а seed фразу при желании запомнить легко и можно получать доступ к своим средствам откуда угодно, не нося с собой флэшку с приватником, которая может быть скомпрометирована.
Запоминать нужно не только слова, а и точную их последовательность. Поэтому на практике эта задача маловыполнимая, если конечно вы не обладаете феноменальной памятью. Запомнить seed из 12 слов, это тоже самое что выучить 128 битный ключ. Если вы сами попытаетесь создать свой seed котрый будет иметь цепочку слов имеющий логический смысл, то он будет моментально взломан. На этом погорело достаточно много людей, так же как и на brain wallet.

johhnyUA
Legendary
*
Offline Offline

Activity: 2436
Merit: 1849


Crypto for the Crypto Throne!


View Profile
November 08, 2019, 04:18:06 PM
Last edit: November 09, 2019, 06:56:47 PM by johhnyUA
 #16

Запоминать нужно не только слова, а и точную их последовательность. Поэтому на практике эта задача маловыполнимая, если конечно вы не обладаете феноменальной памятью. Запомнить seed из 12 слов, это тоже самое что выучить 128 битный ключ.

Ты неправ. Я то конечно понимаю, у каждого разный интеллектуальный потенциал, но сравнивать 12 (та даже 24 слова) со 64 знаками (256 битный ключ, которыми они все в основном и являются) это конечно нечто. Та даже блин возьмем 128 бит энтропии, или 16 байт, или 32 знака. И запомнить 12 слов. Ага, одинаково.

.freebitcoin.       ▄▄▄█▀▀██▄▄▄
   ▄▄██████▄▄█  █▀▀█▄▄
  ███  █▀▀███████▄▄██▀
   ▀▀▀██▄▄█  ████▀▀  ▄██
▄███▄▄  ▀▀▀▀▀▀▀  ▄▄██████
██▀▀█████▄     ▄██▀█ ▀▀██
██▄▄███▀▀██   ███▀ ▄▄  ▀█
███████▄▄███ ███▄▄ ▀▀▄  █
██▀▀████████ █████  █▀▄██
 █▄▄████████ █████   ███
  ▀████  ███ ████▄▄███▀
     ▀▀████   ████▀▀
BITCOIN
DICE
EVENT
BETTING
WIN A LAMBO !

.
            ▄▄▄▄▄▄▄▄▄▄███████████▄▄▄▄▄
▄▄▄▄▄██████████████████████████████████▄▄▄▄
▀██████████████████████████████████████████████▄▄▄
▄▄████▄█████▄████████████████████████████▄█████▄████▄▄
▀████████▀▀▀████████████████████████████████▀▀▀██████████▄
  ▀▀▀████▄▄▄███████████████████████████████▄▄▄██████████
       ▀█████▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀█████▀▀▀▀▀▀▀▀▀▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.PLAY NOW.
witcher_sense (OP)
Legendary
*
Offline Offline

Activity: 2450
Merit: 4415


🔐BitcoinMessage.Tools🔑


View Profile WWW
November 08, 2019, 07:04:34 PM
 #17

Ты какую то глупость написал. Я то конечно понимаю, у каждого разный интеллектуальный потенциал, но сравнивать 12 (та даже 24 слова) со 64 знаками (256 битный ключ, которыми они все в основном и являются) это конечно нечто. Та даже блин возьмем 128 бит энтропии, или 16 байт, или 32 знака. И запомнить 12 слов. Ага, одинаково.

У тебя даже подписи то нет, зачем спамить если можно сначала осмыслить то, что пишешь?
Не будь так суров к джуниору, он просто набрался информации из каких-то источников, но сформулировать своими словами не удалось. Он имел в виду, что лучше всего сид-фразу копировать на какой-то дополнительный носитель, потому что возможности человеческой памяти ограничены, да и склероз может неожиданно нагрянуть. Так что лучше не рисковать, чтобы слова пытататься запомнить, пусть они и хуман-ридабл. А про генерацию паролей тоже верно, лучше из головы ничего не выдумывать, а использовать всякие менеджеры паролей и нагенерировать, что-то креативнее, чем qwerty54321.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
tenant48
Full Member
***
Offline Offline

Activity: 349
Merit: 169


View Profile
November 09, 2019, 09:53:00 AM
 #18

Запоминать нужно не только слова, а и точную их последовательность. Поэтому на практике эта задача маловыполнимая, если конечно вы не обладаете феноменальной памятью. Запомнить seed из 12 слов, это тоже самое что выучить 128 битный ключ.

Ты какую то глупость написал. Я то конечно понимаю, у каждого разный интеллектуальный потенциал, но сравнивать 12 (та даже 24 слова) со 64 знаками (256 битный ключ, которыми они все в основном и являются) это конечно нечто. Та даже блин возьмем 128 бит энтропии, или 16 байт, или 32 знака. И запомнить 12 слов. Ага, одинаково.

У тебя даже подписи то нет, зачем спамить если можно сначала осмыслить то, что пишешь?
Спамиш сдесь ты и если у тебя больше мерита, то это еще не показывает уровень твоего интелектуального уровня. Попробуй сгенерировать кошельком 12 слов и запомнить их с утра, затем пойти позаниматься своими делами, пообщаться с друзьями и вечером взять бумажку записать то что запомнил и сравнить с оригиналом. Если ты перепутаеш местами хоть пару слов - твои деньги пропали. Лично знаю людей, которые в качестве защиты записывали на бумагу seed и специально меняли местами несколько слов, а затем бегали по форумам с просьбой восстановить средства и платили до 30% за восстановление, так как не могли вспомнить что и счем они меняли местами.
Теперь немного теории: seed из 12 слов имеет аналог 128 битного ключа + 4 бита контрольной суммы и для более удобочитаемой записии записывается в системе счисления с индексом 2048, имеется 2048 уникальных слов каждое длиной 11 бит, что в суме и дает 132 бита (128+4). Только на первый взгляд кажется, что запомнить 12 слов легче, но так как они логически не связаны, то для мозга одинаково сложно запомнить эти 12 слов или 16 байт.

igor72
Legendary
*
Offline Offline

Activity: 2016
Merit: 2081


Crypto Swap Exchange


View Profile
November 09, 2019, 10:10:12 AM
 #19

Если ты перепутаеш местами хоть пару слов - твои деньги пропали. Лично знаю людей, которые в качестве защиты записывали на бумагу seed и специально меняли местами несколько слов, а затем бегали по форумам с просьбой восстановить средства и платили до 30% за восстановление, так как не могли вспомнить что и счем они меняли местами.
Если два слова поменять местами, то найти правильную последовательность несложно даже простым ручным перебором.
Quote
Только на первый взгляд кажется, что запомнить 12 слов легче, но так как они логически не связаны, то для мозга одинаково сложно запомнить эти 12 слов или 16 байт.
Я с этим могу согласиться только для случаев, когда мнемоническая фраза на каком-то совсем незнакомом языке. Лично мне несложно запомнить 12 английских, известных мне слов (да и 24 запоминал), в отличие от не очень длинной последовательности цифр (32 цифры - это уже очень длинная для меня). Но, без постоянного повторения, через месяц я такую фразу благополучно забываю. Поэтому я с вами солидарен - фразу нужно обязательно записывать. И даже лучше не запоминать параллельно, чтобы под гипнозом или во сне невозможно было выдать ).

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
tenant48
Full Member
***
Offline Offline

Activity: 349
Merit: 169


View Profile
November 09, 2019, 10:17:39 AM
Last edit: November 09, 2019, 10:44:09 AM by tenant48
 #20

Но, без постоянного повторения, через месяц я такую фразу благополучно забываю.
Что и требовалось доказать! Для примера, у меня знакомый сисадмин выучил на память ключ активации windows и вводит его по памяти, так что такое тоже реально.
Quote
Если два слова поменять местами, то найти правильную последовательность несложно даже простым ручным перебором
В ручную врядли, да и зачем? Вы тут более здравомыслящий прикиньте сколько возможно вариантов Smiley, для этого есть соответствующий софт.

Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!