Важные новости

Блокчейн — что это такое? Описание и подробное руководство

Содержание

Блокчейн — что это такое? Описание и подробное руководство

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

Определение понятия термина блокчейн

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

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

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

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

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

Эта информация преобразуется в идентификатор, состоящий из двух символов. В дальнейшем он станет частью следующей ячейки. В рассматриваемом примере id КР будет использован в первой ячейке второй сроки и преобразуется до вида defKP. Объединение данных в единую цепочку значит, что если первоначально введённые данные изменить (к примеру, до вида abcAA), вся структура претерпит изменения.

Изображение базы данных, в которой каждая запись связана с последующей

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

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

Технология связи блоков

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

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

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

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

Роль децентрализации в системе блокчейна

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

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

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

Задача византийских генералов

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

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

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

Генералы смогут достичь успеха, только скоординировав свои действия.

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

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

Причина децентрализации блокчейна

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

Использование пиринговой сети

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

Схематическое изображение централизованной и децентрализованной системы.

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

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

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

Использование узлов (нодов) блокчейна

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

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

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

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

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

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

Принцип проведения транзакций

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

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

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

Технология не имеет традиционного понятия о паролях или именах. Владение здесь подтверждается путём применения криптографии с открытым ключом. Чтобы получить 1 биткоин от Кристины, Николаю понадобится приватный ключ. Имеется в виду случайный длинный набор цифр, угадать его невозможно, даже если в распоряжении человека будет несколько столетий. Но сам Николай, введя эту комбинацию цифр, может подтвердить, что средства принадлежат именно ему. Поэтому нельзя говорить этот ключ сторонним лицам.

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

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

Разработчик технологии блокчейна

Законченный вид технология получила в 2009 году, а стала общественным достоянием с появлением Биткойна — самого популярного на сегодняшний день и первого, кто опробовал на себе блокчейн. Но на её создание Сатоши Накамото (анонимный автор технологии) был вдохновлён более ранними предложениями и уже существующими разработками.

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

О сильных и слабых сторонах блокчейна

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

Сильные стороны технологии

В White Paper отмечено самое весомое преимущество Биткоина — это возможность совершения финансовых операций, минуя посредников. Блокчейны, появившиеся после Bitcoin, открыли пользователям возможность передачи разной информации. Отсутствие посредников — это снижение комиссий и рисков для самих участников сделки.

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

Система Биткойна насчитывает в настоящий момент больше 10 500 узлов во всех уголках планеты. Возможность нанесения ущерба сети подобных масштабов сводится к 0 — даже при условии атаки злоумышленников, обеспеченных по последнему слову техники и имеющих многолетний опыт взлома. Важно учитывать, что приведено только видимое количество узлов. Существует множество невидимых для сети.

Слабые стороны технологии

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

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

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

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

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

Принцип работы блокчейна

Добавление блоков в блокчейн

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

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

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

Принцип майнинга: доказательство выполненной работы, или PoW

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

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

Конечно, выполнение задач требует больших мощностей для вычисления. Майнер не может узнать вход в кэш, но ему доступна его проверка путём проведения хеширования. Если блок действителен, пользователь получает вознаграждение, установленное системой. Первым в мире блокчейном, позволяющим добывать монеты за выполненную работу, был Биткойн. Сегодня механизм PoW используют многие блокчейны.

Преимущества механизма Proof of Work:

  • Эффективность, проверенная временем: на 2020 год это самый устойчивый консенсусный алгоритм, с помощью которого переведены миллиарды долларов;
  • Открытость: установка проверочного узла или добыча монет доступны каждому пользователю;
  • Децентрализация: добыча криптовалюты — это соревнование майнеров по созданию блоков. Вычислительная мощность никем не контролируется.

Недостатки механизма Proof of Work:

  • Расходы: для добычи монет нужно много электроэнергии;
  • Барьер входа повышается: сложность задач повышается пропорционально количеству участников. Это требует наличия мощного оборудования;
  • Атаки 51%: децентрализация —это надёжная защита. Но способы получения большей доли вычислительных мощностей существуют, что может подорвать всю безопасность блокчейна.

