В последнее время одной из самых горячо обсуждаемых новостных тем связанных с IT остаются криптовалюты. Людей интересует заработок на росте курса и майнинге различных коинов, однако мало кто разбирается, что они собой представляют. И даже если вы захотите понять, о чём это, то обнаружите, что большинство статей о блокчейн и майнинге написаны теми, кто глубоко в теме и для тех, кто знаком с ней не понаслышке. Терминология и базовые понятия, используемые в статьях, подразумевают уровень знаний выше среднего. Мы же в этой серии материалов постараемся раскрыть принципы работы блокчейн и криптовалют, объясняя все буквально на пальцах. И сегодня предлагаем вашему вниманию первую часть — о технологии blockchain.
О криптовалютах. Not so creepy crypto, часть первая: технология блокчейн - 1
Разбираясь в сути технологии блокчейн (blockchaine) на ум приходит аналогия с каменным топором или копьем. Человечество долгое время использовало камни и палки по отдельности: палками копали, а камнями бросались в хищников или раскалывали ими орехи. Но, объединив их вместе, люди получили намного более эффективные орудия труда и оружие. Так и блокчейн — связка из базы данных и технологий шифрования дали в результате совершенно новый инструмент, который обладает новыми интересными свойствами. Дополнительное свойство блокчейн заключается в гарантировании целостности и неизменности сохраненных данных.

Как строится цепь

Принцип работы технологии блокчейн прост, как и все гениальное. Представьте себе блокнот, в котором записываются данные: дни рождений, заметки в личном дневнике, данные о переводе денег — что угодно. Когда страница (которую называют блоком) заканчивается, создается хеш её содержимого.
Хеш — это буквенно-цифровая строка, генерируемая специальным алгоритмом на основе отправленных в него данных. Она используется для проверки целостности и достоверности информации.
Мы не будем рассматривать «внутренности» алгоритма хеширования, а представим его себе как черный ящик. Ящик этот полезен тем, что при передаче в него любых данных он создает уникальную строку. К примеру, если мы передаем в него «12345», то на выходе получаем «F5», а если передадим «12354», то на выходе будет «2T1». И каждый раз, когда мы передаем в него одни и те же данные, мы получаем одни и те же результаты. Второе полезное свойство хеша заключается в том, что имея его на руках, получить вводные данные из него невозможно. Зато с его помощью можно проверить достоверность захешированных данных — если вам известен хеш передаваемой информации (обычно его делают общедоступным), то вы можете полученную запись прогнать через хеш-алгоритм и сравнить результат с имеющимся эталоном. Если хеши совпадают — то данные верны, а если нет — значит, они были повреждены или подвергались изменению.
О криптовалютах. Not so creepy crypto, часть первая: технология блокчейн - 2
Итак, получив хеш нашей страницы данных, мы отправляем ее в архив (базу данных), а хеш отложенной страницы добавляем первой записью на новую страницу. Таким образом, мы с помощью хешей связываем блоки данных в одну цепь: от самого первого до текущего. Отсюда собственно и происходит название блокчейн (цепь из блоков). Такая связь позволяет гарантировать достоверность данных в сохраненных блоках. Если кто-то попытается их изменить, то сохраненный в следующем блоке хеш не совпадет с хешем пересозданного блока.

Безопасность блокчейн — три варианта защиты

