Publicidade

O Evangelho de Satoshi Nakamoto – Cap. 14 vers. 2

Boa tarde queridos.

Continuamos hoje a tradução de “Detecting Double Spending”, de Hal Finney. Que começamos no versículo anterior.

CONTINUA APÓS A PUBLICIDADE

 

A coisa boa sobre esse dinheiro é que ele permite ‘cegar’, um método de fazer com o que o banco assine o valor sem saber que valor ele está assinando. Funciona assim. Alice escolhe x, que será o x no dinheiro. Ela calcula f(x), mas em vez de enviá-lo ao banco para ser assinada (aumentada na 1/3 da potência) ela primeiro escolhe um número aleatório r e envia f(x)*r^3 para o banco. O banco leva esse número para a potência de 1/3, obtendo r*f(x)^(1/3). Lembre-se, porém, de que o banco não vê r ou f(x) separadamente, mas apenas seu produto. Ele não sabe o que r ou f(x) é. Eles poderiam ser qualquer coisa na verdade.

O banco envia este r*f(x)^(1/3) de volta para Alice, e ela o divide por r, que ela sabe. Isso dá a ela f(x)^(1/3), e ela coloca isso junto com x para obter seu dinheiro digital: (x, f(x)^(1/3)). Ela tem um pedaço de dinheiro que só poderia ter sido assinado pelo banco, mas o banco não o reconhecerá quando for depositado.

CONTINUA APÓS A PUBLICIDADE

Outras coisas, não matemáticas, sucedem enquanto essa retirada acontece. Alice deve provar sua identidade ao banco, como mencionado acima. E o banco vai debitar sua conta pelo valor do dinheiro. Nesse sistema, nós estamos assumindo por simplicidade que todo o dinheiro tem o mesmo valor. Em um sistema real, diferentes valores podem ser codificados por expoentes diferentes de 3.

Quando Alice deposita o dinheiro, Bob deve ligar para o banco para se certificar de que não tenha sido depositado antes, sendo este um sistema “online”. Embora o banco não reconheça x (nunca ouviu falar dele), ele se lembrará de todos os x’s que foram depositados e, assim, poderá alertar Bob se o dinheiro tiver sido gasto anteriormente. Tanto Bob quanto o banco podem verificar a assinatura digital do dinheiro e, assim, honrá-lo.

Todo o material acima ocupa menos de uma página do artigo de nova páginas de Chaum. Para Chaum, isso é trivial. Agora chegamos a parte interessante. Veremos agora o esquema que permite que quem cometa gasto duplo percam seu anonimato. Isso permitirá dinheiro eletrônico “offline”; Bob não precisará mais verificar com o banco se o dinheiro já foi gasto. Ele aceita de Alice sabendo que, se ela trapaceia, o banco vai honrar o dinheiro e processar Alice para compensar a perda.

CONTINUA APÓS A PUBLICIDADE

(Para tornar essa explicação mais fácil de entender, irei descrever uma versão ligeiramente simplificada do dinheiro offline de Chaum. A versão que descrevo requer o uso de uma função unidirecional não-invertível como na f() usada acima. A versão de Chaum não requer uma suposição tão forte e fornece uma rastreabilidade “incondicional” mesmo se a função unidirecional for quebrada.)

Vamos começar com a forma do dinheiro em si. É o produto dos números k/2, onde k é um “parâmetro de segurança” que afeta a chance de sucesso de um trapaceiro. Cada número é da forma g(xi,yi)^(1/3), onde g é uma função unidirecional de dois argumentos semelhante à f acima. (O “xi”, “yi”, “ai”, etc. aqui são valores separados para cada i de 0 a k/2.)

O xi e o yi são assim: xi = f(ai), onde ai é um número aleatório, e f é outra função unidirecional. O yi é meio complicado. É f(ai xor <info>), onde <info>, a chave para toda essa operação, está identificando informações sobre a conta de Alice! É o número da conta dela concatenada com um número de série para o dinheiro.

CONTINUA APÓS A PUBLICIDADE

Agora, por que passar por isso tudo? Aqui está o porquê. Se você pudesse descobrir ai e (ai xor <info>), para alguns i, você saberia a identidade de Alice. (Fazendo a disjunção exclusiva [xor], produziria-se <info>.) Quando Alice comete gasto duplo, ambos ai e ai xor <info> serão revelados.

O que acontece quando Alice gasta a moeda é isso. Para cada i de 0 a k/2, Bob escolhe 0 ou 1 aleatoriamente. Se ele escolhe 1, ele é informado de ai e yi. Se ele escolhe 0, ele será informado (ai xor <info>) e xi. Isso permitirá que ele verifique a assinatura no dinheiro, conforme descrito em mais detalhes abaixo.

Note que quando Bob receber essa informação, ele saberá um monte de ai’s, e ele saberá um monte de (ai xor <info>)’s, mas ele não sabe ambos ai e (ai xor <info>) para qualquer um i. Então ele não pode quebrar o anonimato de Alice.

CONTINUA APÓS A PUBLICIDADE

Quando Bob deposita o dinheiro no banco, ele repassa as informações que recebeu de Alice sobre os ai’s e outros.

Agora suponha que Alice trapaceie. Ela gasta o dinheiro de novo em algum outro lugar, no Charlie’s. Charlie passa pelo mesmo procedimento que Bob, escolhendo 0 ou 1 aleatoriamente para cada valor de i. Aqui está o truque. Como ele está escolhendo aleatoriamente, seria muito improvável que ele escolhesse exatamente os mesmos 0’s e 1’s que  Bob escolheu. (Aqui é onde o tamanho de k importa – tornando-o maior, é menos provável que Charlie e Bob escolham o mesmo padrão de 0’ e 1’s. Mas faz com que os cálculos demorem mais tempo.) Isso significa que para um ou mais valores de i, Charlie provavelmente escolherá um 0 onde Bob escolheu um 1, ou vice-versa.

Por causa disso, se Bob tiver um ai para esse i, Charlie vai ter ai xor <info>. Ou se Bob tiver ai xor <info>, Charlie vai conseguir ai. De qualquer forma, quando Charlie envia seus registro dessas informações para o banco, o banco coloca as informações de Bob e Charlie juntas e obtém ambos ai e ai xor <info>. Fazendo a disjunção exclusiva (xor) dos dois, revela-se <info>, é Alice é pega! Essa é a ideia.

(Chaum sugere não apenas depender da chance aleatória para garantir que Bob e Charlie usem conjuntos diferentes de 1’s e 0’s. Pelo menos alguns dos bits podem ser atribuídos a Bob e Charlie pelo banco de tal forma que todos obtenham um número diferente. Desta forma, seria garantido que Bob e Charlie escolheriam valores opostos para alguns i.)

 

Terminamos assim o segundo versículo. O próximo é a última parte da obra. Até amanhã, Deus os abençoe!

Compartilhe este artigo
@leonardobjahn Natural de Florianópolis, SC 27 anos Evangelista Bitcoin Graduando Administração na UFSC Professor particular e tradutor de Inglês
Sair da versão mobile