feat(ui): treat transparent addresses as mining-only addresses
DragonX is a private chain (-ac_private=1): consensus rejects any
non-coinbase output to a transparent address, so a t-address can only
ever receive mining rewards, and its coins can only move to a shielded
address. The wallet treated them like ordinary recipients.
Block paying one:
- Send: a transparent recipient shows "Mining address - can't be paid"
and disables Review Send (tooltip explains; ask for a zs... address).
Typing, paste, contacts and payment URIs all go through this field.
- Overview drag-to-transfer: a mining-address row is never a transfer
target (it only reorders).
- Pool payout must be shielded (pools pay with ordinary transactions):
field tooltip, disabled Start button and the start check say why.
- isValidRecipientAddress() is now shielded-only; new isDragonXAddress()
and classifyRecipient() (Shielded / MiningOnly / Invalid).
Call them mining addresses:
- Overview: "Mining rewards" card (amber "Not yet shielded" when there
is a balance; hover explains; click opens the Shield dialog), "New
mining address" button with a tooltip, rows typed "Mining".
- QR / label dialogs, portfolio filter, contact badge ("Mining only"),
Receive notifications.
i18n: 17 new keys in all 8 languages, 12 dead keys removed, CJK subset
rebuilt. Tests: recipient classification, translation completeness.
UI sweep: new "send-mining-recipient" target.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+17
-12
@@ -25,6 +25,7 @@
|
||||
"about_website": "Website",
|
||||
"acrylic": "Acrílico",
|
||||
"add": "Adicionar",
|
||||
"addr_type_mining": "Mineração",
|
||||
"address": "Endereço",
|
||||
"address_book_add": "Adicionar Endereço",
|
||||
"address_book_add_new": "Adicionar Novo",
|
||||
@@ -172,21 +173,20 @@
|
||||
"balance_history_collecting": "Histórico de saldo — coletando dados...",
|
||||
"balance_layout": "Layout do Saldo",
|
||||
"balance_layout_switched": "Layout: %s",
|
||||
"balance_mining_fmt": "Recompensas de mineração: %.8f",
|
||||
"balance_mining_rate": "Minerando %s",
|
||||
"balance_shielded_fmt": "Blindado: %.8f",
|
||||
"balance_syncing_pct": "Sincronizando %.1f%%",
|
||||
"balance_transparent_fmt": "Transparente: %.8f",
|
||||
"baltab_market": "Mercado",
|
||||
"baltab_market_price_4dp": "Mercado: $%.4f",
|
||||
"baltab_market_price_8dp": "Mercado: $%.8f",
|
||||
"baltab_mining_addresses_count": "%d endereços de mineração",
|
||||
"baltab_mining_amount": "Recompensas de mineração %.8f",
|
||||
"baltab_pct_change_24h": "%s%.1f%% 24h",
|
||||
"baltab_pct_of_total_zaddr": "%.0f%% do total · %d Z-addr",
|
||||
"baltab_shielded": "Blindado",
|
||||
"baltab_shielded_amount": "Blindado %.8f",
|
||||
"baltab_t_addresses_count": "%d T-addresses",
|
||||
"baltab_total_balance": "Saldo Total",
|
||||
"baltab_transparent": "Transparente",
|
||||
"baltab_transparent_amount": "Transparente %.8f",
|
||||
"ban": "Banir",
|
||||
"banned_peers": "Pares Banidos",
|
||||
"block": "Bloco",
|
||||
@@ -511,7 +511,7 @@
|
||||
"contact_avatar_image_hint": "A imagem é copiada para o app para continuar disponível se o original for movido.",
|
||||
"contact_avatar_remove": "Remover",
|
||||
"contact_avatar_shielded": "Blindado",
|
||||
"contact_avatar_transparent": "Transparente",
|
||||
"contact_chip_mining": "Só mineração",
|
||||
"contact_global": "Mostrar em todas as carteiras (contato global)",
|
||||
"contact_global_badge_tt": "Contato global — visível em todas as carteiras",
|
||||
"contact_global_tt": "Ativado: este contato permanece visível em qualquer carteira que você carregar. Desativado: ele pertence apenas à carteira atual.",
|
||||
@@ -707,8 +707,8 @@
|
||||
"export_tx_success": "Transações exportadas com sucesso",
|
||||
"export_tx_title": "Exportar Transações para CSV",
|
||||
"export_viewing_key": "Exportar Chave de Visualização",
|
||||
"failed_create_mining_address": "Falha ao criar o endereço de mineração",
|
||||
"failed_create_shielded": "Falha ao criar endereço blindado",
|
||||
"failed_create_transparent": "Falha ao criar endereço transparente",
|
||||
"faq": "Perguntas frequentes",
|
||||
"faq_d_mgmt_1_a": "O node incorporado inicia automaticamente com a carteira e para quando apropriado, então normalmente você não precisa gerenciá-lo manualmente. Os controles avançados (incluindo reiniciar o daemon) ficam em Configurações > Node e Segurança.",
|
||||
"faq_d_mgmt_1_q": "Como inicio ou paro o node?",
|
||||
@@ -1226,6 +1226,7 @@
|
||||
"miner_fee": "Taxa de Minerador",
|
||||
"mining": "Mineração",
|
||||
"mining_active": "Ativo",
|
||||
"mining_address": "Endereço de mineração",
|
||||
"mining_address_copied": "Endereço de mineração copiado",
|
||||
"mining_all_time": "Todo o Tempo",
|
||||
"mining_already_saved": "URL do pool já salva",
|
||||
@@ -1239,6 +1240,8 @@
|
||||
"mining_benchmark_testing": "Testando",
|
||||
"mining_benchmark_tooltip": "Encontrar o número ideal de threads para esta CPU",
|
||||
"mining_block_copied": "Hash do bloco copiado",
|
||||
"mining_card_click_to_shield": "Clique para blindar agora as recompensas amadurecidas.",
|
||||
"mining_card_tooltip": "As recompensas de mineração solo chegam aos seus endereços de mineração (transparentes, R…). Esses endereços não podem receber pagamentos. As recompensas são blindadas automaticamente quando amadurecem.",
|
||||
"mining_chart_1m_ago": "1m atrás",
|
||||
"mining_chart_5m_ago": "5m atrás",
|
||||
"mining_chart_now": "Agora",
|
||||
@@ -1283,6 +1286,7 @@
|
||||
"mining_payout_address": "Endereço de Pagamento",
|
||||
"mining_payout_foreign": "⚠ Este endereço de pagamento não está na sua carteira atual — as recompensas mineradas iriam para uma carteira diferente. Atualize-o se você trocou de carteira.",
|
||||
"mining_payout_invalid": "Endereço DragonX inválido — corrija antes de iniciar, ou as recompensas de mineração serão perdidas.",
|
||||
"mining_payout_needs_shielded": "Os pools pagam com transações comuns, que no DragonX não conseguem chegar a um endereço de mineração (transparente, R…). Use um endereço blindado (começa com zs) como endereço de pagamento.",
|
||||
"mining_payout_tooltip": "Endereço para receber recompensas de mineração",
|
||||
"mining_pool": "Pool",
|
||||
"mining_pool_fee": "Taxa",
|
||||
@@ -1295,6 +1299,8 @@
|
||||
"mining_refresh": "Atualizar",
|
||||
"mining_remove": "Remover",
|
||||
"mining_reset_defaults": "Redefinir Padrões",
|
||||
"mining_rewards": "Recompensas de mineração",
|
||||
"mining_rewards_unshielded": "Ainda não blindadas",
|
||||
"mining_save_payout_address": "Salvar endereço de pagamento",
|
||||
"mining_save_pool_url": "Salvar URL do pool",
|
||||
"mining_saved_addresses": "Endereços Salvos:",
|
||||
@@ -1328,10 +1334,10 @@
|
||||
"network_fee": "TAXA DA REDE",
|
||||
"network_hashrate": "Hashrate da Rede",
|
||||
"new": "+ Novo",
|
||||
"new_mining_address": "Novo endereço de mineração",
|
||||
"new_mining_address_created": "Novo endereço de mineração criado",
|
||||
"new_shielded_created": "Novo endereço blindado criado",
|
||||
"new_t_address": "Novo Endereço T",
|
||||
"new_t_transparent": "Novo endereço t (Transparente)",
|
||||
"new_transparent_created": "Novo endereço transparente criado",
|
||||
"new_z_address": "Novo Endereço Z",
|
||||
"new_z_shielded": "Novo endereço z (Blindado)",
|
||||
"no_addresses": "Nenhum endereço encontrado. Crie um usando os botões acima.",
|
||||
@@ -1696,6 +1702,8 @@
|
||||
"send_from_this_address": "Enviar deste endereço",
|
||||
"send_go_to_receive": "Ir para Receber",
|
||||
"send_keep": "Manter",
|
||||
"send_mining_addr_blocked": "Este é um endereço de mineração (transparente). No DragonX eles só podem receber recompensas de mineração — a rede rejeita pagamentos para eles. Peça ao destinatário um endereço blindado (começa com zs).",
|
||||
"send_mining_addr_short": "Endereço de mineração — não pode receber pagamentos",
|
||||
"send_network_fee": "TAXA DA REDE",
|
||||
"send_no_balance": "Sem saldo",
|
||||
"send_no_recent": "Nenhum envio recente",
|
||||
@@ -1723,7 +1731,6 @@
|
||||
"send_txid_copied": "TxID copiado para a área de transferência",
|
||||
"send_txid_label": "TxID: %s",
|
||||
"send_valid_shielded": "Endereço blindado válido",
|
||||
"send_valid_transparent": "Endereço transparente válido",
|
||||
"send_wallet_empty": "Sua carteira está vazia",
|
||||
"send_yes_clear": "Sim, Limpar",
|
||||
"sender_balance": "Remetente: %.8f → %.8f DRGX",
|
||||
@@ -1929,7 +1936,6 @@
|
||||
"switch_stopnode_title": "Parar o nó em execução?",
|
||||
"switch_stopnode_warn": "Já há um nó em execução que esta carteira não iniciou.",
|
||||
"syncing": "Sincronizando...",
|
||||
"t_address": "Endereço T",
|
||||
"t_addresses": "Endereços T",
|
||||
"test_connection": "Testar",
|
||||
"theme": "Tema",
|
||||
@@ -1964,8 +1970,6 @@
|
||||
"transfer_sent": "Transferência Enviada",
|
||||
"transfer_sent_desc": "Sua transferência foi enviada à rede.",
|
||||
"transfer_to": "Transferir para:",
|
||||
"transparent": "Transparente",
|
||||
"transparent_address": "Endereço Transparente",
|
||||
"try_again": "Tentar novamente",
|
||||
"tt_addr_url": "URL base para visualizar endereços em um explorador de blocos",
|
||||
"tt_address_book": "Gerenciar endereços salvos para envio rápido",
|
||||
@@ -2037,6 +2041,7 @@
|
||||
"tt_low_spec": "Desativar todos os efeitos visuais pesados\\nAtalho: Ctrl+Shift+Down",
|
||||
"tt_merge": "Consolidar múltiplos UTXOs em um endereço",
|
||||
"tt_mine_idle": "Iniciar mineração automaticamente quando o\\nsistema estiver ocioso (sem entrada de teclado/mouse)",
|
||||
"tt_new_mining_address": "Cria um endereço transparente (R…) para recompensas de mineração solo. Ele não pode receber pagamentos — compartilhe um endereço blindado para isso.",
|
||||
"tt_noise": "Intensidade de textura granulada (0% = desligado, 100% = máximo)",
|
||||
"tt_open_app_dir": "Abrir a pasta ObsidianDragon (configurações, temas, logs) no gerenciador de arquivos",
|
||||
"tt_open_data_dir": "Abrir a pasta com os dados da sua carteira e da blockchain no gerenciador de arquivos",
|
||||
|
||||
Reference in New Issue
Block a user