Skip to content

📚 Antony Lewis article "A gentle introduction to blockchain technology" has been translated into Russian

Notifications You must be signed in to change notification settings

maks-sh/A-Gentle-Introduction-To-Blockchain-Technology

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Содержание

ВВЕДЕНИЕ

Первая статья о криптовалюте Bitcoin вышла в 2009 году. С тех пор разговоры о самой криптовалюте и о технологиях, задействованных для реализации Bitcoin, не умолкают ни на секунду. Чтобы более подробно разобраться в том, как же устроена эта криптовалюта мною была переведена статья Antony Lewis “A Gentle Introduction To Blockchain Technology”. Это статья о технологии блокчейн, на которой построен Bitcoin.

Люди часто используют термин «Технология блокчейн», подразумевая при этом совершенно разные вещи:

  • блокчейн, используемом в Bitcoin,
  • блокчейн, используемый в других виртуальных валютах или
  • блокчейн, используемый в умных контрактах.

Все эти представления о технологии имеют общие особенности:

  • Обычно содержат данные о финансовых транзакциях
  • Постоянное копирование (репликация) данных среди многих компьютеров в режиме реального времени
  • Как правило, используется в одноранговой сети (P2P).
  • Используется шифрование и механизмы цифровой подписи для подтверждения идентификации, аутентификации а также для соблюдения прав доступа на чтение и запись.
  • Используются механизмы, которые усложняют изменение старых записей или, как минимум, помогают легко отследить эти изменения.

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

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

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

1 Экосистема блокчейн, используемая в Bitcoin

Экосистема блокчейн, используемая в Bitcoin, представляет собой достаточно сложную систему, из-за того, что в ее основе лежат две основные цели:

  • Кто угодно может создать запись в цепочке блоков;
  • Система должна быть анонимна и децентрализована, то есть не должна иметь контролирующий элемент.

Эти цели существенно повлияли на становление Bitcoin.

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

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

2 Введение в блокчейн Bitcoin

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

Категория Вопрос Подход Bitcoin Другие варианты
Хранение данных Как должны храниться данные? Блокчейн База Данных
Распределение данных Как будут распределяться новые данные? Одноранговая сеть Клиент-Серверная модель; Иерархическая модель
Механизм согласования Как будут решаться конфликтные ситуации? Правило наиболее длинной цепи Надежные узлы или супер-узлы (Не требуется в централизованных сетях )
Обновление механизмов Как будут меняться правила? Предложение по улучшению Bitcoin (для создания правил); Голосование по мощности майнинга (для внедрения новых правил) Централизованные обновления; Обязательство по договору
Критерии участия Кто может подтверждать транзакции и блоки? Кто может читать данные? Кто может добавлять новые блоки? Псевдоанонимно, открыто Доверяемое лицо, предварительно проверенные лица
Механизмы защиты Как предотвращать действия злоумышленников? Доказательство выполнения работы (Не требуется в централизованных сетях) Подтверждение доли
Мотивационная схема Как мотивировать создателей блоков? Награждение за создание блока Обязательство по договору; Финансирование третьей стороной
Мотивационная схема Как мотивировать хранение блокчейна? Не учитывается Обязательство по договору; Финансирование третьей стороной
Мотивационная схема Как мотивировать узлы? Не учитывается Обязательство по договору; Финансирование третьей стороной

3 Частные и публичные блокчейны

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

  1. Публичные блокчейны

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

  2. Частные блокчейны

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

    Как правило, многие механизмы в такой сети просто не нужны – они заменяются правовыми договорами

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

4 Хранение данных: Что такое блокчейн?

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

  • Текст: например, какую-нибудь историю.
  • Информацию о странице: наверху, как правило, располагается заголовок книги, а иногда - глава и ее номер; внизу обычно пишут номер страницы. Такую информацию принято называть «Метаданные».

Аналогично книге, каждый блок включает в себя: ⎯ Содержание блока, на примере Bitcoin – это финансовые транзакции, в том числе транзакция о зачислении награждения майнеру за создание блока. ⎯ «Загаловок», который содержит данные о блоке. В Bitcoin загаловок содержит некоторую техническую информацию, ссылку на предыдущий блок и ключ – хеш, рассчитанный на данных, содержащихся в конкретном блоке. Ключ является доказательством выполнения работы. Более подробно об этом мы поговорим чуть позже.

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

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

