#dusk $DUSK @Dusk Транзакция отображается как «успешная» — значит ли это, что всё действительно завершено?

Вчера ночью, когда я просматривал документацию по разработке Dusk, я заметил одну деталь, на которую раньше почти не обращал внимания.

После отправки транзакции узел возвращает 202 Accepted — это означает только то, что запрос получен и сейчас обрабатывается, но не то, что транзакция уже завершена.

Если продолжить чтение, становится понятно, что дальше ещё будут admission, mempool, выбор блока и его выполнение.

Даже если выполнение уже произошло, это всё ещё не конец.

Потому что даже уже принятый блок всё ещё может быть откатан (rollback).

Только когда блок переходит в состояние finalized, эта транзакция действительно получает окончательность (финальность).

Мне показалось, что эта деталь очень любопытна.

Когда мы обычно говорим «транзакция успешна», мы на самом деле смешиваем несколько совершенно разных состояний:

узел получил, и сеть приняла — это не одно и то же;
попадание в блок и успешное выполнение — тоже не одно и то же;
успешное выполнение ещё не равно окончательным расчётам.

Для обычного перевода это может отличаться лишь на уровне нескольких состояний.

Но что, если в будущем в цепочке будут работать ценные бумаги, платежи или другие финансовые активы?

Тогда «почти успешно» явно недостаточно.

Вопрос, который по-настоящему нужно прояснить, другой:

на каком именно состоянии происходит реальное изменение прав и обязанностей на актив?

Это тоже один из способов, через который я недавно по-новому понял идею Dusk «deterministic settlement».

Возможно, она решает не только задачу ускорить транзакции, а сделать так, чтобы участники чётко понимали:

когда можно больше не ждать и когда можно действительно считать эту транзакцию уже завершённой.

Возможно, именно в этом и заключается истинный смысл слов «транзакция завершена» в финансовой инфраструктуре.

@Dusk $DUSK #DUSK