Принцип стейкинга: доказательство доли владения, или Proof of Stake

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

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

Обычно используются блокчейны с DPoS, а не чистые, поскольку в этом случае пользователи могут проводить голосования за узлы, валидирующие блоки. В настоящий момент на PoS в версии ETH 2.0 переходит блокчейн Ethereum.

Преимущества Proof of Stake:

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

Недостатки Proof of Stake:

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

Другие типы консенсусных алгоритмов

Описанные выше PoW и PoS — это наиболее популярные консенсусные алгоритмы. Но на них список не завершается. Есть ряд гибридных вариантов, сочетающих обе системы и методы, кардинально отличающиеся по принципу работы.

Необходимости углубления в их детальное описание нет, достаточно перечислить:

  • Delayed Proof of Work — принцип отложенного доказательства выполненной работы.
  • Leased Proof of Stake — доказательство арендуется в доле владения.
  • Proof of Authority — доказываются полномочия.
  • Proof of Burn — доказательство сжигания.

Возможность отмены транзакции в блокчейне

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

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

Понятие масштабируемости блокчейна

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

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

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

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

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

Для чего нужно масштабирование блокчейна

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

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

Что представляет собой форк блокчейна?

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

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

Софт-форки

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

Хард-форки

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

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

С какой целью используется блокчейн?

Рассматриваемая технология применяется в разных вариантах. В статье будут рассмотрены основные из них. В дальнейшем на эту тему будет опубликована отдельная статья.

Блокчейн для цепочек поставок

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

Как блокчейн связан с игровой индустрией

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

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

Блокчейн в системе охраны здоровья

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

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

Блокчейн в системе финансовых транзакций

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

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

  • Комиссия за перевод биткоинов на сумму 450 миллионов долларов составила меньше 0,25 центов;
  • Комиссия за перевод эфириумов на сумму 180 миллионов долларов составила всего 6 центов. Комиссия за перевод биткоинов на сумму 194 миллиона долларов — 10 центов;
  • Комиссия за перевод лайткоинов на сумму 62 миллиона долларов составила 50 центов.

Блокчейн в сфере цифровой идентичности

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

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

Блокчейн в сфере интернета

Огромное количество устройств подключено на данный момент к Глобальной Сети, и это число будет постоянно увеличиваться. Многие эксперты уверены, что благодаря рассматриваемой технологии появится возможность оптимизировать взаимодействие между ними. Иными словами, автоматизированные межмашинные микроплатежи способны сформировать принципиально новую экономику, которая будет основана на безопасной и надёжной базе данных. При этом она также будет обладать высокой пропускной способностью.

Блокчейн в управленческой системе

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

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

Блокчейн в благотворительной деятельности

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

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

Блокчейн при спекуляции

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

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

Краудфандинг на блокчейне

Многие платформы в данной сфере в течение 10 лет создают основу для пиринговой экономики. Подобные сайты действительно успешны и эффективны. Соответственно, это говорит о том, что к разработке продуктов, которая финансируется методом сбора средств, проявляется реальный интерес. Поскольку подобные платформы — это попечители средств, у них есть возможность вычитать их в виде комиссий. Каждая из них имеет собственные правила, которые касаются достижения соглашения между всеми участниками.

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

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

Применение блокчейна в распределённых файловых системах

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

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

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

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

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

Многие протоколы уже находятся на пути к более эффективному вебу. К их числу можно отнести, например, InterPlanetary File System. Несмотря на то что IPFS представляет собой протокол и пиринговую сеть, он не является блокчейном в полной мере. Но в данном случае активно используются основные его принципы, направленные на улучшение надёжности, эффективности и безопасности.

Как запустить свой блокчейн: выбираем движок

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

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

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

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

Блокчейн с нуля

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

