Убрать механику blocked из L3-кошельков (резерв возврата → отдельный кошелёк w.wal.wpend) #31
Reference in New Issue
Block a user
Delete Branch "feat/remove-l3-blocked"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что и зачем
Упраздняем субсчёт «заблокировано» на L3-кошельках. Раньше резерв средств под заявку на возврат паевого делался блокировкой внутри
w.wal.share(available→blocked). Теперь резерв — это перевод на отдельный кошелёк-резервw.wal.wpend(COOPERATIVE). Все движения — только переводы и сжигание; BLOCK/UNBLOCK удалены.Слой контрактов
WITHDRAW_PENDING(w.wal.wpend, COOPERATIVE), реестр 14→15.WalletOpудалены BLOCK/UNBLOCK/BURN_BLOCKED. Числовые значения ISSUE=0/TRANSFER=1/BURN=4/NONE=5 сохранены, чтобы исторические op_code в blockchain_actions читались без сдвига смысла. Переключены 3 операции возврата:o.wal.wthreq→ TRANSFERw.wal.share→w.wal.wpend(0/0)o.wal.wthdec→ TRANSFERw.wal.wpend→w.wal.share(0/0)o.wal.wthcpl→ BURNw.wal.wpend(Dr 80 / Cr 51)blocked → availableпо всем коопам (cooperatives2). Сигнатура без аргументов — выполняется автоматически при деплое. Идемпотентно.blocked.Контракты wallet/src/withdraw/* НЕ менялись — операции вызываются по тем же
operation_code, изменилась только их семантика в реестре.cooptypes / SDK
operations.ts:WalletOpбез BLOCK/UNBLOCK/BURN_BLOCKED; 3 операции возврата переключены.wallets.generated.tsрегенерирован (gen:from-cpp) — добавленw.wal.wpend.blockedизprogramWalletSelector/ledger2WalletSelector.Backend (controller)
blockedиз GraphQL DTOProgramWalletиLedger2Wallet. TypeORM-колонка и внутренние интерфейсы оставлены deprecated (без DB-миграции).Frontend (desktop)
blocked_delta.Что НЕ входит (осознанные границы)
blockedфизически оставлено в C++-структурах таблицwallets2/userwallets(deprecated, всегда 0 после migrate). Удаление поля = небезопасная смена layout таблицы на живых коопах честь/восход → отдельный cleanup-деплой.soviet::progwallets(blockbal/unblockbal) и donor-marketplace — отдельный трек (Эпик 4 проекта «Цифровой Кошелёк»).ledgerv1 chart-of-accounts «Заблокированные средства» — другая подсистема (laccount), не трогалась.⚠️ Требует шага CI/деплоя
generate-schema+generate-client) — привестиcontroller/schema.gqlиsdk/src/zeusв соответствие с удалённым полемblocked(локально не запускалось).schema.gqlв этом PR НЕ трогался.completewthdне найдёт резерва. Незавершённые заявки довести до complete/decline ДО деплоя.🤖 Generated with Claude Code
39a456e4cato0969505a71@@ -48,2 +48,3 @@static constexpr eosio::name CK_MEMBER = "w.wal.member"_n; ///< ЦК — членская часть пайщика (USER_SHARED)static constexpr eosio::name WITHDRAWALS_SINK = "w.wal.wthdrw"_n; ///< DEPRECATED 2026-05-21: после переключения o.wal.wthcpl с TRANSFER на BURN_BLOCKED кошелёк больше не получает новых средств. Оставлен в реестре для исторических L2-балансов (накопленные возвраты до перехода). Не использовать в новых операциях.static constexpr eosio::name WITHDRAWALS_SINK = "w.wal.wthdrw"_n; ///< DEPRECATED 2026-05-21: исторический sink возвратов. Оставлен в реестре для исторических L2-балансов (накопленные возвраты до перехода). Не использовать в новых операциях.static constexpr eosio::name WITHDRAW_PENDING = "w.wal.wpend"_n; ///< Резерв паевого под заявку на возврат (COOPERATIVE-пул). o.wal.wthreq переводит сюда с w.wal.share, o.wal.wthdec возвращает обратно, o.wal.wthcpl сжигает отсюда. Заменил механику blocked/BLOCK/UNBLOCK 2026-05-24.WITHDRAW_PENDING - этот кошелек еще должен быть L3 для отображения пайщику в кошельках на странице его.