Detalhes técnicos sobre o endereço stealth (endereço furtivo)

Neste artigo iremos entraremos em maiores detalhes técnicos sobre o que há por trás do endereço stealth, também conhecido como endereço furtivo, a chave pública de uso único do Monero.

Enviando

O protocolo CryptoNote calcula o endereço único de recebimento de acordo com a fórmula X = Hs (r*PV | i) G + PS. Vamos percorrer o significado desses símbolos e como Maria faz para gerar um endereço único ao enviar dinheiro para Jorge.

A variável r é a chave privada da transação, que é um escalar pseudo-aleatório de 256 bits. Maria (o remetente) é a única pessoa que conhecerá essa chave; nem mesmo Jorge (o destinatário) saberá qual foi o número aleatório que a carteira de Maria escolheu para r.

Maria então multiplica a chave de visualização pública de Jorge, PV, por r e, em seguida, acrescenta o índice de saída, i. Essa quantidade (r*PV | i) é então executada através da função hash_to_scalar, Hs (). Esta função gera um hash das suas entradas usando o algoritmo Keccak-256, e, em seguida, pega esse hash resultante e modula o número primo 2^255 + 27742317777372353535851937790883648493.

O termo Hs (r * PV | i) calculado no parágrafo acima é multiplicado pelo ponto base do ed25519, G. Por último, Maria adiciona essa quantidade à chave de gasto pública de Jorge, PS, para produzir a saída final, X, que é o enderço stealth (endereço furtivo).

Esse processo confuso permite que Maria oculte a transação para Jorge no blockchain, usando um endereço único gerado aleatoriamente, que ninguém conseguirá vinculá-lo a Jorge.

Recebendo

Dada a forma como Maria escondeu o moneroj que estava enviando a Jorge (obscurecido por uma chave privada de transação que nem mesmo Jorge sabe), você pode estar se perguntando: mas como Jorge vai fazer para encontrar seus Moneros na blockchain?

Jorge deve verificar o blockchain para as saídas que pertencem a ele. Esse processo é muito parecido com o método usado por Maria para gerar o endereço.

Jorge pega a chave de transação pública R do blockchain e multiplica pela sua chave de visualização privada, pV. Seguindo etapas semelhantes às de Maria, Jorge acrescenta o índice de saída i e depois aplica a função hash_to_scalar a (pV*R | i). Ele então multiplica o resultado por G e adiciona sua própria chave de gasto pública, PS. Se o valor resultante corresponder à saída, então isso significa que essa saída pertence a Jorge.

Em outras palavras, a carteira de Jorge varre todas as transações no blockchain para identificar saídas para as quais X = Hs (pV*R | i) G + PS.