Блокчейн для чайников, крипта для кофейников: учимся доказывать, майнить и добывать газ. Часть 2

Дата публикации: 10.11.2023

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

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

Звучит пугающе, но на самом деле всё не так уж и страшно. Например, в конце 2021 года блокчейн Ethereum весил 175 Гб, но для того, чтобы стать полноценной нодой, достаточно было скачать 130 Гб данных к себе на жёсткий диск.

Ethereum (Эфириум, от англ. Ether – «эфир») – криптовалюта и платформа для создания децентрализованных онлайн-сервисов на базе блокчейна (децентрализованных приложений), работающих на базе смарт-контрактов. Реализована как единая децентрализованная виртуальная машина. Концепт был предложен Виталиком Бутериным в конце 2013 года, сеть была запущена 30 июля 2015 года.

Спасибо, «Вики»: ru.wikipedia.org

Спрашивается, зачем нам вообще скачивать и хранить у себя эти 130 гигов данных? Разумеется, чтобы зарабатывать. В данном случае, как вы уже, наверное, догадались, речь идёт о криптовалюте.

 

Кто такой майнер?

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

А чтобы блокчейн рос, как раз и нужны майнеры. Так называют тех, кто на своих компьютерах рассчитывает новые блоки и добавляет их в блокчейн. За каждый новый блок сеть обычно выдаёт некую премию в виде своей криптовалюты.

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

Например, у Васи есть 1 биткоин и он решил перевести его Пете – это транзакция (и о них мы тоже уже говорили в первой части). Майнер фиксирует эту транзакцию, добавляет в следующий блок и, когда количество транзакций в блоке достигнет определённого числа, в этом новом блоке происходят расчёты хэшей (ну, вы уже поняли, где об этом почитать, да?) и он добавляется в блокчейн. За проделанную работу майнер получает свою криптокопеечку.

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

 

Кто такой валидатор?

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

Есть лишь один нюанс: в отличие от майнера, это не человек, а комплекс программного обеспечения. Человек или команда лишь запускают его, настраивают и контролируют.

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

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

 

Алгоритмы консенсуса

Вкратце о них мы уже упоминали, а теперь посмотрим также, к чему они применяются на практике. Названия большинства таких алгоритмов начинаются со слов «доказательство чего-либо» (proof of…). Осталось понять, кто кому и что доказывает.

Когда майнер добывает новый блок, чтобы его приняли и записали в блокчейн, он предоставляет остальным участникам сети определённые доказательства того, что всё записанное им безопасно и достоверно.

Сегодня существует много разных алгоритмов консенсуса, но упомянуть стоит парочку самых известных. Первый – это, конечно же, Proof-of-work (или «доказательство работы»). Создавая новый блок, майнер выполняет большое количество математических расчётов по поиску хэша криптографической функции, этот самый хэш он и предоставляет всем в качестве доказательства проделанной работы (сделанных вычислений). Все эти вычисления одновременно и хороши (чтобы взломать блокчейн, нужны такие вычислительные мощности, каких и на свете-то нет), и плохи (вести эти расчёты долго, дорого и энергозатратно). Это то, что делает майнер, о котором мы писали парочкой абзацев выше. Он считает. И подтверждает транзакции.

Второй по популярности алгоритм консенсуса – это Proof-of-stake («доказательство доли владения»). В случае с этим алгоритмом процесс майнинга, то есть расчётов, вообще отсутствует. Вместо вычислений доказательством выступает определённое «замороженное» количество криптовалюты данной сети, принадлежащее ноде. Вкратце: если у тебя есть крипта (столько, сколько нужно) – ты можешь подтверждать транзакции – и ты являешься валидатором. В данном случае у нас нет проблем с «долго-дорого считать хэш», зато остаётся опасность централизации: если в руках некоторого количества валидаторов «осядет» много криптовалюты, они будут иметь возможность влиять на всю сеть.

 

Смарт-контракты

Смарт-контракт (англ. Smart contract – умный контракт) – компьютерный алгоритм, предназначенный для формирования, управления и предоставления информации о владении чем-либо. Первой страной, на государственном уровне подтвердившей юридическую силу смарт-контрактов, стала Беларусь.

Спасибо, «Вики»: ru.wikipedia.org

Прежде чем вы возмущённо воскликните: «А это ещё что такое и зачем мне это знать?!», сразу анонсируем: это договор (например, на владение чем-либо), записанный в виде программного кода и интегрированный в блокчейн. А ещё такой договор имеет реальную юридическую силу как минимум в одной стране – в Беларуси.

На самом деле на начальном этапе, при разработке, смарт-контракт – это, скорее, шаблон договора. Можем представить себе пример самого простого умного контракта, у которого изначально есть пустая строка и две функции – getString, которая показывает, что сейчас в этой строке записано, и setString, которая устанавливает в эту строку новое значение. Даже такой простенький смарт-контракт имеет право на существование и может быть записан в блокчейн.

