Bem vindo! Novo em Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

Idioma

A Metamorfose de Transações Maleáveis

Simon Liu | Aug 31, 2016

Transação maleável tem sido um problema de longa data para as criptomoedas como Bitcoin e seus derivados, e é uma questão que a equipe Zcash têm-se esforçado para resolver. Vamos explorar o que é o problema e porque é importante que isso se resolva a longo prazo.

Em poucas palavras, maleabilidade da transação é o lugar onde uma transação válida pode ser modificada durante o seu voo, uma vez que se propaga através da rede. Os detalhes podem ser encontrados aqui. Enquanto o modificador não tem acesso às chaves privadas do remetente e é incapaz de roubar fundos para ganho pessoal, a operação alterada não representar um problema porque pode ser considerada válida pela rede. Isto é, poderia haver duas operações que tentam passar as mesmas moedas, mas com diferentes IDs de transação.

Embora tais modificações são muitas vezes pensado para ser apenas um incômodo, maleabilidade da operação tem impacto no mundo real. Primeiro, o software da carteira não pode contar com um ID de transação para controlar um movimento de fundos. Em segundo lugar, as empresas que dependem de operações encadeadas, onde a mudança de uma transação é gasta imediatamente em uma nova transação, vai descobrir que a cadeia pode ser quebrada. Em terceiro lugar, as soluções off-chain destinadas a melhorar a taxa de operação, tais como Lightning e BOLT, são mais práticos, se a maleabilidade da transação é a primeira resolvida.

Como corrigir a maleabilidade? Uma solução proposta para nós tem sido a de back-port Segregated Witness (segwit), que aborda uma série de questões, incluindo a maleabilidade. No entanto, foi decidido há alguns meses que não era possível fazê-lo dentro de cronograma do projeto Zcash, especialmente porque segwit era uma obra em andamento. Hoje, o desenvolvimento de segwit está mais completo, mas ainda tem de ser implantado e ativado através da rede Bitcoin.

A nossa própria tentativa de uma solução menores e mais focados foi lançado há algumas semanas como parte do release alpha z8 e implantados para a rede de teste. Embora sem problemas durante o uso diário, o que tinha sido sempre consciente de que pode haver casos de erros e as questões de segurança ainda não tinham sido detectados. Na verdade, há um bug onde um bloco recém-extraído poderia ser modificado com risco de negação de serviço, o que, felizmente, foi encontrado por nossos auditores como parte do auditoria de segurança da Zcash. Embora a correção em si é bastante simples, a discussão levantou uma série de questões para a equipe avaliar a fim de fornecer uma solução completa e robusta.

Após consideração, tendo em conta os recursos disponíveis e o cronograma do projeto, a equipe decidiu reverter as alterações feitas. Sentimos que seria prudente para lançar com conhecimento em vez de introduzir novas incógnitas. Nossa exploração de maleabilidade da transação destaca a importância da avaliação de terceira parte independente para o processo de desenvolvimento, especialmente em torno do protocolo de consenso, onde até mesmo a menor das alterações podem repercutir com efeitos colaterais Kafkaesque difíceis de prever. Somos gratos aos nossos auditores da Coinspect para nos ajudar a pegar algumas borboletas!

Por favor nos ajude, rodando o mais recente alpha release z9 da Zcash e nos informe de quaisquer bugs, problemas e problemas de usabilidade que você encontrar. Você pode contactar à equipa mediante a apresentação de uma questão no GitHub ou a visitar o nosso canal no comunidade Slack da Zcash. Obrigado.