Что такое блок биткоин
Биткоин за 5 минут: Блок
Базовой составляющей блокчейна является блок — единичная порция связанных в цепочку данных (информации).
Как мы уже знаем, блокчейн Биткоина — это некий бухгалтерский реестр или книга ( ledger), в которой записаны абсолютно все транзакции, совершенные с монетами биткоина.
И если блокчейн — это бухгалтерская книга, то отдельные страницы этой книги — это и есть блоки блокчейна, в которых записываются финансовые транзакции и которые связаны между собой посредством хэшей так, что в заголовке каждого последующего блока хранится хэш-код предыдущего.
В этой громадной бухгалтерской книге невозможно ни удалить страницу (блок), ни изменить её содержание, поскольку сразу же изменится содержание заголовков всех последующих страниц (блоков) и любой участник распределенной сети Биткоина, у которого хранится копия этой книги-блокчейна, сразу же заметит попытку подмены. Собственно, сама сеть Биткоина это заметит автоматически и отвергнет попытки внести все изменения в блокчейн.
Таким образом, все блоки, записанные в блокчейн, изменить уже невозможно! Вообще, любое редактирование записанной в блокчейн информации (транзакций) запрещено. Можно только дописывать новые блоки.
Это важное свойство блокчейна, как распределенного реестра финансовых транзакций. Как невозможно исправить записи или удалить пронумерованные страницы в прошитой и скрепленной печатью бухгалтерской книге, так и невозможно это сделать в блокчейне.
При этом блокчейн гораздо надежней любой бухгалтерской книги или любого банковского реестра операций, поскольку копии блокчейна хранятся на множестве компьютеров (серверов) в распределенной одноранговой сети.
Но, вернемся к блокам блокчейна Биткоина.
Каждый блок состоит из заголовка ( Head), в котором хранится служебная информация, и полезной информации ( Payload) — собственно записи транзакций.
В заголовке блока содержится следующая информация:
– версия блока;
– дата и время создания блока;
– хэш-код заголовка блока;
– хэш-код предыдущего блока;
– хэш-код всех транзакций в блоке;
– специальные параметры nonce и bits, которые записываются при майнинге (подробнее об этом я расскажу с статье «Биткоин за 5 минут: Майнинг»).
Для понимания нам важны хэши в заголовке.
Сам хэш-код заголовка блока — это и есть то, что связывает предыдущий блок с последующим в цепочке блокчейна. Он записывается как хэш-код предыдущего блока в заголовок последующего.
Также в заголовке хранится хэш-код транзакций текущего блока. Он подсчитывается с использованием алгоритма, известного, как дерево Мёркла (Merkle tree) или бинарное дерево хэшей.
Тут следует учесть, что поскольку дерево бинарное (подсчет идет парами), то на кажом шаге должно быть четное число элементов. Поэтому если, на каком-то этапе получается нечетное количество хэшей, то последний просто дублируется для получения пары.
Именно заголовки позволяют отслеживать целостность содержимого самих блоков.
Теперь перейдем к собственно содержимому ( Payload) блока…
Как уже говорилось ранее, в блокчейн биткоина записываются транзакции. Собственно сама транзакция имеет вид:
В действительности транзакция, записанная в блок блокчейна, сложнее, поскольку протокол Биткоина оперирует такими понятиями, как Входы (Inputs или In) и Выходы (Outputs или Out).
Входы (In) — это транзакции, пополняющие биткоин-адрес, а Выходы (Out) — это суммы, которые переводятся на другие биткоин-адреса.
Поэтому в Биткоине новая транзакция через Входы (один или несколько) ссылается на Выходы (один или несколько) предыдущих транзакций и формирует Выходы (также один или несколько) для использования в последующих транзакциях.
Собственно структура записи транзакций в блокчейне Биткоина содержит:
– количество используемых Входов;
– хэш-код и индекс каждого Входа, а также служебная информация;
– количество используемых Выходов;
– суммы Выходов, а также служебная информация;
– метка времени транзакции.
Эта, на первый взгляд сложная конструкция, на самом деле показывает реальное движение денег между биткоин-адресами и дает возможность достаточно быстро подсчитать баланс любого адреса на основании его Входов и Выходов.
Примечание: На самом деле, баланс определяется путем подсчета всех непотраченных Выходов (т.н. UTXO — unspent transaction output) этого адреса.
Возможность указать сразу несколько Выходов в транзакции — это очень важная вещь, потому что транзакцию (точнее — ее Выход) можно использовать как Вход только один раз и только целиком.
Например, если имеется входящая транзакция (Вход) на 1 биткоин (BTC), а нужно перевести куда-то 0,8 BTC, то создается транзакция с одним Входом и двумя Выходами: на 0,8 BTC — собственно перевод и на 0,2 BTC — возврат на биткоин-адрес отправителя.
Еще важный момент — это т.н. комиссия за транзакцию ( transaction fee), которую получают майнеры — люди, которые записывают новые блоки транзакций в блокчейн.
В транзакции, как правило, сумма Выходов меньше суммы Входов, а получившаяся разница отправляется на адрес майнера, записавшего блок с этой транзакцией в блокчейн. Это и есть его вознаграждение (помимо платы за создание нового блока или собственно майнинг).
Как происходит запись нового блока в блокчейн, я опишу в статье «Биткоин за 5 минут: Майнинг».
Подписывайтесь и читайте!
Ранее по теме «Биткоин за 5 минут»:
Блокчейн Биткоина — что это такое, принцип работы
Блокчейн — технология, на которой построен Bitcoin и другие криптовалюты. Это учётная книга, которая находится на ПК каждого пользователя сети и регулярно обновляется. В неё могут вписываться различные сведения — начиная от финансовых сделок с криптовалютами и заканчивая персональными сведениями пользователей.
Что такое блокчейн Биткоина?
Мир узнал о технологии blockchain с созданием криптовалюты Биткоин в 2009 году. Разработчиком считается некий Сатоши Накамото, личность которого не удалось установить до сегодняшнего дня.
Определение blockchain состоит из двух элементов:
Блок состоит из следующих элементов:
Во вновь появившихся блоках операции могут повторяться или различаться. Если сложность и длина цепи идентичны, выбирается блок, который появился ранее. Операции в сети, оставшиеся в «отвергнутой» ветке, переходят в статус неподтверждённых. Транзакция по переводу Bitcoin становится в очередь, а после — частью нового блока.
Принцип работы блокчейна на примере
С проведением новых транзакций блоки выстраиваются в цепочку. При создании нового блока требуется считывание сведений с прежних элементов цепи. Информация в blockchain постоянно накапливается и создаёт единую систему данных, содержащую огромную базу сведений об уже проведенных транзакциях.
Работа блокчейна похожа на торрент-сети, которые функционируют по принципу равноправия (P2P). При скачивании файла из Интернета пользователь не использует центральный ПК или общую базу данных. Сведения качаются по частям от различных участников торрент-сети.
На таком же принципе построена и технология блокчейн, где операции между участниками проводятся без посредника. Это обеспечивается тем, что пользователи объединены одной цепочкой блоков.
Принцип действия рассмотрим на примере груши. Один человек передаёт фрукт другому. Они являются участниками перемещения груши. Если получатель не видел факта передачи, он всё равно найдёт грушу в кармане. Для проведения такой операции не нужен посредник — в ней участвует только два человека. Получатель фрукта вправе передать его другому человеку и так далее. Вещь может быть любой, но суть от этого не меняется.
Если груша изображена на картинке, ситуация усложняется. Получатель не знает, передавалась ли картинка другому человеку или она сохранена в памяти телефона, загружена в Интернет и скачана миллионами людей. При проведении цифровой транзакции возникают те же вопросы.
Чтобы избежать путаницы, создаётся журнал транзакций — сделок, которые касаются «цифровой» груши. Но такой документ должен кто-то заполнять и вести. Если это будет какой-то один человек или компания, она может вносить изменения в структуру, что является недопустимым. В такой ситуации требуется другое решение.
Выход из сложной ситуации — создание копии учётного журнала для хранения на каждом из ПК пользователей. Теперь все перемещения «груши» фиксируются в каждом из вариантов журнала. При таком подходе риск обмана минимален. Никто не сможет передать другому участнику эту же грушу, ведь транзакция будет разоблачена другими участниками. Чем больше людей участвует в сети, тем точнее проверки и тем надёжнее система.
Виды блокчейна
Блокчейн бывает трёх типов:
Алгоритм работы блокчейна Биткоина
Блокчейн Bitcoin работает по такому алгоритму:
Суть технологии блокчейна Биткоина
При формировании цепи важным моментом считается создание и закрытии блока. Каждый элемент цепи содержит ключ, который требует расшифровки. До этого закрытие блока не происходит. Майнеры, которые добывают виртуальные деньги, используют для этих целей процессоры, видеокарты, ASIC-чипы и другое оборудование. Последнее берёт на себя опцию вычислений для поиска хеша (подписи). После её подбора происходит закрытие блока.
Цепочка блокчейн распределена и поддерживается миллионами компьютеров по всей планете. Работу цепи обеспечивают майнеры и другие участники — узлы сети. В состав входят и полные узлы — участники, имеющие на своих ПК кошельки Биткоин с информацией обо всех транзакциях. Из-за повышения объёма занимаемой памяти количество полных узлов Биткоин снижается, что замедляет процесс обработки данных об операциях.
Надёжность работы цепочки блокчейн обеспечивают специальные алгоритмы:
На формирование блока в цепи блокчейн уходит 10 минут. За это время майнеры, участвующие в добыче криптовалюты, находят подпись, а проверка выполняется без задержек по времени. Недостаток алгоритма в том, что для обеспечения его функционирования требуются огромные мощности. Как результат, за проведение транзакций взимаются комиссии. Что касается Proof-of-Stake — это обновлённый алгоритм, но применяется он в блокчейне Эфириума.
Плюсы и минусы блокчейна Биткоина
Блокчейн Биткоина имеет ряд плюсов:
Сферы применения блокчейна
Технология блокчейн может использоваться не только в финансовом мире, но и ряде других сфер жизни:
Больше о блокчейне Биткоина в видео ниже:
Как формируется блок Bitcoin?
В структуру блока входит запись об операциях и прошлом элементе цепи. Особенность следующего блока — наличие персонального решения, которое отражается в заголовке. Достижение цели занимает много времени, а процесс ложится на плечи майнеров — участников сети, получающих премию за новый блок.
Для попадания блока в blockchain требуется найти параметр хеша заголовка, показатель которого ниже заданного предела. Цель майнера — подобрать верные входные данные путём перебора вариантов. Для решения задачи применяется мощное оборудование — видеокарты, ASIC-чипы.
Если участник нашел подходящий вариант, он информирует другие узлы о получении блока, который проверяется остальными элементами цепи и включается в цепь blockchain. Количество вариантов для заголовка определяет сложность вычислений. Чем выше этот параметр, тем большие мощности требуются для поиска решения и добычи блока. Изменение сложности происходит с периодичностью в 2016 блоков, то есть раз в две недели. На добычу одного блока уходит в среднем десять минут.
С ростом мощности сети повышается сложность добычи и наоборот. Это значит, что показатели сложности и мощности находятся в соотношении, которое остаётся неизменным. Не меняется и временной промежуток, необходимый для создания нового блока.
В процессе добычи бывает, что майнеры получили несколько решений для одного блока. Как результат, имеет место разветвление цепи. В дальнейшем подлинной признаётся та ветка, которая имеет большую длину, а другая прекращает существование. Если транзакция оказалась в короткой ветви, она исключается из цепи и возвращается к числу не подтвержденных операций. Через время она включается в следующий блочный элемент.
Структура блока Биткоина — заголовок
Как отмечалось, блок состоит из заголовка и перечня операций. Свойства заголовка:
Структура блока Биткоина — транзакции
Следующий элемент блока — операции, которые осуществляются в криптовалютной сети. Они имеют вид перечня, который формирует блок и становится составляющей цепи. Каждый пункт списка (транзакция) показывает источник и получателя перевода.
Информация по адресату указывается с помощью публичного ключа. Для применения зачисленных средств получатель создаёт новую операцию, в которой берутся деньги с прошлой транзакции и направляются иному адресату. Для подтверждения права на перечисляемые средства требуется цифровая подпись, позволяющая проверить подлинность каждой операции в сети.
Список транзакций в блоке реализуется с помощью таких свойств:
Пример блока Биткоина
С учетом приведённой выше информации можно привести пример блока Биткоина:
Характеристики блока Биткоин
Главные характеристики блока Bitcoin:
Что такое блок Биткоина и за что отвечает его размер
Количество обрабатываемых транзакций в сети Биткоина зависит от одного важно параметра — размера блока. Блоки являются главной составляющей цепочки блокчейна, в которой есть информация о переводах BTC вообще за всю историю Биткоина. И хотя главные свойства блоков были заданы ещё анонимным создателем криптовалюты Сатоши Накамото, дебаты о целесообразности ограничений об их размере не утихают даже сегодня.
Что такое блок в Биткоине?
Блок — это информация о транзакциях в сети Биткоина. Каждый блок можно представить себе в виде страницы в бухгалтерской книге (блокчейне). В случае с криптовалютами страницы нельзя «вырвать» — блоки заносятся в блокчейн навечно.
Представьте, что бухгалтер записал все транзакции за последние десять минут в бухгалтерскую книгу, прошил её и поставил печать. Теперь страницу не получится вырвать, ведь все заметят нехватку данных и не захотят пользоваться такой книгой.
Забавный момент: сразу после запуска сети Биткоина в 2009 году размер его блоков составлял 36 мегабайтов. 14 июля 2010 года он был уменьшен до одного мегабайта.
Почему размер блока так важен?
Согласно замыслу создателя криптовалюты Сатоши Накамото, бухгалтерская книга пополняется новыми страницами раз в 10 минут. Иногда немного быстрее, иногда чуть медленнее, но в среднем это именно 10 минут. Размер каждой страницы (блока) ограничен, то есть количество записываемых туда транзакций тоже ограничено. В итоге у нас есть два лимита: на число транзакций в блоке и периодичность его нахождения.
Если желающих отправить биткоины будет слишком много, блоки заполняются очень быстро, и образуется очередь на попадание в них. Говоря умными словами, увеличивается мемпул — очередь из переводов в сети Биткоина, которые ждут подтверждения. Это приводит к росту комиссий за транзакций, ведь кто больше заплатит, тот быстрее попадёт в блок и проведёт перевод.
В начале 2013 года блоки Биткоина были заполнены в среднем на 125 килобайтов. К маю 2015 года этот показатель уже вырос до 425 килобайт, при этом блоки стабильно заполнялись полностью несколько раз в день. То есть транзакций пользователей было достаточно.
Зачем нужно расширять блоки?
За несколько лет существования Биткоина предложение увеличить размер блока звучало десятки раз. Сторонники этого действия считают, что только так BTC сможет выдержать огромную нагрузку при распространении во всём мире. С увеличенными блоками в сети криптовалюты будет проводиться больше транзакций за тот же период времени, то есть ей сможет пользоваться больше людей.
4 мая 2015 года главный научный сотрудник Bitcoin Foundation Гэвин Андресен опубликовал статью, которую в оригинале можно найти по запросу «Why increasing the max block size is urgent». В ней разработчик заявил, что увеличение размера блока — необходимая мера для Биткоина.
Если количество транзакций будет действительно огромным, сеть криптовалюты станет слишком загруженной и непродуктивной. В конце концов люди перестанут использовать Биткоин, потому что время проведения каждого перевода монет вырастет в разы.
Чуть позже Андресен заявил, что займётся разработкой аналогичного клиента Bitcoin XT, первая версия которого была выпущена в декабре 2014 года ещё одним критиком размера блока Биткоина Майком Хёрном.
В июне 2015 года руководства крупнейших китайских пулов для добычи криптовалюты F2pool, BTCChina, Antpool, Huobi и BW подписались под предложением увеличить блок Биткоина из-за растущего количества транзакций. В этом же месяце Андресен опубликовал предложение по улучшению Биткоина (BIP — Bitcoin Improvement Proposal) 101. В нём разработчик предложил отказаться от фиксированного ограничения на максимальный размер блока и перейти на новую модель, в котором лимит будет расти с предсказуемой скоростью.
Что было в BIP 101?
BIP 101 предполагал увеличение размера блока до 8 мегабайтов с 11 января 2016 года. Затем лимит должен был удваиваться каждые 730 дней вплоть до января 2036 года.
Считалось, что благодаря увеличению блока до 8 мегабайтов Биткоин сможет обрабатывать до 24 транзакций в секунду. BIP 101 понравился многим криптоэнтузиастам и крупным майнинговым пулам. И всё же у нововведения были противники. Создатель Bittorrent Брам Коуэн заявил, что столь резкие изменения в протоколе криптовалюты противоречат её главной идее.
16 августа 2015 года BIP 101 был интегрирован в код Bitcoin XT. И хотя апгрейд поддерживался многими, его интеграция не смогла придать популярности альтернативному клиенту Биткоина.
Какие предложения по увеличению размера блока понравились комьюнити?
Bitcoin XT, Bitcoin Unlimited, Bitcoin Classic и Segwit2x были популярными инициативами в 2016 году, однако ни одна из них не привела к расширению лимита блока Биткоина.
В январе 2016 года было решено отказаться от поддержки BIP 101 в Bitcoin XT и просто перейти на единовременное увеличение размера блоков до 2 мегабайтов. Это привело к серьёзному падению интереса к Bitcoin XT. К январю 2017 года менее 30 нод (узлов) в сети клиента поддерживались майнерами. Ещё год назад их количество превышало 650 единиц.
Через месяц был создан Bitcoin Classic путём форка оригинального Биткоина. Инициатива получила поддержку от Coinbase, Bitstamp, Circle, Роджера Вера и Гэвина Андресена. К сожалению, в 2017 году майнеры Bitcoin Classic не смогли достичь консенсуса по поводу очередного форка, после чего создатели криптовалюты решили прекратить её разработку, высказав свою поддержку Bitcoin Cash.
Примерно в одно время с созданием Bitcoin Classic консорциум крупнейших майнинговых пулов, кошельков и бирж Bitcoin Roundtable обсудил планы в отношении протокола Segregated Witness. Речь шла об увеличении размера блока оригинального Биткоина до 2 мегабайтов.
Что такое SegWit?
Segregated Witness или SegWit это улучшение, в котором размер блока освобождается за счёт выноса данных о подписях транзакций во внешний блок, именуемый «отдельным свидетелем». Именно так переводится словосочетание «Segregated Witness». Благодаря этому в один блок можно вместить почти в четыре раза больше транзакций.
31 марта 2017 года было предложено ввести SegWit путём софтфорка, за ним должен был состояться хардфорк SegWit2x для расширения размера блока до 2 мегабайтов. Детали апгрейда были обсуждены во время нью-йоркского соглашения, в котором приняли участие 58 крупнейших владельцев узлов сети Биткоина. Сообщается, что на тот момент они контролировали 83.28 процента мощности всех вычислительных устройств для добычи криптовалюты.
SegWit был принят в августе 2017 года, а вот по SegWit2x майнерам так и не удалось достичь консенсуса — апгрейд был отменён за несколько дней до его предполагаемой интеграции.
Почему разделился блокчейн Биткоина?
Консенсус в комьюнити по поводу «правильного размера блока» так и не был достигнут. В августе 2017 года состоялся хардфорк криптовалюты, который привёл к разделению её блокчейна.
1 августа 2017 года под эгидой Роджера Вера был создан Bitcoin Cash. В форке Биткоина размер блока был увеличен до 8 мегабайтов, при этом интеграция Segregated Witness была отклонена. В мае 2018 Bitcoin Cash прошёл через новый хардфорк, в ходе которого блоки вовсе были увеличены до 32 мегабайтов. Правда, эта инициатива так и не сделала альткоин популярнее оригинального Биткоина. Да и смысла в ней не было. Как оказалось, майнеры BCash всё так же используют блоки на 2 мегабайта, ведь в большем объёме нет смысла.
Заглядывайте в чаш крипточат миллиардеров. Там обсудим все подробности.
Блокчейн для самых маленьких [part.1]
Дымков Аркадий Андреевич
Программист / системный и бизнес аналитик
Это введение для тех, кто хочет наконец-то разобраться в блокчейне простым языком, без криптографии, протоколов, не сильно вникая в хэш-функции, зато с примерами из реальной жизни.
Технология, которая, по-видимому, окажет наибольшее влияние на развитие в различных областях экономики в ближайшие 10 лет, уже существует! И это не BigData, не соцсети, не робототехника и даже не Machine Learning. Это технология, лежащая в основе криптовалют, цепочка блоков транзакций- блокчейн. Сейчас именно блокчейн является инструментом для создания нового поколением интернета, и он несет огромный потенциал для любого бизнеса.
Скорее всего вы будете удивлены, узнав, что :
Можно ли применить распределенный реестр в огороде у бабушки?
Как одна технология переворачивает всю устоявшуюся индустрию бизнеса и экономики?
Так, теперь давайте определимся, что мы узнаем в part.1 :
Как работает эта технология? Проблема централизации на Олегах
Как работает магическая машина или же хэш-функция
Алгоритм защиты от модификаций печатных номеров
Настолько ли идеален блокчейн? Уязвимости идеальной системы
Как это работает?
Блок 1: Проблема централизации на Олегах
Сначала определимся, какую проблему решает технология?
Давайте представим, что у вас есть лучший друг Олег, который путешествует по всему миру. Он звонит вам в Сызрань с просьбой перекинуть немного мани, т.к. кэш Олега куда-то исчез. Вы, как порядочный друг, соглашаетесь помочь Олегу и идете в банк. Там вы сообщаете, что вам надо перевести N-ую сумму на счет Олега.
Банкир проверяет ваш текущий баланс на предмет наличия этой суммы и переводит деньги на счет Олега. Вы с чувством выполненного долга звоните Олежке и сообщаете, что лавэ перечислены.
И так, что сейчас произошло? Давайте рассмотрим ситуацию более детально.
Вы и Олег доверили банку управлять вашими деньгами. Не было никакой физической пересылки. Нужно всего лишь было изменить реестр, который не контролируешь ни ты, ни Олег. И это проблема существующих систем. Для установления доверия между людьми мы зависим от третьей стороны, которой может выступать банк. Мы зависимы от посредника для установления доверия друг с другом.
Блок 2: Какую угрозу несет централизация?
Такие системы подвержены взломам, и случай такого системного сбоя может привести к потери средств и личной информации пользователей этой системы, и это уже происходило не раз. Если приводить реальный пример из истории, то на ум сразу приходит развал СССР в 1991 и потери 40-ка млн вкладов пользователей банков.
Централизованная / Децентрализованная системы
Блок 3: Какая система позволит решить эти проблемы?
Существует ли система, которая будет содержать реестр между юзерами этой системы, исключая посредников? Да, существует. И наверное, как вы уже догадались, это решение — блокчейн. Для существования P2P систем нужно достаточное количество пользователей желающих не зависить от третей стороны. И такое минимальное количество юзеров: 3 человека — для учета и содержания реестра.
Как это работает?
Блок 1: Давайте рассмотрим принцип работы на примере
Возьмем 10 людей, которые решили отказаться от банков и других систем третей стороны.
По общему согласию каждый из 10-и постоянно имеет все подробности счетов других участников, но без знаний их личности
Шаг 1: Пустая папка
Каждый из 10 участников будет иметь пустую папку, которая будет заполняться страницами. Эта коллекция страниц формирует реестр транзакций.
Шаг 2: Транзакции
Каждый сидит с пустым листом и ручкой в руке и готов записать любую транзакцию, которая произойдет внутри этой системы.
#2 send 10$ to #5
Transaction’s registration page
Для создания транзакции, номер 2 сообщает всем: « Я, номер #2 пересылаю #5 10$». Каждый из участников системы проверяет, имеет ли #2 достаточный баланс для произведения данной транзакции. В случае, если баланс номера #2 позволяет это сделать, то каждый делает запись у себя на странице. Это происходит до того момента, пока на странице не закончится место для записи новых транзакций
Предположим, что страница имеет вместимость 10 транзакций. Т.к. все заполняют одну и ту же информацию, место на страницах у всех кончится одновременно.
И вот настало время, всем отправить заполненную страницу в папку и создать новую страницу для ведения учета транзакций. И так повторять начиная с шага №2.
Шаг 4: Хранение страниц
Перед тем, как отправить страницу в папку на хранение, мы должны ее согласовать со всеми, идентифицируя ее уникальной печатью. Ставя такую печать на страницу, мы можем быть уверенны, что эту страницу никто не сможет изменить, отправляя ее в папку. Если все доверяют печати, значит и все доверяют содержимому страницы. И этот процесс самый затруднительный.
В терминологии блокчейна этот процесс называется «майнинг», но для простоты понимания на примере, обозначим его как процесс запечатывания.
Ранее посредник давал нам обещание, что написанное в реестре никогда не будет изменено. В распределенной и децентрализованной системе печать предоставляет доверие. Перед тем как понять, как мы будем продолжать это процесс дальше, нам надо ознакомиться с тем, как работает одна магическая машина.
Магия Хэш-фунцкий
Давайте представим, что у нас есть машина, которая защищена от внешнего воздействия. Если мы отправим коробку с неким содержимым на вход, то на выходе получим коробку с другим содержимым на выходе. Эта магическая машина называется хэш-функция.
Предположим, мы отправили на вход цифру 4, на выходе мы получим «cbaja». Как эта функция конвертировала цифру 4 в «cbaja»? Никто не знает. Более того, этот процесс необратимый. По конечному результату нельзя сказать, что было подано на вход. Но каждый раз, когда вы будете загружать цифру 4, на выходе вы будете всегда получать один и тот же результат.
Давайте рассмотрим другой случай. Что надо будет подать на вход это машине, что бы получить результат «c56c0ah»? Есть только один способ это узнать — перебрать все возможные значения, пока не получим данный результат.
Будем оптимистичны, и допустим через несколько тысяч попыток мы нашли это значение. В реальных условиях найти его экстремально сложно.
Основываясь на полученной информации, давайте сформулируем главные свойства этой машины.
Невероятная сложность нахождения input по output (входящего значения по полученному результату)
И простота проверки правильности входящего значения
Давайте запомним свойства этой машины или хэш-функции
Как использовать хэш-функцию для создания печатей?
Представим, что на вход мы подаем два значения. Первое значение «KEK», второе —рандомное значение, которое мы добавим к значению из первой коробки и направим на вход хэш-функции, а на выходе получим «Validol». Сможете ли вы угадать, какое значение содержится в второй коробке? Ситуация напоминает ранее рассматриваемый случай. Единственный способ вычислить это число — подбор всех чисел подряд.
Опять будем оптимистичны, и через сколько то тысяч попыток мы нашли значение второй коробки. Это значение было «LOL». Когда бы добавим «LOL» к значению «KEK» на выходе машины мы получим требуемое значение «Validol».
Т.е. значение «LOL» будет являться печатью к значению «KEK».
Мы создали страницу с значением «KEK». Что бы пропечатать эту страницу, т.е. защитить эту страницу от правок, мы ставим на ней печать с значением «LOL»
В терминологии блокчейна печатный номер это POW(Proof-of-Work). Он означает, что это значение есть доказательство проделанной работы для вычисления этого значения.
Если кто то из нашей группы захочет проверить было ли изменено содержимое страницы с транзакциями, все что ему требуется, это загрузить эту страницу и печатный номер этой страницы в магическую машину. Если на выходе будет требуемое значение, то содержимое страницы с транзакциями не изменено, но если output не соответствует требуемому результату, то эту страницу можно выкидывать, т.к. ее содержимое было изменено и ее больше нельзя использовать.
После определения печатного числа, на страницу ставится печать. Если кто нибудь когда нибудь попробует изменить страницы с транзакциями, то печатный номер позволит каждому проверить целостность информации на странице.
Теперь, когда мы знаем, как ставится печать на страницы, мы можем вернутся к тому моменту, когда у нас закончилось место на странице.
Майнинг
После того, как у всех закончилось место на странице, участники системы соревнуются между собой в вычислении печатного номера к странице, для того что бы ее вложить в папку. Как только первый участник вычислил этот номер, он уведомляет всех оставшихся. Все остальные в свою очередь проверяют правильность обнаруженного числа. Печатный номер, с которым соглашается большинство и будет являться подлинной печатью.
Тут перед нами встает логичный вопрос: почему же тогда каждый тратит ресурсы на вычисление, когда не знает, что кто то другой объявит его. Почему бы просто ждать объявления номера? Тут как раз таки в ход вступает стимулирование. Каждый, кто является частью системы блокчейна имеет возможность получать награду за проделанную работу. Первый, кто вычислит печатный номер будет награжден за потраченные ресурсы в виде вычислительной мощности и электроэнергии.
Допустим, один из участников сети, первым вычислил номер, за что будет награжден виртуальной валютой, за которую соревнуется каждый из участников сети, которая по большому счету берется из не откуда. То есть его счет увеличился на n-сумму виртуальной валюты без уменьшения баланса других участников. Награды способствуют продолжения работы сети.
А теперь давайте переведем нашу аналогию в реальные примеры. Страницы это блоки, а папка это цепочка страниц. Следовательно все это превращается в цепочку блоков — блокчейн.
Еще одно «НО»
Представим, что у нас уже есть 5 страниц с печатями в папке. Что если я вернусь назад к второй странице и изменю ее содержимое в свою пользу? Печатный номер позволит каждому определить несогласованность транзакций. Опять же, что если я подготовлюсь и заранее вычислю новый печатный номер для измененных транзакций и поставлю печать со своим выселенным номером на нем. Для предотвращения этой проблемы есть особенность в алгоритме вычисления печатного номера. Это есть защита от модификаций печатных номеров.
Вспомним пример с коробками. На деле мы подаем не две, а три коробки на вход магической машине. Одна содержит страницу с транзакциями, вторая печатный номер, который следует вычислить, а третья будет содержать печатный номер от предыдущей страницы.
С этим алгоритмом, мы будем уверены в том, что каждая страница зависит от предыдущей. Если кто то захочет изменить содержимое старой страницы, то ему необходимо будет изменить содержимое и печатный номер всех последующих страниц, что бы сохранить цепь согласованной.
Что произойдет, если из одной честной страницы, обманщик создаст новую нечестную цепь. На деле, он не сможет бороться в вычислительной мощи с другими 9ю честными участниками сети, и его цепочка никогда не сможет обогнать честную цепь, а истинной является та цепь, которая имеет наибольшую длину.
Атака 51%
Все системы имеют бэкдоры, и блокчейн не исключение. Самая известная уязвимость блокчейна это атака именуемая «Атака 51%».
Если пытаться объяснить ее простым языком, то рассматривая защиту от модификаций печатных номеров, которая приводилась выше, можно задать вопрос: А если у одного нечестного юзера вычислительная мощь будет больше, чем у остальных 9ых, то он сможет через n-ое время создать цепочку блоков начиная с 1-ого листа, которая сможет обогнать главную истинную цепь блоков.
Да, такая уязвимость есть. Сама идеология блокчейна подразумевает, что большинство участников сети не намерены «играть» не честно.
Для упрощения абстракции проблемы приведенной выше, скажем, что у каждого участника цепи вычислительные мощи одинаковые. Соответственно, когда 6/10 участников блокчейн системы сговорятся и захотят обмануть оставшихся 4ех юзеров, то через n-ое время они установят новую истинную цепочку блоков. Отсюда и идет название этой уязвимости. Как только количество нечестных юзеров станет 50%+, то блокчейн системе грозит опасность быть «обманутой».
Надо понимать, что в реальности сделать это практически нереально. Как говорится, время лучший показатель, и за все 11 лет существования BitCoin он ни разу не был «обманут» и не выводился из строя, при том, что на эту систему проводились атаки.
Так же, существует ещё пара теоретических уязвимостей блокчейна, с которыми вы сможете ознакомиться самостоятельно. Ссылка для ознакомления: Что угрожает блокчейн-сетям
Материала и мыслей, которые хочется донести очень много, и если все изложить в одну статью, будет скучно читать и может смешаться в кашу.