Оригинал статьи:
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 в
единственный закрытый ключ, который затем используется для доступа к вашим средствам и подписания ваших транзакций.
Для простоты, давайте представим это как
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2F017f93047006dbda87cfbb5d1818679e.png&t=665&c=ukw_R5DaEPr7tA)
Если бы я использовал в качестве своей фразы
catsarecool10 вместо
dogsarecool12, я бы получил другую пару ключей, другой адрес, другой аккаунт.
HD-кошельки похожи, но каждая фраза имеет бесконечное количество пар ключей или учетных записей, к которым она может получить доступ. Потому что, в отличие от мозговых кошельков (brain wallets), это более сложная математика. Для простоты, давайте представим это как
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2F4456a95f0297b15aea497b71e07b5546.png&t=665&c=icr_wDS8lBTJew)
Если вы измените какую-либо из этих частей, закрытый ключ, который вы получите (или выведите), будет другим, так же, как это было выше с
catsarecool10 против
dogsarecool12. Однако, поскольку все кодеры следуют одним и тем же правилам, фрагменты, которые добавляются к исходной фразе, являются согласованными и позволяют пользователям получать доступ к одним и тем же учетным записям в нескольких продуктах или блокчейнах.
Эти части называются "путь вывода"Вот это
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2F3a42ccd96e4257b4d7f92460f34442e3.png&t=665&c=HMC3MVLYoWEZDQ)
его часть.
Настоящие части пути выводаПолный путь:
m/44'/60'/0'/0'/0Что представляет собой каждое число:
m / purpose' / coin_type' / account' / change / address_index![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2Fd940dab0621503ae8ccf2242ba252c33.png&t=665&c=GA0qFBOyXbocjQ)
Вероятно, это просто случайный способ начать строку, чтобы кодеры могли легко определить, является ли что-то путем вывода, а не то что вы начинаете вводить «мама».
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2F851549bdbcdd3fd38495a0280565f7b4.png&t=665&c=yzMP7Kf0f_X5xw)
Тут всегда
44 '. Однако, если решат, что произошла эволюция системы ключей HD, вы сможете изменить ее на
45 ', чтобы кодеры снова могли различить старую систему и новую систему.
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2F933d21d477bb33168105ecc47c652b9a.png&t=665&c=seg85_f2pPPDVQ)
К какому блокчейну вы обращаетесь? Каждый блокчейн имеет номер, который его представляет. Биткойн это 0. Эфириум это 60. Aion это 425. Когда вы создаете новый блокчейн, вы запрашиваете неиспользованный номер. Вы можете увидеть все цепи и их номера здесь:
https://github.com/satoshilabs/slips/blob/master/slip-0044.md![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2F65d53578fe430734898cb7be6fb45f05.png&t=665&c=jTQ-oBOdMfRPxg)
Число, которое начинается с 0 и увеличивается. Слой разделения или иерархии. (подробнее об этом ниже)
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2Fd71fc11d12d0ba6cb5df7a6ec846f3d6.png&t=665&c=4D56M1oK8nyZqg)
Иногда используется в Ethereum, а иногда нет. Первоначально был создан для Биткойна, который на самом деле не имеет «учетных записей», а имеет «неизрасходованные выходы транзакций». По сути, вы никогда не отправляете часть своих биткойнов, вы отправляете все свои биткойны по нескольким адресам. Если у вас 0,75 BTC, но вы хотите отправить мне только 0,5 BTC, вы отправите мне 0,5 BTC, а затем отправите себе 0,25 BTC. «Ваше» может вернуться к исходному адресу или к другому адресу, к которому у вас есть доступ (например, к следующему адресу в «списке»). Этот номер гласит: «Отправить все, что я не хочу отправлять другу, на 10-й адрес в моем списке. Или на 0-й адрес в списке (или адрес, с которого я отправляю).
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.gyazo.com%2Fda58eeb90e04d51e1fe3ff2037d30669.png&t=665&c=kT4qVYU5NX2wvg)
Еще одна переменная для получения разных аккаунтов и т. д.
Разделение и ИерархияНекоторые из приведенных выше переменных основаны на внешних факторах, например, в какой я цепи. Некоторые выбираются пользователем или программным обеспечением кошелька, например, переменная
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 для того, чтобы мой друг вернул мне деньги, и так далее. Я мог бы сделать то же самое со счетами компании. Ура!
Полезные ссылки