feat(wallet): consolidate notes per address, keeping each address's funds in place
Users who keep funds apart under different labelled addresses can now shed notes (smaller wallet, faster scans/witness rebuilds) without the funds being merged into a single address. - Merge/Consolidate dialog: "Where should the funds go?" - Into one address (unchanged) or Keep in each address. The latter lists shielded addresses with 2+ spendable notes (label, note count, amount; too-small ones disabled) and merges each address's notes back into that address with z_mergetoaddress [addr] addr. Addresses with more notes than the batch size get several batches (the daemon locks a batch's notes before returning, so calls take disjoint notes); the dialog suggests a second run after those confirm. Per-address progress; ops keep running if the dialog is closed. The Consolidate (wallet-size) preset opens in this mode; Merge keeps "Into one". Shielded only: a transparent address can't take a merge's output. - services/note_consolidation: groupSpendableNotes, worthConsolidating, estimateBatches, consolidateInPlace (pure; driven by a merge-call function), with unit tests against a stand-in following dragonxd's rules. - fake_dragonxd: optional note wallet (FAKE_WALLET_NOTES, FAKE_MERGE_SECS) with z_mergetoaddress and its operations. - i18n: 17 new keys in all 8 languages; CJK subset rebuilt. - UI sweep: modal-consolidate target. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1163,6 +1163,22 @@
|
||||
"merge_description": "Объедините несколько UTXO в один экранированный адрес. Это может уменьшить размер кошелька и улучшить конфиденциальность.",
|
||||
"merge_fee_hint": "Сетевая комиссия за эту транзакцию.",
|
||||
"merge_funds": "Объединить средства",
|
||||
"merge_into_one": "На один адрес",
|
||||
"merge_keep_each": "Оставить в каждом адресе",
|
||||
"merge_keep_each_batches_fmt": "Адреса с более чем %d заметками объединяются в несколько партий; запустите снова после их подтверждения, чтобы объединить остальное.",
|
||||
"merge_keep_each_confirm_fmt": "Объединить %d заметок на %d адресах? Каждый адрес сохраняет свои средства. Комиссии: около %s DRGX (по одной на партию).",
|
||||
"merge_keep_each_desc": "Заметки каждого адреса объединяются обратно в тот же адрес, поэтому средства, которые вы держите раздельно под разными метками, остаются раздельными. Только экранированные адреса — прозрачные средства можно только экранировать («На один адрес»).",
|
||||
"merge_keep_each_none": "На каждом экранированном адресе уже одна заметка — объединять нечего.",
|
||||
"merge_keep_each_nothing_submitted": "Ничего не объединено — узел отклонил все объединения.",
|
||||
"merge_keep_each_row_fmt": "%s · заметок: %d · %s DRGX",
|
||||
"merge_keep_each_run_again": "На адресах, объединённых в несколько партий, теперь по одной заметке на партию. Запустите снова после их подтверждения, чтобы объединить их в одну.",
|
||||
"merge_keep_each_select": "Отметьте хотя бы один адрес для объединения.",
|
||||
"merge_keep_each_some_failed": "Некоторые объединения не удались — см. список выше.",
|
||||
"merge_keep_each_status_done": "%s — готово: объединено заметок: %d, партий: %d",
|
||||
"merge_keep_each_status_failed": "%s — ошибка: %s",
|
||||
"merge_keep_each_status_not_started": "%s — не запущено: %s",
|
||||
"merge_keep_each_status_running": "%s — объединение %d заметок (готово партий: %d из %d)…",
|
||||
"merge_keep_each_too_small": "Слишком мало для объединения: комиссия съест эти средства.",
|
||||
"merge_max_inputs": "Макс. входов за партию",
|
||||
"merge_no_spendable": "Пока нет доступных для расходования входов для объединения.",
|
||||
"merge_progress": "Объединение… это может занять несколько минут. Вы можете закрыть это окно.",
|
||||
@@ -1175,6 +1191,7 @@
|
||||
"merge_src_transparent": "Прозрачные",
|
||||
"merge_started": "Операция объединения начата",
|
||||
"merge_title": "Объединить на адрес",
|
||||
"merge_where": "Куда направить средства?",
|
||||
"mig_adopt": "Сделать это моим кошельком",
|
||||
"mig_adopt_now": "Принять сид-кошелёк",
|
||||
"mig_adopting": "Установка вашего нового кошелька и пересканирование…",
|
||||
|
||||
Reference in New Issue
Block a user