Рисунок 1

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

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

Рисунок 2

Рисунок 2 – Ключ основывается на ключе предыдущего блока и данных, которые содержатся в текущем блоке

5 Обмен данными: Как распространяются новые данные?

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

5.1 Клиент-серверная модель

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

Рисунок 3

Рисунок 3 – Клиент-серверная модель

5.2 Одноранговая сеть

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

В целом, распространение данных в одноранговой сети можно сравнить с распространением сплетен, потому что каждый узел имеет 100% данных (или число максимально близкое к этому) и получает новые данные от узлов, с которыми он связан. В некоторых ситуациях одноранговая сеть менее эффективна, чем клиент-серверная модель, так как данные реплицируются много раз: появление новых данных на одном узле влечет за собой множество шумных «сплетен». Однако при этом каждый узел является более независим и в некоторой степени может продолжать свою работу даже если он теряет связь с остальными узлами. Помимо этого, одноранговые сети являются более надежными ввиду того, что отсутствует центральный сервер, который можно контролировать. Поэтому закрытие одноранговых сетей гораздо сложнее. Именно одноранговая сеть используется в экосистеме Bitcoin. Однако как убедиться, что такая сеть не подвержена влиянию злоумышленников? Как уберечь сеть от распространения в ней ложной информации?

Рисунок 4

Рисунок 4 – Одноранговая сеть

6 Консенсус: Как решать конфликты?

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

Допустим в определенный момент времени все узлы сети синхронизированы, то есть на каждом узле хранится один и тот же блокчейн, последний блок которого, например ..47 по счету. Если трое майнеров примерно в одно и тоже время создадут следующий ..48 блок, то какой из них должны будут принять все остальные узлы?

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

Рисунок 5

Рисунок 5 – Какой блок считать действительным?

Как же решить эту проблему?

Правило длинной цепи. В системе bitcoin данный конфликт решается правилом, которое называется «правило наиболее длинной цепи»

Допустим до некоторого узла первой дошла информация о создании блока ..48а. Данный узел может построить новый блок на блоке 48а. Попробуем создать блок ..49а:

Рисунок 6

Рисунок 6 – Считаем первый дошедший до узла блок действительным и строем после него блок ..49а

Однако через несколько секунд к этому узлу приходит информация о создании блока ..48b. В таком случае узел пока не будет вставлять этот блок в блокчейн, хранящийся на нем, а только лишь проследит за ним. В случае, если до него в очередной раз дойдет информация о создании блока ..49b, узел будет действовать по правилу наиболее длинной цепи, которое гласит, что каждый узел должен рассматривать и считать действительной более длинную цепочку «б» и игнорировать короткие цепочки блоков – цепочки «а» и «с». Таким образом, данный узел перестанет создавать блок ..49а и начнет пересоздавать его после блока 49b, т.е. создавать блок 50b.

Рисунок 7

Рисунок 7 – Правило длинной цепи: следует строить новый блок на наиболее длинной цепи

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

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

7 Обновления: Как изменяются правила?

В экосистеме Bitcoin существуют два типа правил:

  • Технические правила для транзакций (Заполнены ли все необходимые поля? В правильном ли формате заполнены поля? И другие)
  • Бизнес правила (Вы пытаетесь потратить больше Bitcoin, чем у вас есть? Вы пытаетесь дважды потратить одни и те же Bitcoin?)

Правила меняются. Как эти правила изменяются со временем и как участники сети соглашаются с этими правилами? Возможна ли ситуация, когда половина участников сети считает, что сделка действительна, а вторая половина с этим не согласна из-за разногласий в логике?

В частной контролируемой сети данная проблема решается очень легко, например, следующим образом: «Все должны перейти на новые правила к 31 января».

Однако, как обстоят дела с решением этой проблемы в публичных неконтролируемых сетях, в том числе и Bitcoin?

В случае экосистемы Bitcoin возможны два этапа обновления правил:

  1. Предложение об изменении.

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

  2. Принятие изменений

    Обновления могут быть загружены узлами и майнерами самостоятельно, но только если они сами этого захотят (представьте, что новое обновление снижает сумму вознаграждения за создание нового блока с 25 BTC за блок до 10).

