Эта особенность детерминированных кошельков была реализована в Биткоине в рамках так называемого Проекта развития Биткоина (BIP, Bitcoin Improvement Proposal), который является небольшим улучшением исходного кода Биткоина с целью обеспечения дополнительной безопасности и удобства. В данном случае это был BIP32 (номер 32 из BIP). Было предположено следующее: если когда-либо, в самом маловероятном случае, произойдет столкновение двух одинаковых адресов, когда две стороны получают один и тот же адрес (что почти невозможно, но еще более улучшает безопасность), будет ли у любого человека один адрес со всеми монетами на нем. Однако если средства автоматически распределяются по сотням или тысячам адресов, то есть определенное снижение риска. Кроме того, в случае попытки фишинга злоумышленник получит доступ не ко всем средствам, а только к их части.
Вторая причина заключается в конфиденциальности и защите личности. Подробнее мы обсудим это в главе 9. Кратко скажу, что чем больше адресов вы контролируете, тем труднее постороннему узнать, сколько у вас денег. Поэтому конфиденциальность улучшается.
Что такое сид?
Чтобы сгенерировать такой детерминированный ключ, нам нужна начальная инструкция, она называется сидом[15] и обычно состоит из 8, 12 или 24 слов. Эти слова становятся инструкциями, как найти первый, а затем все последующие закрытые ключи. Если вы знаете такую инструкцию, то очень легко добраться до ключей, однако вы никогда не сможете (вероятность этого ничтожна) вернуться назад. Например, представьте, что инструкция говорит, что следующий закрытый ключ является текущим закрытым ключом плюс сумма всех его цифр. На деле это работает не так, потому что фактическая последовательность образуется с помощью очень сложной криптографической функции, но принцип примерно такой.
Представьте себе, что второй закрытый ключ (первый я вам не скажу) равен 3628. Какой был первый закрытый ключ в этой детерминированной последовательности? Несмотря на то что это вполне можно рассчитать, вы, вероятно, немного поразмыслите, прежде чем скажете, что это 3614. Почему 3614? Потому что сложение цифр в закрытом ключе (3 + 6 + 1 + 4 = 14) дает вам 3614 + 14, что равно 3628.
Детерминированный кошелек в основном начинается с сида, который конвертируется в первый ключ (в нашем случайном примере 3614). Затем он использует правило и проверяет все закрытые ключи, которые генерируются с помощью этого алгоритма, независимо от того, связаны ли они с монетами. В нашем случае это будет 3614, 3628, 3647… Он перестает проверять определенное количество ключей, когда у заданного количества ключей нет монет, подключенных к нему. Это может быть, например, 100 ключей. Итак, если на девятом ключе все еще были монеты, алгоритм продолжал бы проверку до 109-го ключа, если бы ни у одного из других ключей не было связанных с ними монет. Затем кошелек отображает количество монет как одно число, так как вы имеете к ним доступ.
Не подумайте, что такая детерминированная последовательность увеличивает риск столкновения людей, создавших одинаковые закрытые ключи. Помните, даже если вы создали триллион новых адресов за наносекунду и все люди на планете делали бы то же самое, начиная с ее рождения (а это примерно 4,5 миллиарда лет назад), вероятность того, что Вселенная просто взорвется, чем два адреса будут одинаковыми, все равно была бы больше. Обожаю математику! А вы?:-)
[ВАЖНО]
Поскольку кошелек автоматически проверяет все закрытые ключи, вы МОЖЕТЕ отправить монеты на «старый» или «новый» адрес, который указан в кошельке. Вы все равно получите их, пока адрес показан в этой конкретной последовательности. Поэтому не отправляйте монеты на другой внешний адрес.
Можно ли взломать блокчейн?
Если люди задают этот вопрос, значит, они слышали истории, когда закрытые ключи были украдены с помощью взлома или фишинг-атаки. Вы НЕ можете взломать блокчейн, так как криптография на 100 % обеспечивает его безопасность. Самая большая проблема заключается в ненадлежащем хранении закрытых ключей, что приводит к тому, что люди теряют доступ к своим монетам. Лично для меня неудобство хранения закрытых ключей – это одна из основных проблем, с которой массово сталкиваются криптовалюты.