Original:
Silent paymentsAutor:
witcher_sense
IntroduçãoNeste tópico, gostaria de discutir uma proposta interessante de Ruben Somsen chamada "Pagamentos silenciosos", que é uma técnica de melhoria de privacidade destinada a tornar os pagamentos entre duas partes na blockchain menos transparentes para um observador externo. Baseia-se em conceitos como "endereços furtivos" e "códigos de pagamento reutilizáveis" e, essencialmente, tenta resolver o mesmo problema de uma forma mais elegante.
A ideia básicaA ideia básica é a seguinte:
usuário A publica algum
identificador (geralmente uma chave pública), e o
usuário B combina sua chave privada com a chave publicada de
A e cria um endereço único do qual apenas
A pode gastar. O
usuário C também pode enviar dinheiro para o
usuário A combinando sua chave privada com um endereço de
A e derivando outro endereço único. O
usuário A saberá que tanto o
usuário B quanto o
usuário C lhe enviaram dinheiro, mas
B e
C não saberão um sobre o outro. Portanto, isso permite que o
usuário A receba pagamentos em endereços completamente desconexos usando apenas um endereço público.
Como funcionaDigamos que Bob queira enviar um pagamento silencioso para Alice.
Alice cria um identificador único (digamos, uma chave pública) usando matemática de curva elíptica padrão:
A = a*G, onde
A - Chave pública de Alice (um ponto em uma curva elíptica),
a - Chave privada de Alice (um número aleatório que deve ser mantido em segredo), e
G - O ponto gerador (algum ponto pré-definido em uma curva elíptica).
Alice torna este identificador
A público para que Bob (e também outros usuários como Carol) possam saber para onde enviar pagamentos.
Bob escolhe uma das entradas que ele controla que contém uma chave pública
B = b*G, onde
B - Chave pública de Bob (um ponto em uma curva elíptica),
b - Chave privada de Bob (um número inteiro aleatório que apenas Bob conhece), e
G - O ponto gerador.
Bob pega a chave pública de Alice
A e constrói uma nova chave pública usando a seguinte fórmula:
A' = hash(b*A)*G + A, onde
A' - Uma chave pública para a qual o pagamento de Bob é feito.
Bob faz um pagamento para Alice criando uma saída associada a uma chave pública previamente construída
A'.
Dado que
bA = baG = abG = aB, Alice pode reconstruir a mesma chave pública
A' usando sua chave privada
a com a seguinte fórmula:
A' = (hash(a*B) + a)G, onde
hash(aB) + a - A nova chave privada de Alice que lhe permite gastar dinheiro da saída correspondente à chave pública
A'.
No entanto, o problema é que Alice precisa saber a chave pública de Bob
B para detectar seu pagamento, e é por isso que ela verifica continuamente a blockchain tentando descobrir quais das chaves públicas podem ser combinadas com sua chave privada
a para reconstruir endereços bitcoin existentes.
Prós: Nenhuma interação entre remetentes e destinatários é necessária. Para um remetente fazer um pagamento, ele só precisa construir um endereço a partir da chave pública silenciosa do destinatário.
Pagamentos silenciosos usam o espaço do bloco com mais eficiência, pois não há necessidade de transações de "anúncio", como no caso do BIP47. Portanto, uma transação equivale a um pagamento, o que é perfeito para doações pontuais.
Transações silenciosas são indistinguíveis de transações regulares (por exemplo, sem saídas OP_RETURN para compartilhar uma chave pública efêmera como no caso de "Endereços furtivos"), o que significa que, com elas, é trivial para os usuários se esconderem na multidão - o conjunto de anonimato é toda a blockchain.
Endereços derivados da chave pública silenciosa inicial são sempre determinísticos e únicos porque cada remetente usa suas próprias chaves únicas para ajustar a chave pública silenciosa do destinatário.
Pagamentos silenciosos incentivam o destinatário dos fundos a manter seu próprio nó completo (full node) de Bitcoin rodando, o que automaticamente resulta em uma rede mais descentralizada.
Ninguém, exceto o remetente da transação e seu destinatário, saberá que o pagamento realmente ocorreu.
Pagamentos silenciosos melhoram muito a fungibilidade das transações de bitcoin.
Contras: A maior desvantagem desta técnica é o custo de validação relativamente alto. Dado que um destinatário de pagamentos não sabe com antecedência quais endereços bitcoin podem ser gastos com uma chave privada que ele controla, ele tem que verificar cada entrada de cada transação, calculando e comparando chaves públicas.
Potencial do remetente para reutilização de endereço. Quando um remetente tem múltiplas entradas compartilhando a mesma chave pública, cada uma dessas entradas resultará no mesmo endereço calculado. A reutilização do endereço é considerada uma má prática de privacidade e deve ser evitada a todo custo. Isso poderia ser mitigado incluindo informações adicionais no processo computacional, mas cria um ônus adicional, especialmente para clientes leves (light clients). Alternativamente, um remetente pode gastar todas as entradas em uma única transação, mas isso também revela propriedade comum, o que prejudica a privacidade.
Referências:1]
https://gist.github.com/RubenSomsen/c43b79517e7cb701ebf77eec6dbb46b82]
https://github.com/genjix/bips/blob/master/bip-stealth.mediawiki3]
https://github.com/bitcoin/bips/blob/master/bip-0047.mediawiki4]
https://en.m.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman5]
https://bitcoinops.org/en/newsletters/2022/04/06/6]
https://bitcoinmagazine.com/technical/bitcoin-silent-payments-secret-keys7]
https://bitcoinmagazine.com/technical/improving-bitcoin-privacy-with-silent-payments8]
https://gist.github.com/w0xlt/72390ded95dd797594f80baba5d2e6ee[/list]
Tradução