Написание с нуля кода блокчейн-ноды напоминает создание собственной базы данных с механизмом надежной сетевой репликации. Если вы поищете, сколько таких БД было создано за последние десятилетия, то найдете максимум сотню проектов. Огромной долей рынка владеют всего несколько компаний (Oracle, MS SQL Server, MySQL, PostgreSQL), а разработчики ядра таких систем ценятся крайне высоко.

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

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

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

Готовые блокчейн-движки

Я намеренно назвал раздел «движки», так как этот термин в области ПО часто используется для обозначения комплексов разнопланового ПО, предназначенного для решения конкретной задачи. Например, «поисковый движок» или «графический движок» — это не только код, но и вспомогательное ПО, дополнительные утилиты, описания алгоритмов и многое другое. Учитывая существование нескольких основных ядер блокчейнов, на базе которых построены уже существующие сети, будет удобно называть их движками (например, «построен на движке Ethereum»).

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

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

Ethereum

Этот комплекс ПО построен на базе ядра публичного блокчейна Ethereum. Публичный Ethereum использует консенсус типа Proof-of-Work, а его многочисленные тестовые сети — различные виды Proof-of-Authority и Proof-of-Stake консенсусов. ПО отвечает самым строгим критериям безопасности, проверено в десятках реально работающих сетей и, на мой взгляд, является наиболее развитым для создания блокчейнов с любыми видами консенсусов и полноценными, многофункциональными смарт-контрактами.

Нужно отметить роль проекта POA Network, чьи разработчики проделали огромную работу и запустили уже несколько быстрых и надежных сетей. POA Network существенно быстрее оригинального Ethereum, но при этом обладает той же стойкостью и универсальностью для заключения любых сделок, а роль валидаторов (майнеров) исполняют компьютеры, честная работа которых заверяется юридически. Эту сеть можно считать эталоном для запуска корпоративных блокчейнов на базе Ethereum.

Код блокчейн-ноды и консенсус

Существуют две основных имплементации кода ноды Ethereum: на языке Rust (код, названия: poa-parity (старое) или openethereum(новое)) и на Go (код, название: geth).

На момент написания при построении PoA-сети на geth (Go) вам будет доступен только консенсус Clique — это простейший и небезопасный протокол без финализации, который можно использовать только в тестовых целях.

Консенсус, реализованный в poa-parity (Rust), состоит из двух алгоритмов: schedule валидаторов Aura и finality gadget GRANDPA. Именно этот вариант, проверенный и безопасный, работает в POA-сетях на базе Ethereum. POA Network работают также над имплементацией перспективного BFT-консенсуса HoneyBadger.

Отдельного упоминания заслуживает новая блокчейн-нода Nethermind, написанная на C# для платформы .NET Core. Она полностью поддерживает Ethereum, большое число операционных систем и является отличным выбором для компаний, которые используют .NET Core.

Смарт-контракты и управление сетью

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

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

Дополнительное ПО

С Ethereum можно использовать JavaScript-библиотеку web3.js, вне зависимости от консенсуса, валидаторов и ее расположения.

Для POA Ethereum существует репозитарий для автоматизации операций по развертыванию готовой сети — deployment-playbooks.

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

Готовая POA-сеть Ethereum присутствует в AWS, но я все же рекомендую контролировать запуск своими руками. Вы должны понимать, какие сервисы вы запускаете и как они работают.

EOS и его форки

Вторым по гарантиям работоспособности и безопасности будет EOS. “OS” в его названии появилась не случайно.

EOS можно запустить в качестве отдельной сети, в PoS- или PoA-варианте. Как и Ethereum, это ПО уже проверено в бою, обладает высокой безопасностью и функционалом, который позволяет запустить собственный блокчейн со смарт-контрактами для автоматизации любых сделок

Если Ethereum имеет простую систему адресов, то в EOS сразу же используется иерархическая система аккаунтов и права на различные действия. Все это делает EOS похожей по дизайну на операционную систему — «программу для запуска других программ».

В качестве межкорпоративной платформы EOS позволяет из коробки получить удобную систему управления аккаунтами и быстрый консенсус, а также легко интегрировать практически любой функционал при помощи плагинов на C++ и смарт-контрактов на C++/WebAssembly (например, можно добавить другую криптографию).

