Представьте себе, что второй закрытый ключ (первый я вам не скажу) равен 3628. Какой был первый закрытый ключ в этой детерминированной последовательности? Несмотря на то что это вполне можно рассчитать, вы, вероятно, немного поразмыслите, прежде чем скажете, что это 3614. Почему 3614? Потому что сложение цифр в закрытом ключе (3 + 6 + 1 + 4 = 14) дает вам 3614 + 14, что равно 3628.
Детерминированный кошелек в основном начинается с сида, который конвертируется в первый ключ (в нашем случайном примере 3614). Затем он использует правило и проверяет все закрытые ключи, которые генерируются с помощью этого алгоритма, независимо от того, связаны ли они с монетами. В нашем случае это будет 3614, 3628, 3647… Он перестает проверять определенное количество ключей, когда у заданного количества ключей нет монет, подключенных к нему. Это может быть, например, 100 ключей. Итак, если на девятом ключе все еще были монеты, алгоритм продолжал бы проверку до 109-го ключа, если бы ни у одного из других ключей не было связанных с ними монет. Затем кошелек отображает количество монет как одно число, так как вы имеете к ним доступ.
Не подумайте, что такая детерминированная последовательность увеличивает риск столкновения людей, создавших одинаковые закрытые ключи. Помните, даже если вы создали триллион новых адресов за наносекунду и все люди на планете делали бы то же самое, начиная с ее рождения (а это примерно 4,5 миллиарда лет назад), вероятность того, что Вселенная просто взорвется, чем два адреса будут одинаковыми, все равно была бы больше. Обожаю математику! А вы?:-)
[ВАЖНО]
Поскольку кошелек автоматически проверяет все закрытые ключи, вы МОЖЕТЕ отправить монеты на «старый» или «новый» адрес, который указан в кошельке. Вы все равно получите их, пока адрес показан в этой конкретной последовательности. Поэтому не отправляйте монеты на другой внешний адрес.
Можно ли взломать блокчейн?
Если люди задают этот вопрос, значит, они слышали истории, когда закрытые ключи были украдены с помощью взлома или фишинг-атаки. Вы НЕ можете взломать блокчейн, так как криптография на 100 % обеспечивает его безопасность. Самая большая проблема заключается в ненадлежащем хранении закрытых ключей, что приводит к тому, что люди теряют доступ к своим монетам. Лично для меня неудобство хранения закрытых ключей – это одна из основных проблем, с которой массово сталкиваются криптовалюты.
Если вас это пугает и вы боитесь входить в криптосистему, не волнуйтесь. Над проблемой закрытого ключа постоянно работают, и многие биржи становятся все более и более безопасными, даже если вы не контролируете там свой закрытый ключ. Я не рекомендовал бы вам оставлять слишком много денег на бирже, но по статистике вне бирж было потеряно больше монет, чем на них. Это говорит о том, что люди не справились с хранением и обработкой своих закрытых ключей, а не потеряли доступ к средствам на биржах. Это похоже на информацию об авиационных катастрофах. Самолеты намного безопаснее, чем автомобили, но если самолет падает, то об этом узнает весь мир. Однако при этом каждый год случаются миллионы автомобильных аварий со смертельным исходом, но слышим мы о них не так часто.
То же самое происходит и с информацией о потерях на биржах и об управлении своими закрытыми ключами.
Мы рассмотрели большую часть из того, что такое блокчейн и криптовалюты, узнали, как работает майнинг и что такое кошелек. А теперь давайте поговорим о некоторых проблемах, с которыми может столкнуться блокчейн.
Глава 7
Форки и атаки
Поскольку блокчейн – это сообщество, время от времени какая-то часть этого сообщества не соглашается с тем, что должно произойти. Мы уже рассматривали брошенные блоки как регулярно случающиеся происшествия. Тем не менее сообщество может сделать что-то более организованно, и попытаться разветвить блокчейн на две цепи, чтобы реализовать идею атаковать блокчейн целиком. Давайте сначала поговорим о так называемых форках (от англ. fork – ответвление), а затем рассмотрим, что такое атаки.
Что такое форк?
Форк, или разветвление, означает, что консенсус в сообществе разделился на два или более блокчейна из-за относительно радикального изменения базового протокола.
Всякий раз, когда предлагается обновление исходного кода блокчейна для того, чтобы эти изменения вступили в силу, необходимо запустить софт или хард-форк. Иногда это может быть что-то маленькое, как простое обновление, но иногда речь идет о чем-то глобальном, как о совершенно новой монете.
Что такое софт-форк?
Софт-форк работает скорее как обновление существующего протокола. Старые версии по-прежнему доступны, но в этих старых версиях отсутствуют некоторые новые функции. Используем уже знакомый пример с WhatsApp: когда он обновляется, но вы не хотите устанавливать обновления, это означает, что вы не сможете использовать некоторые новые функции. Вы НЕ потеряете своих друзей и все равно можете писать все так, как привыкли. То же самое касается и софт-форка.
Софт-форк работает как новое обновление и является ОБРАТНО СОВМЕСТИМЫМ. Поэтому блокчейн обычно НЕ разветвляется на разные ветви.
Однако есть и исключения. Например, обновление SegWit, которое Биткоин продемонстрировал в августе 2017 года. SegWit был софт-форком (обновлением) протокола Биткоин. Для пользователей это был софт-форк, однако в это обновление было включено несколько функций, которые бы полностью разветвляли всех майнеров, которые не обновились до нового консенсуса. Это было скорее исключением из правил, и вообще, такие софт-форки случаются на регулярной основе в целях улучшения функциональности блокчейна.
Что такое хард-форк?
Хард-форк работает более радикально. Снова воспользуемся аналогией с WhatsApp: представьте, что ваши друзья недовольны некоторыми функциями WhatsApp, но вместо обновления они решают использовать совершенно новое приложение. Это настоящий сплит
[16]/форк, так как вам нужно решить, к какой группе вы хотите принадлежать – к WhatsApp, к новому приложению или и к тому и другому. Если ваши друзья не хотят использовать оба варианта, то вам придется выбирать, потому что эти приложения НЕ совместимы друг с другом.
Хард-форк вызывает сплит или разветвление блокчейна, потому что он НЕсовместим с предыдущими версиями.
Хард-форки встречаются довольно редко, но если они появляются, то привлекают пристальное внимание, ведь люди должны решить, на какую сторону перейти. Известный хард-форк произошел на платформе Эфириум в июле 2016 года, после того как в июне 2016 года атакующий сумел украсть около 70 миллионов долларов в Эфире в обход цифрового смарт-контракта. Хотя часть сообщества решила «отменить» нападение, другая часть указала на то, что «код – это закон», то есть даже если произошло что-то нежелательное, не следует нарушать всю систему, поскольку в первую очередь был согласован код в блокчейне. В результате появилось разветвление на Эфириум (ETH) и Эфириум Classic (ETC). По иронии судьбы, действительное разветвление, которое ответвилось от истории изменений, сохранило свое первоначальное название Эфириум.