b-money
Ao contrário das comunidades tradicionalmente associadas à palavra “anarquia”, em uma criptoanarquia o governo não é temporariamente destruído, mas permanentemente proibido e permanentemente desnecessário.
Original: b-money
Wei Dai, November 1998
Sou fascinado pela criptoanarquia de Tim May. Ao contrário das comunidades tradicionalmente associadas à palavra “anarquia”, em uma criptoanarquia o governo não é temporariamente destruído, mas permanentemente proibido e permanentemente desnecessário. Trata-se de uma comunidade onde a ameaça da violência é impotente, porque a violência é impossível; e a violência é impossível porque seus participantes não podem ser vinculados aos seus verdadeiros nomes nem às suas localizações físicas.
Até o momento, não está claro, nem mesmo em teoria, como uma comunidade assim poderia funcionar. Uma comunidade é definida pela cooperação entre seus participantes, e uma cooperação eficiente exige um meio de troca (dinheiro) e uma forma de fazer cumprir contratos. Tradicionalmente, esses serviços são fornecidos pelo governo ou por instituições patrocinadas pelo governo, e apenas para entidades legais. Neste artigo, descrevo um protocolo pelo qual esses serviços podem ser fornecidos para e por entidades impossíveis de rastrear.
Na verdade, descreverei dois protocolos. O primeiro é impraticável, porque faz uso intensivo de um canal de transmissão anônima síncrono e impossível de ser bloqueado (unjammable [1]). No entanto, ele servirá de motivação para o segundo protocolo, mais prático. Em ambos os casos, assumirei a existência de uma rede impossível de rastrear, na qual remetentes e destinatários são identificados apenas por pseudônimos digitais (isto é, chaves públicas), e toda mensagem é assinada por seu remetente e criptografada para seu destinatário.
No primeiro protocolo, cada participante mantém um banco de dados (separado) indicando quanto dinheiro pertence a cada pseudônimo. Essas contas, em conjunto, definem a propriedade do dinheiro, e a forma como essas contas são atualizadas é o objeto deste protocolo.
1. A criação do dinheiro: Qualquer pessoa pode criar dinheiro transmitindo a solução para um problema computacional que ainda não tenha sido resolvido. As únicas condições são que seja fácil determinar quanto esforço computacional foi necessário para resolver o problema e que a solução não tenha qualquer outro valor, seja prático ou intelectual. A quantidade de unidades monetárias criadas é igual ao custo desse esforço computacional medido em uma cesta padrão de commodities.
Por exemplo, se um problema leva 100 horas para ser resolvido no computador que o resolve da maneira mais econômica, e forem necessárias 3 cestas padrão para comprar 100 horas de tempo de computação nesse computador no mercado aberto, então, quando a solução desse problema for transmitida, todos creditarão a conta do transmissor em 3 unidades.
2. A transferência de dinheiro: Se Alice (proprietária do pseudônimo KA) desejar transferir X unidades monetárias para Bob (proprietário do pseudônimo KB), ela transmite a mensagem: "Eu entrego X unidades monetárias para KB", assinada por KA.
Após a transmissão dessa mensagem, todos debitam X unidades da conta de KA e creditam X unidades na conta de KB, a menos que isso resulte em saldo negativo na conta de KA. Nesse caso, a mensagem é simplesmente ignorada.
3. A formalização dos contratos: Um contrato válido deve incluir, para cada uma das partes envolvidas, uma reparação máxima em caso de inadimplência. Também deve incluir uma parte responsável por realizar a arbitragem caso haja uma disputa. Todas as partes do contrato, incluindo o árbitro, devem transmitir suas assinaturas antes que ele entre em vigor. Após a transmissão do contrato e de todas as assinaturas, cada participante debita da conta de cada parte o valor correspondente à sua reparação máxima e credita uma conta especial, identificada por um hash criptograficamente seguro do contrato, com a soma de todas as reparações máximas. O contrato entra em vigor se todos os débitos puderem ser realizados sem que nenhuma conta fique com saldo negativo. Caso contrário, o contrato é ignorado e todas as contas retornam ao estado anterior. Um contrato de exemplo poderia ser assim:
KA concorda em enviar a KB a solução para o problema P antes das 00:00:00 de 01/01/2000.
KB concorda em pagar a KA 100 UM (unidades monetárias) antes das 00:00:00 de 01/01/2000.
KC concorda em realizar a arbitragem em caso de disputa.
KA concorda em pagar uma reparação máxima de 1000 UM em caso de inadimplência.
KB concorda em pagar uma reparação máxima de 200 UM em caso de inadimplência.
KC concorda em pagar uma reparação máxima de 500 UM em caso de inadimplência.
A conclusão dos contratos: Se um contrato for concluído sem disputa, cada parte transmite uma mensagem assinada dizendo: "O contrato com hash SHA-1 H foi concluído sem reparações." Ou, alternativamente: "O contrato com hash SHA-1 H foi concluído com as seguintes reparações: ..." Após a transmissão de todas as assinaturas, cada participante credita novamente a conta de cada parte com o valor de sua reparação máxima, remove a conta do contrato e, em seguida, credita ou debita a conta de cada parte conforme o cronograma de reparações, caso exista um.
5. A execução dos contratos: Se as partes de um contrato não conseguirem chegar a um acordo sobre uma conclusão apropriada, mesmo com o auxílio do árbitro, cada parte transmite um cronograma sugerido de reparações e/ou multas, juntamente com quaisquer argumentos ou evidências em seu favor. Cada participante determina, por conta própria, quais reparações e/ou multas considera corretas e modifica suas contas de acordo com essa decisão.
No segundo protocolo, as contas que registram quanto dinheiro pertence a cada pessoa deixam de ser mantidas por todos os participantes e passam a ser mantidas por um subconjunto deles (chamados de servidores daqui em diante). Esses servidores são interligados por um canal de transmissão no estilo Usenet. O formato das mensagens de transação transmitidas por esse canal permanece o mesmo do primeiro protocolo, mas os participantes afetados por cada transação devem verificar se a mensagem foi recebida e processada com sucesso por um subconjunto de servidores escolhido aleatoriamente.
Como os servidores precisam ser confiáveis até certo ponto, é necessário um mecanismo para mantê-los honestos. Cada servidor deve depositar uma determinada quantia de dinheiro em uma conta especial, que servirá como fonte de multas ou recompensas em caso de comprovação de má conduta. Além disso, cada servidor deve publicar periodicamente e se comprometer com o estado atual de seus bancos de dados de criação de dinheiro e de propriedade do dinheiro.
Cada participante deve verificar se o saldo de sua própria conta está correto e se a soma de todos os saldos das contas não ultrapassa a quantidade total de dinheiro criada. Isso impede que os servidores, mesmo agindo em conluio total, expandam permanentemente e sem custo a oferta monetária. Novos servidores também podem utilizar esses bancos de dados publicados para sincronizar seu estado com os servidores já existentes.
O protocolo proposto neste artigo permite que entidades pseudônimas impossíveis de rastrear cooperem entre si de maneira mais eficiente, fornecendo um meio de troca e um método para fazer cumprir contratos. Provavelmente esse protocolo pode ser tornado mais eficiente e mais seguro, mas espero que ele represente um passo em direção a transformar a criptoanarquia em uma possibilidade prática, e não apenas teórica.
Apêndice A: um método alternativo para a criação de b-money
Uma das partes mais problemáticas do protocolo do b-money é a criação de dinheiro. Nessa etapa, o protocolo exige que todos os responsáveis pelas contas concordem sobre o custo de determinadas computações.
Infelizmente, como a tecnologia computacional tende a evoluir rapidamente — e nem sempre de forma pública — essas informações podem estar indisponíveis, ser imprecisas ou simplesmente estar desatualizadas. Qualquer uma dessas situações poderia causar problemas sérios para o protocolo.
Por isso, proponho um subprotocolo alternativo para a criação de dinheiro. Nele, os responsáveis pelas contas (todos os participantes no primeiro protocolo, ou apenas os servidores no segundo) passam a decidir e concordar sobre a quantidade de b-money que será criada em cada período, enquanto o custo de criar esse dinheiro é determinado por meio de um leilão.
Cada período de criação monetária é dividido em quatro fases:
Planejamento: Os responsáveis pelas contas realizam cálculos e negociam entre si para determinar qual deve ser o aumento ideal da oferta monetária no período seguinte. Independentemente de conseguirem ou não chegar a um consenso, cada um transmite publicamente sua proposta de criação monetária, juntamente com os cálculos macroeconômicos utilizados para justificar seus números.
Lances: Qualquer pessoa que deseje criar b-money transmite um lance no formato <x, y>, em que:
x é a quantidade de b-money que deseja criar;
y é um problema ainda não resolvido pertencente a uma classe de problemas previamente definida.
Cada problema dessa classe deve possuir um custo nominal (por exemplo, medido em MIPS-anos) previamente acordado e conhecido publicamente.
3. Computação: Após observar todos os lances apresentados, aqueles que participaram da fase de lances podem resolver os problemas incluídos em suas propostas e transmitir suas respectivas soluções.
4. Criação do dinheiro: Cada responsável pelas contas aceita os melhores lances — dentre aqueles cujas soluções foram efetivamente transmitidas — classificados pelo maior custo nominal de computação por unidade de b-money criada.
Em seguida, os saldos das contas dos vencedores são creditados com a quantidade correspondente de b-money.
Notas do Tradutor:
[1] Unjammable: impossível de travar ou imune a interferências. No contexto militar e eletrônico (Sinais e Drones), refere-se a sistemas de comunicação, radares ou drones que são resistentes a bloqueadores de sinal. Em zonas de conflito, drones controlados por fibra óptica são considerados unjammable porque não dependem de ondas de rádio (que podem ser cortadas pelo inimigo)