Дизайн консенсуса в EOS и быстрые блоки позволяют достичь очень быстрого времени ответа пользователю, что крайне важно для построения децентрализованных приложений со сложным функционалом (например, проекты Cyberway, Golos.io или соцсеть Commun). Cyberway недавно произвел сложнейшую миграцию всей бизнес-логики из предыдущего блокчейна прозрачно для пользователей, что лишний раз доказывает гибкость и универсальность EOS.

Код блокчейн-ноды и консенсус

Код EOS написан на C++ и развивался на основе опыта, полученного разработчиками при работе над движками Graphene, Bitshares, Steemit. Используется собственный вариант DPoS-консенсуса.

Сейчас почти все проекты, использующие DPoS, строят свои алгоритмы очень похожим на EOS образом: это аккаунты, «голосующие» балансом токена за топ валидаторов. Валидаторы подписывают блоки по одиночке, но каждый в назначенный квант времени, согласно расписанию. Затем они коллективно фиксируют так называемый Last Irreversible Block (LIB), на котором собирается 2/3 + 1 подписей от валидаторов.

Многие форки EOS пытаются улучшить это консенсус. Например, наш вариант Haya использует для фиксации LIB другой finality gadget — RANDPA, чтобы достичь времени финальности в 2-3 секунды.

Переход к корпоративному POA-консенсусу не вызывает затруднений, так как список валидаторов управляется системными смарт-контрактами.

Смарт-контракты и управление сетью

Смарт-контракты в EOS используют модифицированную виртуальную машину WebAssembly, обычно пишутся на языке C++ и могут создаваться и использоваться любым аккаунтом. Писать смарт-контракты не сложно, во многом они перекликаются с Solidity.

В EOS, как и в POA Ethereum, управление сетью, основной токен (или токены) и типы транзакций можно реализовать в системных смарт-контрактаx (вот, например, системный токен). Интересной особенностью контрактов EOS является использование абстракции table для хранения данных контракта. В Ethereum в основном используется mapping (ассоциативный массив).

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

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

В EOS возможно организовать «спонсорские» транзакции, оплачиваемые владельцами контракта, а не самими пользователями. Это мощнейшая возможность для привлечения новых пользователей. Вы ведь помните, что «бесплатных» транзакций без потери безопасности в блокчейнах не бывает?

Дополнительное ПО

BOSCore, Telos, Haya и еще десяток форков EOS доказывают, что это ПО интересно большому количеству проектов. Для EOS существует достаточно инструментов, и вам не придется с нуля реализовывать сопутствующее ПО.

Eosjs — аналог web3.js, позволяет работать с контрактами любой сети на базе EOS из браузера и любых приложений.

EOSTracker — обозреватель блоков с открытым кодом и децентрализованными приложениями для голосований за валидаторов.

У EOS нет одного большого и мощного интегратора, как POA Network для Ethereum, поэтому каждый проект строит собственное решение. Тем не менее, основной код ноды стабилен и работает под серьезными нагрузками без сбоев.

Parity Substrate

Substrate создается командой компании Parity. Разработано огромное количество ПО: кошельки, блокчейн-ноды, системы смарт-контрактов, компиляторы, виртуальные машины.

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

Substrate — это часть крупного проекта Polkadot — системы, состоящей из основной цепочки и множества цепочек-шардов с индивидуальной логикой.

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

Код блокчейн-ноды и консенсус

Код Substrate написан на языке Rust. На мой взгляд, в структуре Substrate чувствуется большой опыт команды по созданию блокчейнов, так как все компоненты отлично структурированы, разделены на отдельные модули, а в коде присутствуют подробные комментарии. Доказательством гибкости этого движка является существование клиента для сети биткоина и ZCash на основе кода Substrate.

Что касается консенсуса, то можно выбрать из нескольких готовых вариантов или написать свой собственный. В большинстве случаев это PoA или DPoS, что в случае Substrate означает использование алгоритма Aura и GRANDPA.

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

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

