Artigo 12 de 123 min de leitura

Pequena e nativa: C++, sem runtime JavaScript, da estação de trabalho ao Raspberry Pi

Uma carteira é um programa de segurança. Ela deveria ser pequena o bastante para ser auditada, rápida o bastante para você esquecer que existe e livre de peças móveis que não sejam dela.

Um chip C++ acima de um monitor, um notebook e um computador de placa única
Um binário nativo por plataforma.
Nesta página

C++ e Qt

A AirNox Wallet é escrita em C++ com o toolkit Qt. A criptografia, o código de cada blockchain, os montadores de transação e a triagem ficam todos num único núcleo nativo, compilado para cada plataforma. A interface também é nativa. Não há navegador embutido renderizando a carteira nem motor de scripts executando-a.

Isso tem três consequências que você sente. A carteira abre num instante. Ociosa, ela fica quieta, com um consumo 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 baixado de algum lugar.

O que não está lá dentro

Sem runtime JavaScript. Boa parte dos comprometimentos de carteiras chega por ecossistemas de pacotes e injeção de scripts. Uma carteira sem motor de scripts não é alvo para isso.

Sem web view. A interface é desenhada pelo toolkit, não por um componente de navegador. Não há página onde injetar nada.

Sem telemetria, sem analytics, sem rastreadores. A carteira conversa com nós de blockchain e com os provedores de swap e de ponte que você escolhe usar. Ela não conversa com a gente. Nada manda dados de volta para nós, e não há conta para criar.

Quatro blocos de plataforma para Windows, Linux, macOS e Raspberry Pi, e três itens riscados: sem runtime JavaScript, sem web view, sem telemetria
Onde ela roda e o que ela deixa de fora.

Plataformas

O aplicativo de desktop roda em Windows, Linux e macOS, com uma build nativa para cada um. O mesmo código roda em hardware da classe Raspberry Pi, o que faz da AirNox uma boa opção para instalações embarcadas: um terminal de casa de câmbio, um quiosque, uma estação de assinatura no back-office. Uma plaquinha com tela, um leitor NFC USB e a carteira formam um ponto de operação completo, pronto para air gap, com as chaves num celular que encosta no leitor.

Um só núcleo de assinatura

O app do celular e o desktop compartilham o mesmo núcleo. O código que deriva chaves, monta uma transação e decodifica uma para mostrar na tela é o mesmo código nos dois aparelhos, compilado para cada um. Há uma implementação de cada blockchain para auditar, não duas que precisam concordar, e uma correção de um lado é uma correção nos dois.

Por que isso importa

Ser pequena e nativa não é preferência de estilo. Cada dependência é um lugar onde o erro de outra pessoa vira o seu, e cada runtime é uma superfície de ataque. Toda chamada de rede que não é estritamente necessária vaza alguma coisa. Uma carteira que é um único programa nativo, conversando só com os nós que você indica, é uma carteira que você consegue entender. Esse é o padrão que aplicamos ao produto inteiro, do assinador (signer) no celular à janela na sua mesa.

A série completa

  1. Considere o computador comprometido
  2. Mass Adoption Security: o assinador é um celular que você já tem
  3. Três caminhos através do air gap: QR codes, Bluetooth LE e NFC
  4. Invisível no ar: um assinador que nenhum scanner encontra
  5. Nunca confiamos no transporte
  6. O que o celular mostra: análise de transações no assinador
  7. O celular mantém seu próprio registro
  8. O cofre no seu desktop: Argon2id e um perfil que resiste a tentativas de adivinhação
  9. dApps sem carteira de navegador
  10. Um servidor MCP com regras: agentes de IA dentro de limites
  11. Uma só carteira protegida para tudo
  12. Pequena e nativa: C++, sem runtime JavaScript, da estação de trabalho ao Raspberry Pi

Entre na lista de espera

Deixe seu e-mail e a gente manda novidades sobre os lançamentos. Só isso.