Опубликован: 07.03.2018 | Уровень: для всех | Доступ: платный
Лекция 1:

Введение

Лекция 1: 12 || Лекция 2 >

Хеширование блоков

Теперь, когда познакомились с концепцией криптографических хэш функций и поговорили о SHA256, посмотрим, как это применяется к построению блока в блокчейн. Майнеры участвуют в процессе построения блока, и эти блоки добавляются в блокчейн, чтобы расширить блокчейн в будущем. Блок составлен из чисел: он имеет поле, которое называется данные, криптографический хэш, связанный с ним, и одноразовый номер.


Данный хэш имеет четыре ведущих нуля. Эти нули будут полезны в следующей лекции, так как они описывают, действителен ли блок. Этот хэш соответствует одноразовому номеру в этом блоке, или любому количеству данных и имеет четыре нуля. Это означает, что блок - действующий. Но если внести некоторые изменения, например, добавить единственный символ, получаем совершенно другой хэш. Криптографический хэш на самом деле дайджест любой информации, которую сжимаем в этот единый хэш. Итак, когда создается криптографический хэш для блока, в который включен лишний символ, то получается совершенно другой криптографический хэш. Этот хэш больше не имеет четырех ведущих нулей. Поэтому он недействителен. Необходимо найти способ, как заставить этот блок работать. Воспользуемся следующим способом: использование одноразового номера. Обычно это случайное число, которое используется, чтобы вычислить, как заставить конкретный блок выдать действующий хэш. В этом случае нужен хэш, имеющий четыре нуля в начале. Можно попробовать подобрать вручную. Например, один. Это даст другой хэш, но он не сработает. Попробуйте другой: два, но тоже не сработает. Можете пробовать снова и снова, или же можете заняться майнингом. В этом случае применяем компьютер для того, чтобы вычислить правильный одноразовый номер, который даст хэш с четырьмя нулями в начале. И мы нашли его. Это 71850. Этот процесс интересен тем, что, если поменять что-либо в хэше, например, попробовать другой номер блока, то получим совершенно другой криптографический хэш и блок не будет являться действующим. То есть всегда придется использовать эту комбинацию, чтобы получить четыре ведущих нуля. В этом весь смысл того, какое отношение криптография имеет к созданию блока и уверенности, что блок в блокчейн - действительный.

Как блок хэши работают в блокчейн. Теперь, когда известно, как создаются блоки, и как криптографическое хэширование связано с этим процессом, давайте свяжем вместе серию блоков, чтобы увидеть, как блокчейн использует все эти понятия вместе, чтобы сохранить целостность всей цепи. Блоки составляются хронологически. Один блок следует за другим: второй за первым, третий за вторым, и так далее. Смысл в том, что существует несколько элементов, которые являются общими в каждом из блоков. Как уже говорили, каждый блок имеет свой номер. Он так же имеет определенное количество данных и сопутствующий хэш. Но есть еще одно поле для заполнения - PREV. Это поле относится к хэшу, который включен в предыдущий блок.


Каждый блок в цепи криптографически связан со следующим блоком. Как вы видите, все блоки связаны вместе. Блок номер один имеет номер, определенное количество данных и криптографический хэш, соответствующий ему. Первый блок, поскольку он первый, не имеет какого-либо предыдущего хэша. Но блок два уже должен иметь хэш, связанный с предыдущим блоком. И, если обратиться к блоку три, то он имеет ссылку на хэш блока номер два. Это может продолжаться на всем протяжении цепи. Именно поэтому блокчейн великолепное изобретение. Если возникнет желание изменить какую-либо информацию в любом из блоков, например во втором, то блок два взломать не возможно, потому что хэш не действует и делает недействительным каждый отдельный блок, находящийся перед ним. Это так просто, что работает как эффект домино. Если блок будет взломан, он разрушит всю структуру впереди себя. Если есть желание укрепить эту структуру, то единственный способ - вычислить начальный номер, как делали это ранее. Можно просто заняться майнингом. Когда добывается блок, система высчитывает действующий хэш. Напомним, что он имеет четыре ведущих нуля. При попытке хэшировать блок номер три, у хэша не было четырех ведущих нулей. Поэтому он не действующий. Можно добывать этот блок. И необходимо будет делать это с каждым одиночным блоком на протяжении всей цепи, чтобы закрепить происходящее. Давайте поговорим о ключевых положениях, которые обсуждали. Очень важно иметь четыре ведущих нуля. Эти нули связаны с уровнем сложности, который так же связан и встроен в сеть блокчейн, которая определяет, насколько сложно получить эквивалентный криптографический хэш для блока. В данном случае уровень сложности требует получить криптографический хэш меньше, чем стоит перед нами цель, и для этой конкретной цели необходим объект, который имеет хотя бы четыре ведущих нуля. Уровень сложности продолжает возрастать, так как новые компьютеры добавляются в криптографическое хэширование, добавляющееся в сеть Биткоин. Высокая мощность хэширования заставляет повышать уровень сложности. И уровень сложности корректируется каждые две недели для того, чтобы удостовериться, что компьютеры, соревнующиеся за решение криптографических проблем, тратят не более 10 минут для добычи нового блока. Итак, компьютеры соревнуются за шанс быть вознагражденными и поместить новый блок в блокчейн. Они высчитывают требуемый начальный номер, чтобы получить криптографический хэш, который будет меньше требуемого объекта для уровня сложности. Давайте посмотрим, как это связано с безопасностью. Если кто-то захочет взломать какой-либо блок, например, блок номер три, и внесет в него изменения, он взломает не просто один блок, а все отдельные блоки, находящиеся над ним - блок номер четыре, пять, и так далее до конца цепи. Если кто-либо решит атаковать таким образом, они должны будут не просто добыть этот конкретный блок, но и каждый конкретный блок перед ним, при этом они должны быть быстрее, чем основная часть сети. У них должен быть по крайней мере пятьдесят один процент мощности всей сети, чтобы сделать действительным новый блокчейн, который они вынуждены будут создать с внесенными изменениями. И все это должно быть сделано в течение десяти минут, так как новые блоки создаются менее чем за это время. Блокчейн делает внешне простым каждое взламывание блока и при этом обладает невероятной мощностью.

