Правильно ли я понимаю принцип протокола Ark? (Я имею в виду именно принцип, без учёта таких важных вещей, как коннекторы, комиссии, разные номиналы VTXO и срок их действия.)
Пусть есть Алиса (А), Боб (Б), Вася (В) и Галя (Г). А ещё есть провайдер (П).
Шаг 1.
А, Б, В и Г хотят переводить свои биткоины внутри протокола Ark. Для этого
А отправляет П 100 сатоши,
Б отправляет П 200 сатоши,
В отправляет П 300 сатоши,
Г отправляет П 400 сатоши.
Это ровно те суммы, которыми они хотят распоряжаться на втором слое.
Шаг 2.
П видит входящие транзакции и создаёт на их основе пакетную транзакцию №1, входами которой будут их выходы. У пакетной транзакции №1 будет 10 выходов по 100 сатоши каждый. Пакетная ранзакция №1 транслируется в основную сеть.
Одновременно П сообщает А подписанную, но не транслированную транзакцию, расходующую один из выходов пакетной транзакции №1 (100 сатоши).
Одновременно П сообщает Б подписанные, но не транслированные транзакции, расходующие два из выходов пакетной транзакции №1 (200 сатоши).
Одновременно П сообщает В подписанные, но не транслированные транзакции, расходующие три из выходов пакетной транзакции №1 (300 сатоши).
Одновременно П сообщает Г подписанные, но не транслированные транзакции, расходующие четыре из выходов пакетной транзакции №1 (400 сатоши).
Таким образом, каждый из участников имеет возможность в любой момент транслировать в основную сеть транзакции, расходующие ровно ту сумму, которую он внёс. До тех пор, пока транзакция не транслирована, мы говорим, что эти деньги существуют на втором слое в виде виртуальных выходов (VTXO). Как только кто-то транслирует транзакцию, VTXO перестают быть виртуальными (уходят со второго слоя) и становятся реальными UTXO на первом слое.
Шаг 3.
Проходит минут десять (в основной цепи появляется новый блок), и А решает передать Б 100 сатоши, а В решает передать Г 100 сатоши.
Они оба сообщают об этом П.
П создаёт пакетную транзакцию №2, входами которой будут выходы пакетной транзакции №1. У неё будет 10 выходов по 100 сатоши каждый. Пакетная транзакция №2 транслируется в основную сеть.
Одновременно П сообщает Б подписанные, но не транслированные транзакции, расходующие три из выходов пакетной транзакции №2 (300 сатоши).
Одновременно П сообщает В подписанные, но не транслированные транзакции, расходующие два из выходов пакетной транзакции №2 (200 сатоши).
Одновременно П сообщает Г подписанные, но не транслированные транзакции, расходующие пять из выходов пакетной транзакции №2 (500 сатоши).
Таким образом, у А и В становится на 100 сатоши меньше, а у Б и Г - на 100 сатоши больше.
Шаг 4.
Проходит пара секунд (в цепи не появляется нового блока), и Б решает передать В 200 сатоши, а Г решает передать А 200 сатоши.
Они оба сообщают об этом П.
П создаёт пакетную транзакцию №3, которая через механизм RBF заменяет собой в мемпуле пакетную транзакцию №2. Её входы будут те же, что и у пакетной транзакции №2. И у неё будет 10 выходов по 100 сатоши каждый. Пакетная транзакция №3 транслируется в основную сеть.
Одновременно П сообщает А подписанные, но не транслированные транзакции, расходующие два из выходов пакетной транзакции №3 (200 сатоши).
Одновременно П сообщает Б подписанную, но не транслированную транзакцию, расходующую один из выходов пакетной транзакции №3 (100 сатоши).
Одновременно П сообщает В подписанные, но не транслированные транзакции, расходующие четыре из выходов пакетной транзакции №3 (400 сатоши).
Одновременно П сообщает Г подписанные, но не транслированные транзакции, расходующие три из выходов пакетной транзакции №3 (300 сатоши).
Таким образом, у А и В становится на 200 сатоши больше, а у Б и Г - на 200 сатоши меньше.
Шаги 5, 6 и т.д.
Ещё через пять секунд П создаёт пакетную транзакцию №4, которая заменит собой в мемпуле пакетную транзакцию №3.
Потом - пакетную транзакцию №5, которая заменит пакетную транзакцию №4.
И так продолжается, пока в цепи не появится новый блок, после чего мы возвращаемся к шагу 3.
Итого в сеть Биткоина (в мемпулы полных нод) попадает «обезличенная» информация обо всех переводах внутри Ark. Но в цепь попадает информация только один раз за блок. Поэтому блокчейн не забивается.
10 July 2023
2 min read