Фреймворк децентрализации UniDAG


    

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


Архитектура сети
Сеть UniDAG состоит из одноранговой и, одновременно, Клиент-Сервер сети из различных устройств. Наряду с этим используется трехуровневая архитектура построения для увеличения масштабируемости и конфигурируемости.Все устройства, подключенные к сети, разделяются на 2 типа: Клиент и Нода (Сервер).

A,B,C —  Нода.
a — Клиент.

Клиент — устройство, использующее  данные от слоя клиента и слоя логики. Количество клиентов неограниченно. В качестве клиента могут выступать любые устройства, выполняющие  условия защиты и консенсуса.Нода — устройство, использующее данные от слоя логики и слоя базы данных. Количество нод  подчиняется правилу 2k+1, где k — целое положительное число (1,2,3...и т.д.). Как правило, в качестве нод должны выступать мощные вычислительные машины, т.к. основная часть слоя логики выполняется на них. Все подключенные ноды представляют из себя децентрализованную пиринговую сеть.  
Трехуровневая архитектура

X — программный слой клиента.
Y1 — слой логики на стороне клиента.
Y2 — слой логики на стороне ноды.
Z — слой базы данных.

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

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

Слой базы данных — слой, обеспечивающий хранение данных.

Консенсус нод
Для достижения консенсуса между нодами используется правило 50% + 1. Оно означает, что, в случае разногласий, система принимает решение верным от (k+1) нод, где (2k+1) — общее количество нод.

Идентификация устройств
Для достижения консенсуса между устройствами сети и обеспечения защиты от потенциальных атак, их необходимо определенным образом идентифицировать и унифицировать. Для нод действует постоянная схема идентификации  последовательного присвоения соответствующих порядковых номеров в виде целых чисел от 1 до (2k+1), где (2k+1) — общее количество нод.

1, 2, 3, k, (k+1) — идентификаторы нод.

Для клиентов действует другая схема идентификации. Она основана на идентификаторе, который генерируется в слое клиента, потом сохраняется заранее заданный период в слое базы данных и затем, если это установлено параметрами сети, удаляется из базы.


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

A — Заголовок блока.
В — Данные.

При добавлении блока в сеть UniDAG, она *подписывает* строго 2 предыдущих блока, добавляя данные о них в свой заголовок по заранее заданным алгоритмам и исключая возможность “ветвления”. Особенными являются первые два «генезисных» блока, которые *подписывают* 0 и 1 блок соответственно.Каждому блоку, переданному ноде клиентом, идет последовательное присвоение своего целочисленного порядкового номера N с увеличением на 1 от начала цепочки и добавлением этого номера в заголовок блока.

t — время.
1 , 2 , 3 , N , (N+1) , (N+2) — порядковые номера.

Общий принцип работы сети  

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

X — идентификатор клиента.
А1 , А2 , А3 — идентификатор (порядковый номер) ноды.
N — порядковый номер блока.

Алгоритм консенсуса UniDAG
Консенсус UniDAG — это определенные правила, с помощью которых сохраняется идентичная очередность блоков на всех нодах.
При построении цепи блоков возможны 2 ситуации:

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

t ( x ) < t ( y ) < t ( z) , где t — время.


Цепь блоков тогда приобретает такой вид:


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

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

Для достижения консенсуса используется параметр системы “задержка записи” и правило идентификаторов нод.

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

T = ( tн+tп) * s
T —  задержка записи.

tн — время первоначальной обработки блока.

tп  — максимальное время передачи блока между нодами.

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

  • Правило идентификаторов нод — блоку с меньшим идентификатором ноды присваивается первый порядковый номер, а блоку с большим идентификатором ноды присваивается следующий.

A1 < A2 ➝ NA1 < NA2 N — порядковый номер блока.

A — идентификатор ноды.

t ( x ) ≈ t ( y ) ≈  t ( z ), где t — время.

A1 <  A2 < A3

Каждая из нод получает 3 блока с одинаковыми порядковыми номерами N. За время, указанное параметром системы “задержка записи”, каждая из нод обрабатывает и записывает их в цепочку дагчейна согласно консенсусу.
( X , A1 , N ) | ( Y , A2 , N ) | ( Z , A3 , N ) ➝
( X , A1 , N ) | ( Y , A2 , N +1 ) | ( Z , A3 , N +2 )

 T — задержка записи.
Рассмотрим еще один случай схемы работы этих 2 правил.Клиенты с идентификаторами x,y,z отсылают в короткий промежуток времени блоки 2 различным нодам, имеющим идентификаторы A1, A2 соответственно. t ( x ) ≈ t ( y ) < t ( z ), где t — время.A1 <  A2 < A3  .

Согласно условию, одна из нод принимает 1 блок, а другая нода 2 блока. Первая нода присваивает порядковый номер N блоку Х, а вторая, в порядке очередности, номера N и (N+1) блокам от Y и Z соответственно. После обработки, за время, указанное параметром системы “задержка записи”, блокам с идентификаторами клиентов X, Y, Z присваиваются порядковые номера N, (N+1) и (N+2) соответственно, и они добавляются в дагчейн.
( X , A1 , N ) | ( Y , A2 , N ) | ( Z , A2 , N+1 ) ➝
( X , A1 , N ) | ( Y , A2 , N +1 ) | ( Z , A2 , N +2 )
T — задержка записи.
В случае других возможных конфликтов применяется правило  консенсуса нод, т.е. верной считается та цепочка, которая записана в (50%+1) нод.


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


Comments 0