Phasing

как составная часть Account Control.
C-f-B
объяснил, что такое Phasing.
Возможно, "Phasing" не лучший термин, это производное от "2-х фазные транзакции".
В простейшем случае Алиса посылает транзакцию,
которая включается в блокчейн в специальном "подвешенном" (pending) статусе,
то есть она не не исполняется, пока Боб не подтвердит её.
Более сложный пример:
Некая компания управляется децентрализованно,
Алиса имеет приватный ключ к аккаунту,
но она может лишь инициировать транзакции,
потому, что к этому корпоративному аккаунту привязано ещё M аккаунтов,
и только когда N владельцев из этих M подтвердят платёж,
только тогда инициированная Алисой транзакция будет выполнена в блокчейне.
Сама Алиса не может потратить NXT с такого аккаунта,
кроме того, когда она инициирует транзакцию, монеты резервируются,
поэтому в инициирующей транзакции Алиса ещё указывает срок резерва,
за который N владельцев должны договориться о необходимости платежа,
иначе транзакция отменяется, и резерв возвращается на аккаунт.
Другой пример - защита крупного аккаунта:
специальный тип транзакции "помечает" такой аккаунт.
В этой транзакции также указывается несколько аккаунтов,
которые будут распоряжаться крупным аккаунтом,
а также задаётся количество "голосов" этих аккаунтов,
необходимое для кворума.
Таким образом, микс из Voting System и Phasing позволит акционерам подтверждать
кворумом в 51% голосов транзакции, инициированные эмитентом.
В основной сети Phasing заработал после блока 445`000 (07.06.2015).
Описание Phasing из readme к
версии 1.5.0e:
Транзакция любого типа может быть фазирована путём добавления к ней параметра phased=true и соответствующих опций.
Фазированные транзакции включаются в блокчейн немедленно (со всеми обычными проверками),
но исполняются только по достижению заданного номера блока ("финального" блока), и по достижению требуемого кворума (результатов голосования).
Если по достижении заданного номера блока кворум для одобрения транзакции не собран, либо если транзакция не проходит обычные проверки, то она не исполняется, но остаётся в блокчейне,
при этом отправителю возвращается баланс, но не комиссия сети.
Фазированная транзакция может использовать "белый список" аккаунтов (до 10-ти), допущенных к голосованию по 2-й фазе транзакции.
В одной голосующей (подтверждающей) транзакции допускается одобрять до 10-ти фазированных транзакций. Такая транзакция будет включена в блокчейн только если все эти подтверждаемые транзакции уже находятся в блокчейне.
Только первое голосование с каждого аккаунта засчитывается, все последующие голосования игнорируются (хотя и не запрещаются).
Также имеется возможность инициировать такую фазированную транзакцию, для которой не требуется голосования на 2-й фазе, то есть транзакцию с отложенным исполнением.
В качестве одной из моделей фазового голосования поддерживается "платёж по раскрытию секрета".
При такой модели фазированная транзакция должна содержать хеш секрета (строки до 100 байт), заданного отправителем, и подтверждающая её транзакция засчитывается только если содержит секрет с таким же хешем. При этом не имеет значения, с какого адреса отправлена подтверждающая транзакция (если только не задан "белый список" адресов). Допустимы хеш-функции: sha256, ripemd160, а также ripemd160 поверх sha256 (указываются как параметры в getConstants API).
Наконец, есть возможность создать фазированную транзакцию, которая исполняется (или отвергается) не голосованием, а в зависимости от присутствия в блокчейне неких других транзакций ("связанных" транзакций) на момент достижения финального блока. С этой целью при создании такой фазированной транзакции можно указать до 10-ти хешей (phasingLinkedFullHash) связанных транзакций.
Важно отметить, что это не создаёт зависимостей между самими связанными транзакциями.
Эта возможность может использоваться для реализации "атомарных" транзакций (которые исполняются только вместе, или не исполняются вовсе) любого типа, если только фазированная транзакция подтверждается на 2-й фазе. "Связывать" также можно собственно фазируемые транзакции, а также те транзакции, которые уже находились в блокчейне до выпуска фазированной транзакции (но не старше 60-ти дней).
Величина комиссии для создания фазированной транзакции зависит от модели голосования.
Для голосования аккаунтом (без учёта минимума баланса), или для модели без голосования комиссия составляет 1 NXT (в дополнение к обычной комиссии этого типа транзакции). Для голосования, зависящего от балансов голосующих, дополнительная фазовая комиссия составляет 20 NXT.
Комиссия подтверждающей транзакции составляет 1 NXT за каждую включённую в голосование фазированную транзакцию.
В версии
1.7 реализовано
немедленное (по факту одобрения) исполнение фазированных транзакций:
Фазированные транзакции с не зависящей от баланса аккаунта моделью голосования (такой как "по транзакции" и "по хэшу"), либо с моделью "по аккаунту" с указанием "белого списка" и без требования минимального баланса, исполняются (если возможно) сразу после одобрения, т.е. до финального блока (в том блоке, в котором исполняется транзакция одобрения). Такое досрочное исполнение гарантируется для типов транзакций, известных как "фазово-безопасные". Для других типов, в случае если досрочное одобрение не состоялось из-за конфликта с другой транзакцией, предпринимается ещё одна (последняя) попытка на фазо-финальном блоке.
см. также здесь:
http://nxtwiki.org/wiki/Phasing/ruhttps://nxtforum.org/index.php?topic=4803.0
https://nxtforum.org/index.php?topic=6490.msg171037#msg171037
https://nxtforum.org/index.php?topic=9063.msg178388#msg178388
https://nxtforum.org/index.php?topic=9333.msg184324#msg184324
https://nxtforum.org/index.php?topic=9333.msg184777#msg184777
Для платформы Ardor механизм фазированных (Phasing) транзакций доработан, и называется
Smart Phasing.
Одной из наиболее ожидаемых особенностей нового релиза было внедрение эскроу-транзакций, официально названных «фазированием» или «фазовыми транзакциями». Платформа поддерживает множество разных типов транзакций, такие как создание актива или валюты, регистрация названия, отправка чего угодно и кому угодно в рамках сети, отправка сообщений, данных по голосованию и многое другое. Фазирование позволяет всем транзакциям в сети записываться в блокчейн только в случае, если определённое количество сторон её согласуют. Пользователь сам может определить, кто будет принимать решение по его транзакциям в рамках разнообразных стандартов, среди которых:
- «Белый список» определённых аккаунтов, которым доверено утверждение система действует аналогично мультисигнатурной системе биткоина;
- Аккаунты с определённым пользователем процента или суммой в заданном активе или валюте с хостом на уровне выше NXT;
- Аккаунты с определённым количеством NXT, активов или валюты.
Все фазированные транзакции имеют срок действия, который также задаётся пользователем. Таким образом, если другие не станут согласовывать транзакцию, то отправляемые средства позднее станут вновь доступными и не застрянут навечно в чистилище вечного ожидания.
Проект "
Quack" - образец использования фазированных транзакций:
https://bitcointalk.org/index.php?topic=345882.msg12444881#msg12444881