Перед тем как обрисовать механизм разрешения конфликтов в системе «LTO Network» предпошлем изложению небольшой словарик:
• «Узел» - физический узел в сети со своим URI, в задачу которого входит исполнение действий участников («личностей») и рассылка уведомлений другим участникам.
• «Личность» - конкретизация абстрактного участника с назначенной ему ролью. Внутренний описатель личности содержит ссылку на URI узла, которая может быть изменена личностью, если на это явно не запрещено Live-контрактом.
• «Событие» - подписанное участником и порождающее ответ действие, инкапсулируемое в качестве блока в эвентчейн.
• «Эвентчейн» (цепочка событий) – децентрализованный приватный блокчейн с содержимым из хэшей событий.
Ответственность за распространение изменений в эвентчейне между участниками Live-контракта ложится на узлы, функционирующие по принципу конечного автомата (на основе описания контракта), формирующего новые состояния из старых на основе действий участников. Узлы в LTO образуют по возможности полный граф, в котором каждая вершина информирует все остальные. В случае, когда новые события поступают до момента окончания процесса согласования, возникает сложная ситуация именуемая «конфликтом». На практике это означает, что разные участники в одно и то же время имеют на руках отличающиеся друг от друга цепочки событий, по-разному обрабатываемые назначенными им узлами. Механизм разрешения таких конфликтов основан на алгоритме консенсуса.
На рисунке показан расчет вероятности возникновения конфликтов и график ее зависимости от числа участников контракта при различных значениях динамики числа транзакций (величина f).
Математиками придумано множество алгоритмов разрешения конфликтов рассчитанных на различную мощность множества участников и разные особенности их взаимоотношений между собою. Однако традиционные BTF-алгоритмы плохо масштабируются на системы с малым количеством акторов, каковыми и являются сообщества участников Live-контракта. Поэтому в LTO Network валидация параллельных ветвей исполнения осуществляется узлами, отбрасывающими все варианты цепочек, видоизменных участниками до точки фиксации узлом последнего события. И так поступает каждый узел, участвующий в том или ином контракте. Для определения приоритета в порядке фиксации блоков используются якоря глобального блокчейна. Таким образом, порядок в глобальном блокчейне отображается на порядок в приватном эвентчейне, за исключением тех случаев, когда приоритет не установлен принудительно в сценарии.
Согласованность ветвей может быть отклонена участниками, если по условию контракта им допускается создавать параллельные, несогласованные ветви исполнения – так называемые «форки». Эта возможность «LTO Network» расширяет функциональность системы, не внося в нее хаоса.