Pequena e nativa: C++, sem runtime de JavaScript, de uma estação de trabalho a um Raspberry Pi
Uma carteira é um programa de segurança. Deve ser pequena o suficiente para ser auditada, rápida o suficiente para nos esquecermos dela e livre de peças móveis que não sejam suas.

Nesta página
C++ e Qt
A AirNox Wallet está escrita em C++ com o toolkit Qt. A criptografia, o código de cada blockchain, os construtores de transações e a análise vivem todos num único núcleo nativo, compilado para cada plataforma. A interface também é nativa. Não há nenhum navegador embutido a desenhar a carteira nem nenhum motor de scripts a executá-la.
Isso tem três consequências que se sentem. A carteira arranca num instante. Em repouso, fica discreta, com uma pegada que deixa a máquina livre para o resto do trabalho. E não há nenhum runtime por baixo que se atualize sozinho, carregue pacotes ou execute código que foi buscar a algum lado.
O que não está lá dentro
Sem runtime de JavaScript. Uma grande parte dos comprometimentos de carteiras chega através de ecossistemas de pacotes e de injeção de scripts. Uma carteira sem motor de scripts não é alvo deles.
Sem web view. A interface é desenhada pelo toolkit, não por um componente de navegador. Não há página onde injetar código.
Sem telemetria, sem analítica, sem rastreadores. A carteira fala com nós de blockchain e com os fornecedores de swaps e de pontes que escolheres usar. Não fala connosco. Nada comunica com a casa-mãe, e não há conta para criar.

Plataformas
A aplicação de desktop corre em Windows, Linux e macOS, com uma build nativa para cada um. O mesmo código corre em hardware da classe Raspberry Pi, o que faz da AirNox uma boa opção para instalações embebidas: um terminal de casa de câmbio, um quiosque, um posto de assinatura de back-office. Uma pequena placa com um ecrã, um leitor NFC USB e a carteira é um ponto de operação completo, preparado para air gap, com as chaves num telemóvel que se encosta ao leitor.
Um único núcleo de assinatura
A aplicação do telemóvel e a do computador partilham o mesmo núcleo. O código que deriva chaves, constrói uma transação e descodifica uma transação para o ecrã é o mesmo nos dois dispositivos, compilado para cada um. Há uma implementação de cada blockchain para auditar, e não duas que tenham de estar de acordo, e uma correção de um lado é uma correção dos dois.
Porque é que importa
Pequena e nativa não é uma preferência de estilo. Cada dependência é um sítio onde o erro de outra pessoa passa a ser teu, e cada runtime é uma superfície de ataque. Toda a chamada de rede que não seja estritamente necessária deixa escapar alguma coisa. Uma carteira que é um único programa nativo, que só fala com os nós que lhe indicas, é uma carteira que consegues compreender a fundo. É esse o padrão que exigimos a todo o produto, do assinador (signer) no telemóvel à janela na tua secretária.
A série completa
- Parte do princípio de que o computador está comprometido
- Mass Adoption Security: o assinador é um telemóvel que já tens
- Três formas de atravessar o air gap: códigos QR, Bluetooth LE e NFC
- Invisível no ar: um assinador que nenhum scanner encontra
- O transporte nunca é de confiança
- O que o telemóvel te mostra: análise de transações no assinador
- O telemóvel guarda o seu próprio registo
- O cofre no teu computador: Argon2id e um perfil que resiste a tentativas de adivinhação
- dApps sem carteira no navegador
- Um servidor MCP com regras: agentes de IA dentro de limites
- Uma carteira protegida para tudo
- Pequena e nativa: C++, sem runtime de JavaScript, de uma estação de trabalho a um Raspberry Pi