Мы вернулись с нашими историями о рутиле! Итак, давайте погрузимся в

⛓ Направленный ациклический граф

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

Как только веха ссылается на транзакцию, все транзакции, на которые прямо или косвенно ссылается веха, получают отметку referenceMilestoneIndex. Это позволяет узлу определить, какая транзакция должна быть выполнена первой. Затем узлы отсортируют транзакции в зависимости от позиции, в которую они входили, и выполнят их. Вы можете увидеть рабочую штамповку на изображении ниже:

Транзакции, на которые не ссылается веха, не считаются подтвержденными и должны рассматриваться как таковые (серые).

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

В настоящее время вехи выбираются по совокупному весу транзакции. Это делается каждым узлом по отдельности и будет передаваться по всему (Proof of Stake определит, какому узлу доверять, а какому - нет). Однако вы можете представить, что это может сильно сказаться на пропускной способности. Мы экспериментируем с несколькими вариантами, которые уменьшают нагрузку на полосу пропускания, сохраняя при этом порядок.

На этом пока, надеюсь, вам понравилась эта неделя. До следующего!