User Эллеонора Керри
Эллеонора Керри
41 уровень

О криптовалютах. Not so creepy crypto, часть первая: технология блокчейн

Статья из группы Random
В последнее время одной из самых горячо обсуждаемых новостных тем связанных с 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. Часть вторая: криптовалюты и майнинг
Что ещё почитать?

Группа General:

Серверы. Ликбез для чайников

Революция на рабочем месте: какие профессии будут востребованы в будущем

5 вызовов для развития искусственного интеллекта


Группа Java Developer:

Стоит ли учить Java в 2017 году? Отвечает Коди Вебер

Топ 5 библиотек машинного обучения для Java

Регулярные выражения в Java

Комментарии (12)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Alex B Уровень 13, Москва, Россия
2 ноября 2017
Спасибо за статью. Побежал майнить
kruvvtor Уровень 40, Москва, Россия
2 ноября 2017
А если злой гений через вирус будет подвешивать свои замочки (печати) в цепочку?
Anastasiia Уровень 20, США Expert
1 ноября 2017
сейчас в Мексике проходит главная конференция года разработчиков эфириума, if you do speak English, check the link :) https://www.youtube.com/watch?v=Yo9o5nDTAAQ
Anastasiia Уровень 20, США Expert
1 ноября 2017
Хорошая статья и спасибо за нее, правда «когда страница заканчивается создается хеш» еще больше всех запутает. Это одна их небольших проблем, продавая продукт на блокчейне, владельцу крупного бизнеса нужно объяснить как ребенку, чтобы он захотел его применить у себя, что попрежнему не у многих получается.
LeoJames Уровень 40 Expert
31 октября 2017
/* Комментарий удален */
Владислав Уровень 40, Киев, Украина
31 октября 2017
Всё равно сложно :(