Но как мотивировать узлы обновлять протокол? Если большая часть сети (а в Bitcoin большая часть определяется вычислительной мощностью) принимает решение запустить новую версию программного обеспечения, то обновившиеся майнеры могут создавать новые блоки с гораздо более высокой скоростью, чем те, которые не были обновлены. Таким образом, меньшинство вынуждено обновить программное обеспечение, иначе они становятся неактуальными. Поэтому майнеры, которые имеют высокую вычислительную мощность получают большую выгоду от новых обновлений.

8 Доступ для записи: Как контролировать тех, кто может записывать данные?

Любой желающий может скачать ядро программного обеспечения Bitcoin. Достаточно просто зайти на сайт https://bitcoin.org/en/download и нажать на кнопку «Bticoin core».

После этого ваш компьютер сможет осуществлять все функции узла, а именно:

  • Подключение к сети Bitcoin
  • Загрузка блокчейна
  • Хранение блокчейна
  • Прослушивание транзакций
  • Проверка транзакций
  • Передача действительных транзакций
  • Проверка блоков
  • Передача действительных блоков
  • Создание блоков.

Весь исходный код «Bticoin core» открыт для всех и доступен на ресурсе Github, поэтому также можно скачать его оттуда, скомпилировать и запустить самостоятельно.

Следует обратить внимание на то, что чтобы начать работу с системой Bticoin, не потребуется какой-либо регистрации, входа или подачи заявок. Достаточно просто загрузить программное обеспечение и начать работу.

9 Защита: В чем сложность для злоумышленников?

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

Рисунок 8

Рисунок 8 – Участники сети Bitcoin

Что могут и чего не могут злоумышленники?

Недобросовестный майнер может:

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

Недобросовестный майнер не может:

  1. Создавать биткоины из воздуха (Только блокчейн злоумышленника будет содержать эту транзакцию. Остальные узлы ее не подтвердят).
  2. Украсть биткоины с вашего счета.
  3. Производить транзакции от Вашего имени.

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

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

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

Пример того как можно это сделать:

  1. Создать два платежа с одними и теми же биткоинами: одними оплачивать услугу или товары, а вторыми - отправлять на счет, который вы можете контролировать
  2. Опубликовать транзакцию оплаты услуги или товара.
  3. Когда опубликованная транзакция попадет в честный блок, продавец или исполнитель услуги высылает вам товар или исполняет услугу.
  4. После этого тайно создать более длинную цепочку из блоков, чем та цепочка, где находится транзакция оплаты товара или услуги, включив в нее второй созданный в первом пункте платеж.
  5. Опубликовать длинную цепь. Остальные узлы, действуя по правилам длинной цепи, проигнорируют честный блок с оплатой продавцу или исполнителю и продолжат создавать новые блоки на наиболее длинной цепи.
  6. Первоначальный платеж продавцу будет недействительным, поскольку эти биткойны уже будут потрачены в длинной цепи.

Рисунок 9

Рисунок 9 – Действия 1,2,3: Транзакция «Оплата продавцу» входит в блок

Рисунок 10

Рисунок 10 – Действия 4,5: Злодей публикует более длинную цепочку блоков, содержащую вторую трату

Рисунок 11

Рисунок 11 – Действие 6: Первоначальный платеж теперь недействителен, так как биткоины потрачены в блоке ..48

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

Не стоит забывать, что эта проблема существует только в публичных блокчейнах.

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

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

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

Подбор такого ключа называется доказательством выполнения работы (proof of work). Публикуя блок с таким хешем, майнер доказывает остальным узлам что была проделана работа по его нахождению.

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

Рисунок 12

Рисунок 12 – Каждые 2016 блоков (примерно каждые 2 недели) Bitcoin сеть регулирует специальный параметр, определяющий сложность создания новых блоков

ЗАКЛЮЧЕНИЕ

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Статья автора Antony Lewis «A gentle introduction to blockchain technology». Электронный ресурс: bitsblocks.net
  2. Статья автора Antony Lewis «A gentle introduction to bitcoin mining». Электронный ресурс: bitsblocks.net
  3. Статья автора Романа Худорожкова «Как blockchain изменит нашу жизнь?». Электронный ресурс: rusbase

About

📚 Antony Lewis article "A gentle introduction to blockchain technology" has been translated into Russian

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published