Смарт-контракты и управление сетью

Substrate, в отличие от Ethereum и EOS, обрабатывает транзакции при помощи кода, который размещается валидаторами, а не пользователями. Это код называется “runtime” и исполняется виртуальной машиной WebAssembly.

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

Особого упоминания заслуживают модули пользовательских смарт контрактов: WASM и EVM. Они дают возможность пользователям размещать свои смарт-контракты, поэтому запуск универсального блокчейна на Substrate тоже возможен.

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

В плане гибкости у runtime есть множество преимуществ — разработчик может комбинировать их, создавать сложные роли, объединять управление сетью, внутреннюю логику и экономику. Учитывать следует лишь то, что обновление кода runtime проводится кворумом валидаторов.

Дополнительное ПО

Для Substrate есть ряд полезных решений: polkascan — обозреватель блоков и комплекс программ на JS для работы с Polkadot и сетями на базе Substrate. Возможно, вам пригодятся ansible-сценарии для развертывания готового кластера на базе Substrate, который мы использовали для тестирования Polkadot.

У Substrate нет богатого выбора универсального ПО, кошельков и обозревателей блоков, как у Ethereum или EOS, так как цепочки могут сильно отличаться между собой. Проект активно развивается, и множество команд параллельно создают сопутствующее ПО.

Cosmos SDK

Cosmos — это проект на базе одной основной цепочки и множества дочерних блокчейнов, называемых «zones». Дочерние цепочки строятся на основе Cosmos SDK — набора ПО для построения блокчейнов.

Cosmos — это продолжение проекта Tendermint, из которого ключевыми технологиями является надежный консенсус и концепция Application, сходная с runtime в Substrate.

Как и в случае Polkadot+Substrate, блокчейн, созданный с помощью Cosmos SDK, может жить отдельно или подключиться к экосистеме Cosmos как дочерняя цепочка.

Весь комплекс ПО Cosmos написан на Go и отлично структурирован и активно используется. На его основе уже работают несколько проектов, среди которых Binance Chain.

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

Код блокчейн-ноды и консенсус

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

По сути, разработчик просто задает правила, по которым одни данные превращаются в другие при внешнем воздействии, программируя так называемую функцию state transition. Это сложно звучит, но по факту обработка транзакции — это state transition, которая меняет несколько балансов. Именно этим занимается Application — принимает некоторое воздействие извне (транзакцию) и меняет свое состояние (state). Получившиеся изменения фиксируются в блокчейне. При этом разработчик не должен решать проблемы консенсуса и сети — сеть сама договорится между собой и придет к консенсусу относительно результатов.

Консенсус в Cosmos построен на базе консенсуса Tendermint, крайне близкого к pBFT. Его особенность в том, что подтверждения валидаторов собираются на каждый блок, что означает мгновенную финальность, как только блок принят сетью. Этот алгоритм требует много сообщений между валидаторами, и в случае проблем с сетью этот консенсус будет медленнее финализировать цепочку.

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

Смарт-контракты и управление сетью

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

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

Для ограничения транзакций в Cosmos, как в Ethereum, используется газ. Исполняя транзакцию, валидаторы вычисляют ее стоимость в условных единицах «gas». Отправляя транзакцию, пользователь указывает цену, которую он готов платить за единицу газа и лимит, который он готов потратить. Это является основанием для вычисления цены за транзакцию.

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

Дополнительное ПО

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

На JavaScript я нашел несколько полезных библиотек: js-cosmos, cosmosjs и универсальную js-abci, реализующую интерфейс ABCI. Их удобно использовать, если взаимодействие с вашим блокчейном планируется из браузера. ABCI позволяет создавать Application на разных языках, среди которых Java, C++, Python. Проект lotion, например, позволяет создать блокчейн полностью на Javascript.

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

https://blog.themarfa.name/blokchiein-chto-eto-takoie-opisaniie-i-podrobnoie-rukovodstvo/
https://forklog.com/kak-zapustit-svoj-blokchejn-vybiraem-dvizhok/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *