Основы
July 21, 2022

Всё, что нужно знать о криптовалюте (Часть 2)

Глава 2 - Как работает блокчейн?

Что такое блокчейн?

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

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

Вероятность того, что два фрагмента данных дадут вам одинаковый результат хеш-функции, стремится к нулю. То есть, если кто-то попытается изменить старый блок, его хеш также изменится, а значит, и хеш следующего блока тоже будет другим, и так далее. Следовательно, понять, был ли изменен блок, очень просто, ведь изменены будут и все следующие за ним блоки.

Иллюстрация цепочки блоков (блокчейна) с их внутренним содержанием

Важно отметить о необходимости загрузки всего блокчейна на накопитель участника сети. Любой желающий может осуществлять валидацию (проверку) транзакций и подписей с помощью криптографии с открытым ключом. Когда нода (узел, участник сети) получает блок, она выполняет ряд проверок. Если что-то является недопустимым, блок им отклоняется.

Когда нода получает валидный (правильный) блок, она копирует его и распространяет этот блок на другие ноды. Они, в свою очередь, делают то же самое, пока блок не распространится по всей сети. Такой же процесс выполняется и для неподтвержденных транзакций, то есть тех, которые были объявлены, но еще не добавились в блокчейн.

Как блоки добавляются в блокчейн?

Поскольку блокчейн держится на взаимосвязанных между собой блоках, целостность всей блокчейн-сети подрывается в случае записи хотя бы одной ложной информации. В то же время в такой распределенной системе отсутствует администратор, который бы поддерживал работу главной бухгалтерской книги системы. В связи с этим возникает вопрос: что выступает в качестве гаранта честной работы всех участники сети?

Сатоши предложил систему Proof of Work (Доказательство выполнения работы), которая дала возможность любому пользователю выдвигать блок на добавление в блокчейн. Чтобы выдвинуть блок, пользователи должны предоставить вычислительные мощности для решения задач, установленных протоколом.

Proof of Work – это проверенная схема достижения консенсуса среди пользователей, но далеко не единственная. Альтернативы, такие как Proof of Stake (Доказательство доли владения), продолжают тестироваться, однако они пока не достигли уровня реализации в их истинной форме.

Отличие PoW от PoS

Как работает майнинг криптовалюты?

Изобразим процесс майнинга. Если майнер найдет решение криптографической задачи с помощью специальных видеокарт, то созданный им блок добавится в блокчейн. В результате он получит вознаграждение в валюте блокчейна. Это вознаграждение он получает за счет того, что в формируемый им блок в начало добавляется транзакция, где на биткоин-адрес майнера добавляется фиксированное количество монет. Также помимо фиксированного вознаграждения майнер получает все комиссионные сборы, включенные в каждую из транзакций в блоке.

Схематичное изображение майнинга

Задачи, которые майнеры должны решать, требуют постоянного вычисления хеша данных блока для получения числа, которое должно быть ниже определенного значения. Хеширование с помощью односторонней функции означает, что, имея выходные данные, угадать входные данные практически невозможно. И наоборот: при наличии входных данных проверить выходные данные очень легко. Таким образом, любой пользователь может проверить, что майнер создал валидный блок и отклонить невалидные блоки. В последнем случае майнер не получит вознаграждения и впустую потратит свои ресурсы.

Могут ли криптовалюты масштабироваться?

Криптовалюты могут быть безопасными и устойчивыми к взлому лишь в том случае, если все ноды регулярно синхронизируют копию блокчейн-сети. И чем ниже требования к синхронной активности участников, тем проще процесс присоединения новых участников.

Таким образом, блокчейн, ориентированный на добавление маленьких блоков каждые десять минут, предпочтительнее, чем тот, который добавляет один огромный блок каждые пять минут. Вариант с большим блоком предполагает ноды с наличием высокопроизводительных компьютеров, чтобы поддерживать регулярную синхронизацию и подталкивать маломощные устройства к отключению. Подобный подход в итоге приводит к большей централизации, поскольку конкуренция в сети становится всё меньше.

Но с маленькими блоками мы не можем достичь большого количества транзакций в секунду (TPS). Кроме того, в периоды с большой нагрузкой на сеть добавление блоков в блокчейн займет больше времени. Это неудобно, если вы хотите произвести быструю оплату, но ради децентрализации приходится идти на компромиссы.

Эта проблема называется дилеммой масштабируемости. Хорошо масштабируемая система может легко адаптироваться к повышенной нагрузке. Блокчейны же масштабируются плохо. Увеличение пропускной способности за счет блоков большего размера подрывает всю цель распределенной сети.

Чтобы увеличить TPS без ущерба децентрализации, применяется подход офчейн-масштабирования. Он включает широкий спектр решений (централизованных и децентрализованных), которые позволяют совершать транзакции без регистрации в блокчейне.

Кто принимает решения по программному обеспечению криптовалюты?

Криптовалютные сети работают в формате добровольного согласия. Никто не заставит вас запускать программное обеспечение против вашей воли. Хороший протокол отличается полностью открытым исходным кодом, который пользователи могут проверить и убедиться в честности и безопасности системы.

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

Некоторые обновления будут иметь обратную совместимость, что даст возможность обновленным нодам взаимодействовать со старыми – это называется софтфорк. В случае с обновлениями без обратной совместимости старые ноды будут отключены от сети, если не обновятся – это называется хардфорк.

Пример софтфорка и хардфорка сети биткоин