No código aberto do Telegram Web K — a versão web em web.telegram.org/k — a carteira Gram apareceu por completo em 30 de outubro: com saldo, histórico, envio e recebimento, frase secreta, itens colecionáveis, transferências em chats e TON Connect. Em 2 de novembro, ela foi escondida: a constante WALLET_RELEASED está definida como false, e enquanto não for alterada manualmente, nenhum item de menu, link ou botão levará à carteira. No site web.telegram.org/k, a carteira ainda não está disponível — a build lá é de 30 de outubro, compilada quatro horas e meia antes do commit da carteira. Na segunda versão web, Web A, a carteira já está na build de produção: ela é exibida pelo server flag wallet_available, o mesmo usado pelos aplicativos para iOS e Android. Isso afeta aqueles que usam o Telegram pelo navegador.

O que está no código do Web K

A carteira foi incorporada em um único commit em 30 de outubro às 19:18 UTC: 284 arquivos, 48.483 linhas adicionadas, 375 removidas. A descrição do commit menciona os clientes para iOS e Android como referência. O que ela contém:

SeçãoFuncionalidade
Saldovalor em Gram e na moeda selecionada
Históricopáginas de operações são armazenadas em cache
Enviopara contato, por username, para endereço ou domínio TON DNS, com comentário
Recebimentoendereço, QR-code, recarga
Frase secretabackup, exportação, verificação de palavras
Backup de chave criptografadaativação e desativação; ao desativar, é possível girar para uma nova frase secreta
Carteira antigauma segunda carteira no dispositivo fica ao lado da principal
Itens colecionáveisvisualização e envio
Transferências em chatscartão separado, enquanto a transferência está em andamento — "enviando"
TON Connectconexão de aplicativos e respostas às suas solicitações; solicitações aguardam enquanto a carteira está fechada

As transações e chaves não são calculadas pelo próprio cliente, mas pelo motor wallet-engine — uma carteira TON multiplataforma em Rust do desenvolvedor TON Core. Não está no npm: o pacote web é obtido como um arquivo de um release no GitHub, atualmente 0.0.7 de 30 de setembro, e um script separado verifica o arquivo com a soma de verificação publicada. Nas mesmas releases estão as builds do motor para Android, Swift, macOS, Linux e Windows.

Entre a incorporação e o ocultamento, a carteira foi corrigida três vezes, e todas as três correções são sobre o menu de endereço TON: dois commits de um colaborador externo, incorporados pela pull request #750, e um do desenvolvedor líder do Web K. Agora, ao clicar em um endereço, o cliente procura o proprietário nos perfis já carregados e nos cartões da carteira do autor da mensagem, do interlocutor e da sua própria conta, depois pergunta ao servidor, e os perfis restantes são carregados apenas se o servidor responder que a carteira não está vinculada a ninguém. O proprietário é exibido como uma linha com avatar nas dimensões do cliente para Android.

O que há no Web A

Na segunda versão web, telegram-tt, a carteira Gram apareceu antes — com o commit de 12 de outubro "Wallet: Introduce Gram Wallet" com 26.255 linhas. Em 26 de outubro, uma nova tela de envio com efeitos em WebGPU foi adicionada, e em commits separados — a verificação de links TON Connect e operações onde a segunda parte é um canal ou presente do Telegram.

A build em web.telegram.org/a — versão 12.0.48 de 26 de outubro — contém a carteira: ela é carregada como um módulo separado, e o cliente a exibe se o servidor enviar wallet_available no config da conta. O mesmo config define o valor mínimo de transferência (wallet_transfer_min_nanos) e o número de transferências diárias sem taxa de gás (wallet_gasless_daily_transfers).

