Как устроен блокчейн?



Блокчейн — это децентрализованный реестр данных, на базе которого работают все известные криптовалюты. Однако сфера применения данной технологии не ограничивается одними только цифровыми валютами и может применяться в любом направлении, где пригодятся взаимосвязанные информационные блоки. 

Также стоит иметь в виду, что на рынке существуют криптовалюты, основанные на альтернативных блокчейну технологиях. Например, DagCoin, ByteBall и уникальная криптовалюта IOTA базируются на платформе направленного ациклического графа (DAG). В сетях подобных криптовалют нет блоков: транзакции связываются напрямую друг с другом, где каждая новая транзакция подтверждает одну или несколько предыдущих.

Ключевые составляющие блокчейна:

Блок: любой блокчейн состоит из цепочки блоков — баз данных, куда записывается информация обо всех одобренных транзакциях в сети, что делает их своего рода регистром. Максимальный размер блока — 32 МБ (максимальный размер сообщения в Р2Р протоколе), однако во многих случаях, например, в сети Bitcoin, из соображений безопасности размер блока ограничен 1 МБ. Все блокчейн-сети начинают свою работу с первичного блока (Genesis block), к которому присоединяются все последующие блоки.

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

Транзакция: процесс передачи данных в блокчейне, в роли которых зачастую выступают криптовалюты, является транзакцией. Для проведения транзакции в сети Bitcoin необходимо иметь вход, или адрес, с которого отсылаются данные; выход, или адрес, на который отсылаются данные; а также электронную цифровую подпись (ЭЦП), которой подписывается транзакция.

Узел или нода: любой компьютер, использующий Р2Р-протокол для поддержания работы блокчейна, считается узлом или нодой. В блокчейне работает несколько типов нод: ноды консенсуса, которые подтверждают транзакции и добавляют новые блоки согласно правилам, заданным консенсусом сети (в Bitcoin-сети они называются майнерами); ноды-аудиторы или полные ноды, которые постоянно подключены к сети и отвечают за хранение и синхронизацию всей истории транзакций блокчейна; и облегченные или SPV (Simplified Payment Verification) ноды, которые хранят неполные данные блокчейна, и используются для работы приложений или программ, например, кошельков. Также в блокчейне, в зависимости от их алгоритма консенсуса, могут работать мастерноды и суперноды. Мастернода — это специально настроенная полная нода, которая используется для выполнения уникальных функций, таких как приватные переводы или раздача вознаграждения майнерам. Супернода — это высокопроизводительный узел, благодаря которому обеспечивается безопасность и функциональность сети, поддержка легких и мобильных кошельков, а также приложений третьих сторон.

Алгоритм консенсуса: поскольку публичные блокчейн-сети являются децентрализованными, то для принятий решений, например, о включении транзакций в блок, и дальнейшем включении блока в цепочку, нодами используются механизмы консенсуса. Данные механизмы позволяют группе участников прийти к единому решению через процесс голосования в пользу большинства. Существуют множество алгоритмов, используемых в блокчейне, среди которых самые популярные — это доказательство работы PoW (Proof of Work), доказательство владения PoS (Proof of Stake) и задача византийских генералов BFT (Byzantine Fault Tolerance), а также их модификации.

Хэширование: это процесс использования криптографического алгоритма, который упрощает и ускоряет проверку целостности данных, записываемых в блок. Хэш-функция принимает на вход любые данные (файл, текст, картинку, двоичный код) и генерирует из них последовательность букв и цифр фиксированной длины — хэш. При этом одинаковые данные всегда дают в результате одинаковый хэш, а разные — в идеале, разный (бывают очень редкие случаи совпадения, и это считается уязвимостью криптографической функции). Таким образом, функция, воплощающая алгоритм и выполняющая преобразование, называется «хэш-функцией», исходные данные называются «входным массивом», «ключом» или «сообщением», а результат преобразования называется «хэшем», «хэш-кодом», или «хэш-суммой».

Электронная цифровая подпись (ЭЦП): используется для подписания транзакций. Для работы ЭЦП сеть должна поддерживать асимметричное шифрование, которое использует два ключа: один для шифрования (открытый и публичный), другой для расшифровывания (закрытый и приватный). Оба ключа математически связаны друг с другом, и более подробно о них мы расскажем далее. ЭЦП являются доказательством того, что все транзакции были совершены только настоящими владельцами.

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

Чем обоснован высокий уровень безопасности блокчейн-сетей?

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

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

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

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

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

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

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

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

Как проводятся транзакции с криптовалютами

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

Также стоит понимать, что криптовалют, как таковых, не существует. Нельзя показать на какой-то физический объект, файл на жестком диске или строчку кода и сказать: «Это биткоин». Когда речь идет о держателях криптовалют, то на самом деле говорится о записях транзакций между различными адресами. Соответственно баланс кошелька — это вычисление всех осуществленных операций с этого адреса с той или иной криптовалютой. В блокчейне для этого используют такие термины, как вход (Input) — запись о том, с какого адреса были получены криптовалюты; и выход (Output) — адрес, на который криптовалюты были отправлены.

На примере биткоина рассмотрим, как происходят транзакции в блокчейне. Биткоин-кошелек, хранящий, к примеру, 2 биткоина, содержит не две отдельные монеты, а так называемые «неизрасходованные выходы транзакций» или UTXO (Unspent Transaction Output) — «остатки» предшествующих отправленных и полученных транзакций. Всякий раз, когда пользователь совершает транзакцию, пришедшая или отправленная сумма записывается в блокчейн как UTXO. Эти записи не содержатся на каком-то конкретном адресе или кошельке, они разбросаны среди множества транзакций и блоков. Кошелек вычисляет баланс пользователя путем сканирования блокчейна и нахождения всех UTXO, принадлежащих этому адресу. Другими словами, каждая биткоин-транзакция состоит из различных, более мелких сумм биткоина. Поэтому если нужно отправить 0.2 BTC, алгоритм селекции монет в Bitcoin может отправить транзакцию с 0.3 BTC во вход и создать два выхода, из которых 0.2 BTC будут направлены получателю, а 0.1 BTC вернется на кошелек в качестве «сдачи».

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




Загрузка комментариев…