Se a empresa que criou a sua carteira desaparecesse hoje à noite, com os servidores desligados, o app removido da loja e a equipe impossível de contatar, você ainda conseguiria mover o seu dinheiro amanhã de manhã?
A maioria das pessoas não sabe responder a essa pergunta sobre a própria carteira, o que é estranho, porque é a única pergunta que importa. Todo o resto (os swaps, o gráfico do portfólio, as curvas de rendimento) é só decoração em cima de uma única promessa: a de que o dinheiro é de verdade seu.
Uma palavra que já não significa nada
Quase todas as carteiras que você pode baixar hoje se dizem «de autocustódia».
Quase todas as extensões de carteira e apps de exchange adotaram esse termo. Até produtos que guardam uma parte do seu material de chaves nos próprios servidores passaram a usá-lo.
Para entender melhor o que ele significa, primeiro é preciso fazer uma distinção importante.
Existe uma diferença entre «autocustódia» (self-custodial) e «sem custódia» (non-custodial), ainda que no setor esses termos sejam usados como se fossem intercambiáveis:
- A autocustódia é definida como uma carteira ou conta em que todas as chaves privadas são geridas pelo usuário, e nenhum provedor de serviços externo tem a capacidade de censurar ou impedir as transações do usuário em nenhum momento.
- Sem custódia é definida como uma carteira ou conta em que as chaves privadas são repartidas entre o usuário e um provedor de serviços externo, e esse provedor mantém alguma forma de controle sobre a conta.
A primeira descreve propriedade. A segunda descreve uma sociedade.
Como o rótulo não é realmente confiável, precisamos de um teste que o ignore por completo. Um teste que não pergunte como uma carteira chama a si mesma, e sim o que sobra do seu dinheiro depois que o criador dela não está mais. Projetar esse teste exige primeiro saber o que uma carteira deveria fazer. Então vamos começar por aí, pelas três coisas que você de verdade quer dela.
O que você de verdade quer
No fundo, você quer três coisas do software de uma carteira.
Primeiro, que ninguém possa pegar o seu dinheiro. Nem um ladrão, nem o congelamento de um serviço, nem mesmo a empresa cujo logo está no app. Os usuários da Celsius acreditavam que ganhavam rendimento sobre as próprias moedas, até que em junho de 2022 os saques foram interrompidos. O tribunal de falências depois tornou isso oficial: segundo os termos de uso que todos haviam aceitado com um clique, as moedas dessas contas de rendimento sempre tinham sido da Celsius. Os usuários não eram donos, eram «credores sem garantia». O slogan da empresa era «Unbank yourself» (livre-se do banco).[1]
Segundo, que você não possa perdê-lo por ser humano. As pessoas perdem o celular o tempo todo. Esquecem senhas. Anotam doze palavras num papel e depois mudam de apartamento, de cidade e de país. Uma parte importante de todo o bitcoin, segundo algumas estimativas um quinto, está em endereços que ninguém consegue mais acessar.[2] Um sistema que pune as circunstâncias normais da vida com uma perda total e permanente não é um sistema para pessoas normais.
Terceiro, que você não precise virar especialista. Existe um documento chamado «Glacier Protocol» que descreve um procedimento meticuloso para guardar Bitcoin com a máxima segurança.[3] É um trabalho excelente, e quase ninguém no planeta o concluiu. A segurança que depende de fazer o dever de casa só protege quem faz o dever de casa.
Vamos chamar essas três propriedades de soberania, resiliência e usabilidade.
Escolha dois
Durante quase toda a história das cripto, você só podia ter duas das três.
Uma carteira de hardware com um bom esquema de backup dá soberania e resiliência. No entanto, a configuração inicial é um projeto inteiro: dispositivos, frases-semente, talvez um multifirma espalhado por vários lugares. Cada dia seguinte é um ritual: você tem que achar o dispositivo, conectá-lo, conferir o endereço numa tela do tamanho de um selo, assinar, e repetir para cada chave. Ninguém consegue pegar o dinheiro e nenhum erro isolado o destrói, mas assim você não vai pagar um café. Nem sequer vai olhar o seu saldo sem abrir uma gaveta.
Uma carteira quente com frase-semente dá soberania e quase toda a usabilidade. Em uns minutos já está pronta e você envia com um toque. Muito cedo você começa a ver por onde escapa essa «fluidez». A configuração começa com uma cerimônia: copiar doze palavras num papel como um escriba medieval e depois passar por uma prova que comprove que você fez isso. A recuperação é onde a interface some por completo. Na autocustódia não existe o «esqueci minha senha»; existe a frase-semente, ou existe o zero. Você está a um print de tela, um site de phishing ou uma aprovação equivocada desse zero, para sempre.
Uma conta de exchange dá resiliência e usabilidade por completo. Cadastro com e-mail, redefinição de senha, uma caixa de suporte, nada de gas com que se preocupar, nada de endereços de quarenta caracteres. Parece qualquer outro app do seu celular porque é como qualquer outro app do seu celular: uma conta em que você faz login, não uma propriedade que você controla. A recuperação é fluida porque a exchange pode restabelecer o seu acesso. A pegadinha é que esse mesmo poder permite que ela deixe você de fora.
Por que você não pode ter as três
Isso não é um acaso de projeto ruim, e sim a própria estrutura do problema.
Uma chave privada é um único segredo. Para se proteger de perdê-la, você tem que copiá-la ou dividi-la; não há uma terceira opção. Cada cópia é uma nova forma de te roubarem. Cada pessoa ou servidor que guarda uma parte é mais alguém em quem confiar, e cada salvaguarda que você adiciona é atrito que o usuário paga, seja ao configurar, seja todo dia depois. Você não consegue fazer a confiança desaparecer, mas consegue mudá-la de lugar: para o papel, para o hardware ou para servidores de terceiros.
A autocustódia é responsabilidade. Quem carrega o peso das chaves tem a custódia. Esse peso não pode ser eliminado, apenas transferido para outro lugar ou outra pessoa, junto com a propriedade.
Como os outros «resolveram» isso
Antes de construir qualquer coisa, olhamos como o resto do setor havia resolvido essa tensão. Rapidamente percebemos que o trilema não estava resolvido, apenas disfarçado.
A versão moderna da «custódia» é assim:
Você baixa uma carteira e se cadastra com o Google. Sem cerimônia de frase-semente, sem prova, só uma tela de OAuth conhecida e você já está dentro. Parece uma conta de exchange, e o site diz autocustódia.
Por trás dessa tela amigável há uma concessão que nunca te mostram: as suas chaves agora vivem, no todo ou em parte, numa infraestrutura que você não controla.
Com o login social do MetaMask (construído sobre o Web3Auth), a sua frase de recuperação é cifrada e dividida numa rede de nove nós, dos quais cinco precisam cooperar.[4] Recuperá-la exige a rede de fragmentos deles, a sua conta do Google ou da Apple, e uma senha. Na configuração padrão da Privy, a sua chave é dividida em três fragmentos: um no seu dispositivo e dois (o fragmento de login e o depósito de recuperação) do lado da Privy.[5] Com a Turnkey, a chave nunca toca o seu dispositivo. Ela vive e assina dentro dos enclaves seguros da Turnkey.[6] A Magic faz o mesmo com uma caixa diferente: gera a chave no seu dispositivo e depois a sela dentro de um HSM de terceiros.[7]
Essa última parte soa tranquilizadora, e é justamente aí que está a pegadinha. O hardware garante que a chave não possa ser roubada. Não garante que só você possa usá-la. O enclave assina para quem quer que passe pelo login do app, e esse login é o que o desenvolvedor tiver construído: um código OTP por SMS, um link por e-mail ou um token de sessão. A chave pode estar perfeitamente segura enquanto esvaziam o seu dinheiro. Uma única redefinição de senha frágil, e o enclave assina para o atacante, exatamente como foi projetado.
As carteiras MPC costumam se apresentar como a saída para esse problema. Não são. Dividir a chave em fragmentos muda a mecânica da assinatura, não a questão da custódia, e a pergunta volta na hora: quem guarda os fragmentos? quem pode acionar a assinatura? quem controla a recuperação quando o seu celular não existe mais? Na maioria das carteiras de consumo a resposta é a mesma: um fragmento para você e o resto para o provedor. Pode ser que esse provedor não mova o seu dinheiro sozinho, mas ainda assim pode ser obrigado a assinar, a recuperar, a aplicar políticas ou a decidir se a sua conta funciona ou não.
Segundo as nossas duas definições, essas carteiras são sem custódia, não de autocustódia. A pergunta decisiva é simples: quem mais precisa cooperar antes que você possa mover ou recuperar os seus fundos?
Os apps não estão exatamente mentindo para você. Costuma haver um botão de exportar enterrado em algum lugar das configurações. A pegadinha é que o usuário médio nunca o encontra, nunca sabe que ele importa, e descobre o que a sua carteira era de verdade no dia em que a empresa tem um incidente, uma queda, ou uma opinião sobre a conta dele.
O teste do desaparecimento
Este é o teste ao qual nos submetemos. Duas perguntas, e uma pegadinha.
Material de chaves
Você consegue reconstruir as suas chaves a partir de coisas que só você tem, como um dispositivo e uma senha?
Ou recuperá-las significa passar pelos servidores de outra pessoa, pela rede de fragmentos dela, por aquilo que ela decidir aprovar?
Operações
Se o app morresse amanhã, existe uma forma pública e documentada de mover o seu dinheiro sem nós? Alguém que sabe o que está fazendo conseguiria segui-la só com a documentação?
A pegadinha
Suponha que a sua carteira passe nas duas. Talvez ela só passe porque era para você ter feito algo antes, como exportar uma chave ou guardar um backup. Você fez isso de verdade?
Onde ficam as carteiras
Uma carteira de hardware como uma Trezor ou uma Ledger, com a frase-semente gravada em aço, tem soberania e resiliência, e passa nas duas metades do teste do desaparecimento. O formato da chave é um padrão aberto, então uma dúzia de outras ferramentas conseguem restaurar o seu backup mesmo com a empresa há muito desaparecida. O preço é a usabilidade. Ninguém coloca a própria mãe num multifirma.
Uma carteira clássica com frase-semente tem soberania e usabilidade, e é preciso reconhecer, passa no teste sem problemas. A frase é portátil, e qualquer carteira concorrente a restaura amanhã de manhã. O problema dela nunca foi a custódia oculta. É que todo o canto da resiliência é um pedaço de papel com a sua letra.
Uma conta de exchange tem resiliência e usabilidade. O teste do desaparecimento não é tanto reprovado quanto inaplicável: nunca houve chaves para você perder. O seu saldo é uma linha no banco de dados deles, e o teste para bancos de dados é o tribunal de falências.
Sobra o meio, onde vivem as carteiras da seção anterior: o login social do MetaMask e as carteiras embutidas dentro dos apps movidos por Privy, Turnkey ou Magic. Estas são as únicas carteiras que anunciam os três cantos ao mesmo tempo, e o teste é o que expõe o canto que elas só fingem ter. Todas reprovam na metade do material de chaves por padrão: os fragmentos que importam estão numa infraestrutura que você não controla e que, na maior parte, não consegue nem nomear.
A recuperação na nuvem da Argent guarda um kit de recuperação cifrado no seu iCloud ou Google Drive, mas a chave necessária para decifrá-lo vive na infraestrutura da Argent. A conta de Ethereum dela também vem com a Argent como guardiã de recuperação padrão, verificada por e-mail e telefone.[8] Você pode substituir essa configuração, mas a rota de recuperação padrão continua passando pela empresa.
Natureza ou projeto?
Uma pergunta justa a esta altura: o trilema é uma lei da natureza, ou só um resquício de tecnologia antiga?
Acontece que é em parte as duas coisas.
Uma metade é uma lei de verdade: o peso das chaves não pode ser destruído, só movido, então em algum lugar sempre sobra uma concessão. A outra metade é um acidente da história. O trilema tal como o conhecemos pressupunha um único segredo que faz tudo. A chave que gasta o seu dinheiro é a chave que você precisa fazer backup é a chave cuja perda é fatal.
Em 2013, quando uma carteira era um arquivo num laptop e um backup era um pedaço de papel, essa suposição era simplesmente verdadeira. Já não é. Os celulares vêm com hardware seguro dedicado. As blockchains executam contas programáveis. O único segredo todo-poderoso é agora uma decisão de projeto, e você pode escolher diferente.
Você ainda não consegue fazer a concessão desaparecer, mas consegue decidir onde ela cai, e já não precisa amarrar o gasto, o backup e a perda catastrófica a um único segredo frágil.
O que construímos
Uma conta MozaikPay é uma conta inteligente on-chain, controlada por duas chaves distintas.
A primeira é uma chave de gasto, gerada no seu celular no momento em que você se cadastra. Ela vive no hardware seguro do dispositivo, o Secure Enclave no iOS ou o Keystore no Android. Nunca sai do seu celular. Não recebe backup, nem é sincronizada, nem enviada aos nossos servidores, e não pode ser recuperada por nós se o seu celular não existir mais. Ela pode fazer exatamente uma coisa: mover os seus fundos.
A segunda é uma chave de recuperação, gerada no mesmo celular no mesmo momento, e imediatamente cifrada com uma senha que só você conhece e define. O bloco cifrado é o que recebe backup: no seu iCloud, no seu Google Drive, um arquivo que você envia por e-mail para si mesmo, onde quiser. A senha nunca é enviada a lugar nenhum. Nunca a vemos, e nunca vemos a chave que ela protege. O único poder do signatário de recuperação é a rotação: ele pode substituir o signatário de gasto, e pode substituir a si mesmo. Nunca pode mover dinheiro.
Você também pode usar uma carteira de hardware (como uma Ledger ou uma Trezor) como signatário de recuperação da sua conta. Assim você mantém a fluidez do dia a dia de um celular que gasta com um toque, enquanto a única chave cuja perda é fatal vive em armazenamento a frio.
Essa separação não é uma convenção imposta pelo nosso app.
Ela é imposta pelo próprio contrato da conta, em Solidity. O contrato verifica a ação invocada contra a chave que a assinou, e rejeita o emparelhamento incorreto on-chain. Um signatário de gasto que tenta rotacionar chaves reverte. Um signatário de recuperação que tenta enviar fundos reverte.
Esta é a reorganização que as carteiras mais antigas não conseguiam fazer: a chave que você usa todos os dias não é a chave cuja perda é fatal.
Se o seu celular for destruído, o signatário de gasto morre com ele, e nada do que você possui é perdido. Você restaura o bloco cifrado num celular novo, digita a sua senha, e o signatário de recuperação rotaciona um novo signatário de gasto no lugar, on-chain. A chave do celular antigo, mesmo que alguém depois a tire de um aterro, não assina para nada.
Se a sua senha for esquecida e o seu backup sumir, o signatário de recuperação some, mas o seu signatário de gasto ainda está no seu celular e o seu dinheiro ainda pode ser gasto. Você tem tempo de mover os fundos para uma conta nova enquanto o dispositivo ainda funciona. A única perda total é perder os dois de uma vez, que tem a mesma forma de perder o seu celular e o seu gerenciador de senhas no mesmo dia. É o modo de falha de todas as contas que você já tem.
Se por acaso você algum dia suspeitar que o seu backup vazou, a chave de recuperação pode ser rotacionada para uma nova sob uma nova senha, on-chain. A chave de recuperação antiga, onde quer que tenha parado, fica na hora sem nenhum valor.
Celular destruído
A chave de gasto morre com ele. Restaure a conta com a chave de recuperação num celular novo e uma nova chave de gasto é criada. Fundos a salvo.
Backup ou senha perdidos
A chave de recuperação some, mas a chave de gasto ainda está no seu celular. Mova os fundos para uma conta nova enquanto o dispositivo funcionar. Fundos a salvo.
Backup vazado
O seu backup está sempre cifrado e exige uma senha para ser decifrado. Você pode trocar a sua chave de recuperação sempre que suspeitar que o material de backup antigo vazou. O bloco cifrado vazado fica na hora sem nenhum valor.
O teste do desaparecimento, aplicado a nós
Material de chaves: A chave de gasto está no seu dispositivo, num hardware que não conseguimos alcançar. A chave de recuperação está cifrada com uma senha que nunca vimos, num arquivo que não hospedamos. Não guardamos fragmentos, nem depósitos em garantia, nem shards, nem uma chave mestra. Se desaparecermos, nenhuma parte do seu material de chaves desaparece conosco.
Operações: A conta é um contrato público ERC-4337. Qualquer desenvolvedor competente com a sua chave de recuperação e uma documentação mínima pode montar uma transação que rotaciona o signatário de gasto e enviá-la para qualquer endpoint público. Não há nenhum RPC proprietário nem nenhum servidor da MozaikPay em nenhuma parte do caminho.
A concessão que aceitamos
Não escapamos do trilema. Nós o movemos, e o canto que cede é a comodidade.
Hoje a MozaikPay patrocina cada transação por meio de um paymaster que operamos, então você nunca esbarra numa tela de «compre ETH para as taxas» e nunca paga para enviar. Também cuidamos das partes que ninguém gosta de fazer na mão: trazer dólares digitais para dentro, e convertê-los de volta em moeda local por meio de parceiros locais licenciados, com o custo total exibido antes de você tocar em confirmar, não depois.
Tudo isso depende de continuarmos aqui. Se fechássemos amanhã, a sua conta continua existindo, e os seus fundos continuam se movendo; você simplesmente bancaria o seu próprio gas e buscaria a sua própria rampa de saída, do jeito que qualquer outro usuário de autocustódia já faz.
Os fundos são seus incondicionalmente. A fluidez de movê-los de graça numa terça à tarde, e os canais licenciados que os transformam em dinheiro local que você pode gastar, são as partes que dependem de continuarmos aqui. A comodidade pode se degradar, mas a propriedade não deveria.
O que fica
A propriedade não é o que o app deixa você fazer enquanto o projeto está vivo. É o que você ainda consegue fazer depois que ele não existe mais.
Os apps são removidos, os servidores são desligados, as equipes se dissolvem. Toda carteira acaba, mais cedo ou mais tarde, virando software que ninguém mantém, de uma empresa que ninguém lembra. A pergunta é se o seu dinheiro sobrevive a essa transição.
Então, se o criador da sua carteira desaparecesse hoje à noite, o seu dinheiro ainda seria seu de manhã?
Somos o time por trás da MozaikPay, uma carteira de dólares digitais para pagar, receber e sacar. Entre na lista de espera abaixo.👇
Referências
- Departamento de Justiça dos EUA, Alexander Mashinsky Pleads Guilty.
- Nathaniel Popper, Lost Passwords Lock Millionaires Out of Their Bitcoin Fortunes, The New York Times, janeiro de 2021.
- Glacier Protocol - protocolo de armazenamento a frio de alta segurança para Bitcoin.
- MetaMask, Wallet Management Infrastructure.
- Privy, Wallets and architectures: threat models.
- Turnkey, Embedded Wallets overview.
- Magic, Client-side key generation in DKMS.
- Argent, Add a guardian to your Argent Ethereum wallet.