Четыре составляющих биткоин

Первый компонент - программное обеспечение. Биткоин имеет свое собственное основное программное обеспечение. Это программное обеспечение определяет, что такое биткоин, и то, как передаются биткоины. Оно определяет, каковы правила, по которым биткоин считается действующим, кто может находиться в сети биткоин, а кто нет, и так далее. Все держится на программном обеспечении Биткоин. Основа программного обеспечения - криптография, и биткоин является криптовалютой. Как криптовалюта, биткоин использует криптографию, чтобы регулировать обмен биткоинов между сторонами и создание новых единиц биткоин. Если бы не криптография, биткоин бы не мог существовать. Есть программное обеспечение, использующее криптографию, чтобы контролировать передачу биткоинов и регулировать создание новых. Но оно должно опираться на средства технического обеспечения. Эти средства - тысячи майнеров, использующих компьютеры по всему миру. То есть тысячи компьютеров по всему миру используют программное обеспечение Биткоин или клиент Биткоин, что одно и тоже. Смысл в том, что программное обеспечение, работающее на тысячах компьютеров по всему миру, формируют средства технического обеспечения, о которых говорили. Но заключительный компонент, который связывает все вместе, это факт, что основа биткоина, то, что делает его возможным, это теория игр. Биткоин, в своей основе - игра, которая ведется майнерами по всему миру. Программное обеспечение Биткоин каждые десять минут выдает криптографическое испытание. Это криптографическое испытание включает в себя попытки найти одноразовый номер, который создаст хэш, для того, чтобы конкретный блок был действующим. Для этого он должен быть под определенным номером. Должно быть определенное число ведущих нулей, для того, чтобы можно было получить действующий блок. Итак, это вызов, который бросает программное обеспечение биткоин примерно каждые десять минут, для добычи нового блока транзакций. Майнеры запускают средства технического обеспечения, у них тысячи компьютеров по всему миру, поддерживающих программное обеспечение биткоин. Как только испытание выдано, начинается игра, и начинается гонка. В гонку вовлечены все майнеры, соревнующиеся друг с другом за право найти решение для этого одноразового номера, которое подойдет к хэшу для блока. Миллионы различных комбинаций, попытки найти ту самую комбинацию, которая даст одноразовый номер, подходящий хэшу для этого блока. В какой-то конкретный момент один из майнеров во всем глобальном сообществе решит криптографическое испытание и станет победителем гонки. Основная часть сообщества на тот момент играет очень важную роль - удостоверяет то, что данный блок - действующий. Это делает биткоин очень сильным, так как на одной стадии цикла майнеры соревнуются между собой, а на следующей стадии основная часть сообщества сплачивается, чтобы удостовериться, что это решение правильное. То есть это не только конкуренция, но и сотрудничество, так как они помогают друг другу удостовериться, что каждая отдельная транзакция работает. Если одноразовый номер правильный, это конкретное испытание называется доказательство выполнения работы. Если есть доказательство выполнения работы, которое удостоверяет, что был найден одноразовый номер для конкретной криптографической задачи, блок признается действительным и входит в блокчейн. Таким способом создаются новые блоки, и каждый блок включает в себя все транзакции, которые майнер решил добавить в этот блок. За задание майнер получил награду. На текущий момент это двенадцать с половиной биткоинов. Так создаются новые биткоины.


Лекция 1: 12 || Лекция 2 >
Дмитрий Жерлицын
Дмитрий Жерлицын
Украина, г. Донецк, Донецкий национальный университет, 2012
Евгений Егоров
Евгений Егоров
Казахстан