Главная страница

2 спецальная часть 2 1 Описание исходных данных 2


Скачать 1.56 Mb.
Название2 спецальная часть 2 1 Описание исходных данных 2
Дата25.05.2023
Размер1.56 Mb.
Формат файлаdocx
Имя файла352580.docx
ТипДокументы
#1158261
страница3 из 6
1   2   3   4   5   6

2.5 Пример исходных данных


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

1. Полные ноды (валидаторы или майнеры). Участники (узлы), которые проверяют подлинность данных, сопоставляя записи новых транзакций с предыдущими.

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

В ходе своей деятельности валидаторы формируют новые блоки из накопленной очереди транзакций, совершаемых пользователями. Блок представляет собой агрегированный набор данных, контейнер, который объединяет транзакции для включения в распределительный реестр. Данные собираются и обрабатываются для размещения в блоке с помощью процесса, называемого майнингом. Скорость создания блока и количество записей транзакций, которые он может содержать, зависит от конкретного блокчейна. Из блоков система формирует упорядоченную «назад» структуру (рисунок 2.3).

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



Рисунок 2.3 – Визуальная иллюстрация блокчейна («цепочки» блоков)

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



Рисунок 2.4 – Визуализация связи блоков через хеш

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



Рисунок 2.5 – Визуализация блокчейна в виде стопки блоков

Этот фундамент зиждется на том, что, если родительский блок получает любые изменения, меняется его хеш, что также ведет к изменению хеша дочернего блока и изменению ссылки «хеш предыдущего блока». Это, в свою очередь, меняет хеш самого дочернего блока, который, в свою очередь, изменяет ссылки в прежнем блоке, который, в свою очередь, меняет хеш уже своего предыдущего блока и так далее. Этот каскадный эффект гарантирует, что если сеть насчитывает много поколений, то она не может быть изменена (взломана) без изменения всех последующих блоков, поскольку для этого нужно задействовать огромные вычислительные мощности. Или, другими словами, чем длиннее цепочка блоков, тем безопаснее система. Что внутри блока: Блок состоит из заголовка (Head), содержащего метаданные. Далее идет длинный список транзакций (Payload), который занимает большую часть всего объема блока (рисунок 2.6).

Так, на старте блок Биткоина мог вместить более 500 транзакций, поскольку он был объемом 80 байт (сейчас размер больше), а транзакции требовали по 250 байт.



Рисунок 2.6 – Визуализации разделения блока на заголовок и данные транзакции

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

• хеш заголовка блока;

• хеш родительского блока;

• хеш всех транзакций, записанных в блоке; • дата и время создания блока;

• параметры bits и nonce;

• версия блока.



Рисунок 2.7 – Содержание блока 20

Хеш заголовка блока – это то, что связывает предыдущий блок с последующим в цепочке блокчейна. Он записывается в следующий блок как хешкод в заголовок родительского блока. Еще в заголовке хранится хеш-код транзакций текущего блока. Он рассчитывается с помощью алгоритма, известного как дерево Меркла (рисунок 2.8) или бинарное дерево хешей (Merkle tree).



Рисунок 2.8 – Структура дерева Меркла

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

1) сначала подсчитываются хеши всех транзакций;

2) затем считается сумма всех хешей пар транзакций;

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



Рисунок 2.9 – Упрощенное представление транзакции в сети биткоин

В компьютерном коде транзакция, записанная в блок блокчейна, несколько сложнее, поскольку протокол Биткоина оперирует такими понятиями, как Входы (Inputs или In) и Выходы (Outputs или Out).

1   2   3   4   5   6


написать администратору сайта