Впрочем, сам по себе хеш — только часть защиты. Ведь если кому-то очень захочется подменить данные, то он может перегенерировать хеши всех последующих блоков и подменить всю цепочку. Поэтому для дополнительной безопасности могут использоваться три разных варианта защиты цепочки данных: централизованный с доверенным центром сертификации, централизованный с недоверенным центром, и децентрализованный блокчейн. В первом случае каждый блок дополнительно подписывается сертификатом доверенного центра. Так что, проверив подпись можно убедиться, оригинальный блок или поддельный. В принципе, использование блокчейн в таком варианте это скорее дополнительная перестраховка, чем необходимость.
О криптовалютах. Not so creepy crypto, часть первая: технология блокчейн - 3
Во втором случае (если нет 100% уверенности в том, что центр сертификации не будет взломан) сгенерированные и подписанные хеши помещаются в независимое доверенное хранилище. Такое хранилище может только принимать новые данные, но не дает их редактировать или удалять. Третий вариант, децентрализованный блокчейн, интересней всего, так как именно он и используется в криптовалютах. В этом случае, когда набирается блок данных (он у всех идентичен), все участники сети начинают генерировать хеш. Но хеш не просто блока, а блока с печатью.

Без печати не действителен

Что за печать? Дело в том, что для обеспечения безопасности цепи данных нам нужно усложнить генерацию хеша для блоков. Для этого вводятся условия правильности хеша — он должен соответствовать каким-то параметрам. Например, каждый второй символ хеша должен быть нулем. Соответственно, для выполнения этого условия к блоку данных добавляется строка обеспечивающая нужный результат и «запечатывающая» блок. А так как хеширование это односторонний процесс, то мы не можем из заданных условий напрямую получить ее значение, и вынуждены искать нужную строку простым перебором значений. И именно процесс поиска печати называется майнингом — по аналогии с просеиванием песка в поисках крупицы золота. Когда один из участников сети находит печать, он рассылает ее остальным и те проверяют правильность решения. На этом этапе проходит дополнительная сверка данных блока. Если у всех (более 50% участников сети) все сошлось, а у кого-то нет, то блоки отказников считаются сбойными и они из сети скачивают правильные данные. Если же печать большинству не подошла, то она отбрасывается и уже ее создатель скачивает правильную версию блока.
О криптовалютах. Not so creepy crypto, часть первая: технология блокчейн - 4
Из-за сложности нахождения печатей, попытка подменить старый блок и перегенерировать все последующие блоки требует очень больших вычислительных мощностей. Из-за этого подмена данных злонамеренным одиночкой практически невозможна. Атака на свежесоздаваемый блок более реалистична. Но она возможна только в том случае если под контролем атакующего находится более 50 процентов пользователей состоящих в блокчейн сети (например, он является владельцем пула с которым работает много майнеров). Такой тип атак возможен только на «молодые» децентрализованные блокчейн сети, в которых участников еще немного. Если же сеть большая, то чтоб ее «перевесить» нужен очень-ооочень-ОЧЕНЬ большой пул, или сговор нескольких владельцев пулов охватывающих большую часть сети. Так как количество участников блокчейн сетей может меняется, в них предусмотрена автоподстройка сложности поиска хеша через равное количество выполненных блоков. Если вычислительная мощность сети растет, то задача усложняется, если мощность сети снизилась и поиск печати занимает много времени, задача упрощается. Так достигается нормальный темп работы сети — блоки с транзакциями регулярно запечатываются (в сети биткоин — раз в 10 минут) и начинаются поиски решения для следующей порции данных.

Промежуточный итог

У децентрализованных систем, по сравнению с централизованными, есть как свои преимущества, так и недостатки. Они более живучи в общем плане и не подвержены катаклизмам — от землетрясений и ураганов может пострадать часть участников сети (что снизит ее производительность), но сама система от этого не погибнет. В централизованной системе землетрясению достаточно разрушить датацентр, чтоб поставить ее на колени. В то же время децентрализованные системы подвержены количественным атакам. Достаточно получить контроль над более чем 50% участников, чтоб иметь возможность вносить в блоки выгодную вам информацию и удалять невыгодную. В централизованной системе для такого же уровня доступа нужно взломать очень хорошо защищенные центральные серверы. В общем, идеальной защиты нет, и меры безопасности нужно постоянно и неустанно совершенствовать любой системе. Not so creepy crypto. Часть вторая: криптовалюты и майнинг