Собственно, давайте представим, что мы его разработали, добавили в блокчейн (он получает уникальный адрес) – и теперь любой пользователь, подключившийся к этой сети, по адресу нашего смарт-контракта, может вызывать его функции. Представим себе, что некий абстрактный Вася (ну, тот самый, который две страницы тому назад переводил Пете 1 биткоин) вызывает метод setString и передаёт туда значение «Петя – тупица» (видимо, из-за того биткоина у них вышел конфликт). В этом случае в блокчейне создаётся транзакция на изменение строки в этом смарт-контракте. После того, как транзакция будет добавлена в очередной блок майнерами, Петя по адресу этого смарт-контракта может вызвать метод getString, прочитать сообщение и узнать, что он тупица (и это подтвердил не один майнер, а целый пул валидаторов).

Обиженный Петя может и сам вызвать функцию setString, куда передаст значение «Вася сам такой» – и опять создастся новая транзакция. Но то, что Петя – тупица, останется в истории человечества навсегда.

Применительно к этой теме транзакция – это как раз таки изменение состояния базы данных блокчейна, в том числе какого-либо из смарт-контрактов.

 

Криптовалюты

В целом, криптовалюта – это цифровые деньги, внутренняя валюта какой-либо сети блокчейна, с помощью которой, например, вознаграждают майнеров и которой владеют валидаторы. Любая крипта – максимально эфемерная штука, у неё нет ни материальной, ни электронной формы, по сути дела, это просто число, обозначающее количество данных расчётных единиц, которое записывается в соответствующей позиции информационного пакета протокола передачи данных. Впрочем, если учесть, что один «эфемерный» биткоин (валюта сети Bitcoin) стоит сейчас 3 251 304, 99 не эфемерных рублей, кое-какая (весьма впечатляющая!) ценность у них всё-таки имеется!

Различают «коины» (coins) и «токены». Первые – это, собственно, валюта сети. Например в Etherium это эфиры, в Bitcoin – биткоины и так далее. А вторые, токены –  это криптовалюта, которая реализована внутри блокчейна с помощью смарт-контракта.

Чтобы чётко разграничить эти два понятия, приведём простой и полезный пример. Как мы уже говорили, в сети Bitcoin основная валюта – это биткоины. Чтобы ими можно было пользоваться в других сетях как средством платежа, разрабатываются смарт-контракты. Например, в сети Etherium есть смарт-контракт, который называется 0хbitcoin или Wrapped bitcoin, и он запущен в обращение. Так вот, оригинальный «биткоин» существует только в сети Bitcoin, в любой другой сети «биткоин» будет являться смарт-контрактом. То есть, по сути, это как акция компании Bitcoin, которую можно купить и продать в сети Etherium.

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

 

Газ

Газ – это та самая комиссия, которая выплачивается майнеру за то, что он включил вашу транзакцию в блок и навсегда записал ваше действие в блокчейне. Почему именно «газ»? Это понятие произошло от английского слова gas, то есть «топливо» – то самое топливо, на котором работает блокчейн. В газе измеряется объём работы, которую необходимо выполнить майнерам, чтобы включить транзакции в блок.

С газом всё обстоит просто: кто платит больше – тот едет первым (чем больше газа предложить майнеру, тем раньше он включит вашу транзакцию в блок). Газ всегда платится в монете сети (Ethereum, Bitcoin, etc.). Когда мы хотим выполнить какую бы то ни было транзакцию, мы говорим (либо за нас это делают алгоритмы), какое количество газа мы готовы заплатить за то, чтобы нашу транзакцию включили в следующий блок. И майнеры, конечно же, в первую очередь будут обрабатывать самые дорогие транзакции. Это та самая «криптокопеечка», которую они зарабатывают, поэтому они заинтересованы в выборе более дорогих операций.

Но вот вопрос: откуда эта копеечка поступит майнеру? Ещё точнее – откуда она возьмётся у нас, чтобы мы заплатили майнеру?

Есть два пути. Первый: самому быть майнером (в идеальном мире блокчейна все пользователи являются частью сети и так или иначе майнят себе валюту). Второй вариант: купить с помощью фиатных денег (рубли, доллары, евро, тенге…) и положить в свой криптокошелёк, а из него – заплатить майнеру.

 

Криптокошелёк

На самом деле криптокошелёк – это всего-навсего некий адрес в блокчейне с данными о транзакциях, которые совершены от его имени. Генерация кошелька происходит посредством алгоритмов шифрования (sha-256 в Bitcoin, Ethash в Ethereum), которые позволяют получить приватный и публичный ключ. Публичный ключ хранится непосредственно в блокчейне, к нему всегда есть доступ у любого пользователя сети. А вот приватный ключ всегда остаётся у создателя кошелька. И с помощью пары приватного и публичного ключа происходит подписание транзакций.

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

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

 

Вместо заключения

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

Спасибо Дмитрию Зайцеву за помощь в подготовке материалов этого цикла :)


Автор: Ольга Зайцева

Поделиться:
Появилась идея для новости? Поделись ею!

Нажимая кнопку "Отправить", Вы соглашаетесь с Политикой конфиденциальности сайта.