Декомпозиция blockchain

в 2:14, , рубрики: blockchain, smart contracts, Алгоритмы, Анализ и проектирование систем, блокчейн, информационная безопасность, Криптовалюты

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

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

Определим цель использования блокчейна:

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

Базовая модель

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

Последовательное расширение функционала

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

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

Вычислительная сложность создания блока
В блоке добавляется новое поле — counter — произвольное число. Нужно подобрать такое значение counter'а, чтобы хеш код блока заканчивался на определенное число нулей.

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

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

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

Ну вот и всё — концептуальная модель готова, спасибо за внимание.

Автор: user16

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js