O que fazer

  • Precisa da carteira no navegador agora — experimente web.telegram.org/a: lá ela pode já estar disponível. A exibição é decidida pelo mesmo server flag que nos aplicativos de telefone, então a carteira não estará no navegador para uma conta para a qual o servidor não a ativou.
  • Usa o Web K — a carteira ainda não estará lá, nem no menu, nem nas configurações, nem na busca por configurações. O link t.me/sendgrams antes do lançamento abre como um link de username comum, e o endereço TON na mensagem — como texto simples.
  • Recebeu uma transferência em um chat do Web K — o cartão de transferência é visível, mas não abre antes do lançamento: veja os detalhes e o comentário criptografado no aplicativo do telefone.
  • Antes de sair da conta no navegador verifique se a frase secreta está anotada ou se o backup está ativado. A versão web armazena as chaves da carteira no dispositivo, e no código do Web K a tela de saída avisa sobre isso separadamente (seção abaixo). Como encontrar e salvar a frase — na ajuda.

Como a carteira está escondida até o lançamento

O ocultamento levou dois commits em 2 de novembro. Primeiro, às 14:31 UTC, o item "Send Money" foi removido do menu de chat, do menu de transferência de Gram e do menu de endereço TON, o restante ainda dependia do servidor. Às 15:23 UTC, o segundo commit fechou tudo: no arquivo lib/wallet/release.ts apareceu a constante WALLET_RELEASED = false. De acordo com sua descrição, isso não é uma configuração: ela será alterada no código no dia do lançamento.

Enquanto ela for false, o item "Wallet" no menu principal e nas configurações (o cliente nem mesmo solicita o saldo para esta linha), o resultado da busca nas configurações, o item no menu de anexos, todos os botões "Send Money", a janela da carteira, os links da carteira e TON Connect, o menu de endereço TON e as solicitações TON Connect estão fechados. A carteira permanece aberta apenas na popup sandbox — que está presente em builds de depuração e prévias e funciona com dados simulados, sem solicitações ao servidor.

Após o lançamento, o servidor decidirá, mas com um padrão diferente do Web A: o Web K esconderá a carteira apenas se o flag wallet_available vier com o valor "não", e o Web A a mostrará apenas se o flag vier com o valor "sim".

Chaves no navegador

A chave da carteira Telegram pode ser mantida em um backup criptografado. A ativação e desativação do backup no Web K, de acordo com o comentário no código, replica o cliente para iOS, e as linhas a descrevem assim: o backup é dividido em três partes e armazenado em data centers em três continentes, sendo montado apenas nos dispositivos do proprietário. Se o backup for desativado, a carteira só poderá ser restaurada pela frase secreta. Ao desativar, o cliente sugere girar a frase ao mesmo tempo: o endereço e o saldo permanecem os mesmos, a alteração é registrada na rede e custa uma taxa, e não pode ser feita com saldo zero.

Daí os avisos ao sair da conta. O Web K tem quatro: as chaves da carteira estão apenas neste dispositivo e o Telegram não tem cópias; as chaves de outra carteira antiga estão no dispositivo; a alteração da chave não foi confirmada, e a nova chave está apenas aqui; e o caso geral — se as chaves existirem, a saída as destruirá. Nos três primeiros casos, a carteira pode ser recuperada apenas pela frase secreta, no último — pelo backup do Telegram ou pela frase.

Como foi verificado

  • Código do Web K: commit da carteira (30.10, 19:18 UTC, +48.483/−375, 284 arquivos), ocultamento de Send Money e ocultamento da carteira (02.11), arquivo com a constante, linhas da carteira em src/lang.ts, dependência @ton/wallet-engine em package.json e seu script de atualização.
  • Site web.telegram.org/k: página entregue com Last-Modified 30 de outubro 14:47 UTC — este é o commit da build 14:46 UTC; as animações da carteira do commit de 30 de outubro não estão no site, seus endereços respondem com redirecionamento.
  • Código e site do Web A: commit da carteira (12.10), tela de envio (26.10); na build de produção 12.0.48 (Last-Modified 26 de outubro 18:09 UTC) — módulo da carteira, openWalletModal e campos de configuração wallet_available, wallet_transfer_min_nanos, wallet_gasless_daily_transfers.
  • Motor: releases do wallet-engine — 0.0.1 de 19 de agosto a 0.0.7 de 30 de setembro.