docs(chat): describe atomic channel creation and verified failure paths

This commit is contained in:
evgeny committed 2026-10-27 05:02:28 +01:00
1 parent 8003413d97
commit 04ce61e3ca
3 files changed
+64

No files matched your search

@@ -84,6 +84,9 @@ update_rtt обновляет node_addresses.rtt и peers_*.node_RTT в един
channel_put требует публичные ключи по 32 байта и подпись 64 байта.
При конфликте channel_id публичные ключи должны совпасть: меняются имя/владелец/подпись,
переданные privkey заменяют прежние, NULL сохраняет их. Криптографическую проверку делает вызывающий.
SAVEPOINT channel_put атомарно объединяет описание с peers-таблицей, локальной схемой и индексами.
Проверяются выделение SQL, все bind/step/changes=1/finalize и RELEASE; при отказе частичная схема не фиксируется.
Если ROLLBACK TO сам завершился ошибкой, RELEASE не выполняется: открытая транзакция требует отката/закрытия БД владельцем.
Суффикс таблиц строится из первых 63 символов channel_id: вне [A-Za-z0-9_] заменяются на '_'.
Штатные channel_id — десятичные uint64. Строка channels.channel_id хранит исходное значение.
@@ -91,6 +94,7 @@ channel_put требует публичные ключи по 32 байта и
member_placeholder_put вставляет source=1 с нулевой join_sig; существующую строку не меняет.
member_block_put заменяет ключи/join/update/userinfo/дерево приглашений и устанавливает source=0,
сохраняя owner-блок и локальные поля. NULL join_sig записывается как 64 нулевых байта.
Все 11 bind, step, changes=1 и finalize проверяются; функция работает в транзакции вызывающего.
member_owner_put меняет adm_tags/подпись/storage/deleted без вставки отсутствующей строки.
Placeholder не участвует в Merkle-хеше; сетевой формат и проверка версий принадлежат member_sync.