Uma jornada que começou no final do verão de 2022 finalmente chegou a um final feliz. As carteiras Zcash de terceiros estão funcionando novamente e a Electric Coin Co. (ECC) está saindo do modo de emergência.
Durante esse período, a ECC lançou diversas atualizações para zcashd e lightwalletd, além de novos SDKs móveis que, juntos, introduziram inovações (e aprendizado) no mundo da criptografia e do dinheiro descentralizado. Esses lançamentos fornecem atualizações massivas para privacidade, escalabilidade e experiência do usuário no Zcash, e têm implicações para todos os projetos de criptografia com foco na privacidade.
Antes de prosseguir, precisamos agradecer imensamente aos nossos parceiros de carteira Edge, Nighthawk e Unstoppable que trabalharam conosco para testar versões e enviar bugs, e foram rápidos em implementar os SDKs 2.0 quando estavam prontos.
Os engenheiros do ECC merecem um reconhecimento especial – e possivelmente férias – depois de dedicarem muitas horas durante muitos meses a complicadas descobertas e desenvolvimentos. Trabalhando durante a reestruturação do ECC e enfrentando prazos difíceis, enquanto enfrentavam outras emergências cruciais, como a divulgação de Halborn, eles forneceram tecnologia inovadora que eleva a experiência do usuário do ZEC.
Fundo
A partir de junho de 2022, a rede Zcash começou a experimentar um enorme aumento no volume de transações protegidas. Essa carga adicional de rede causou um “acúmulo de dados” que impediu que as carteiras Edge, Nighthawk e Unstoppable pudessem sincronizar em um período de tempo razoável. Essas três carteiras contam com SDKs móveis da ECC.
Os processos de sincronização da carteira exigiam a verificação de todo o blockchain antes que os fundos estivessem disponíveis para serem gastos. E quando as carteiras não sincronizavam, os usuários não conseguiam acessar ou gastar seus fundos.
Em outubro de 2022, o ECC entrou em modo de emergência e deixou de lado todas as outras prioridades do roteiro. Do nosso blog em março de 2023:
É um desafio complicado de enfrentar e, no mínimo, requer o desenvolvimento e implementação (1) de um algoritmo mais rápido que não exija uma sincronização linear de todos os blocos na cadeia e (2) modificações nas ferramentas que darão aos usuários a capacidade de gastar fundos sem ter uma cadeia totalmente sincronizada. Conforme mencionado, a solução inclui alterações em todos os componentes da pilha de carteiras móveis protegidas: zcashd, lightwalletd, os SDKs da carteira ECC e o protótipo da carteira ECC.
Critérios de saída do modo de emergência
Nossa principal prioridade era garantir que os usuários pudessem acessar e gastar seus ZEC (moedas Zcash). Isto é fundamental para a nossa missão de liberdade económica e um requisito para dinheiro digital privado no mundo real.
Velocidade e confiabilidade também são essenciais para a experiência do usuário Zcash, e estes foram nossos critérios para sair do Modo de Emergência:
Os usuários do Edge, Nighthawk e Unstoppable podem gastar seus fundos atuais (fundos que já estão sincronizados quando abrem a carteira). Os usuários dessas carteiras podem receber e gastar novos fundos recebidos a uma taxa equivalente a um mês de transações em 1 hora. Os usuários dessas carteiras veem atualizações de sincronização que são minimamente confusas quanto ao progresso. Nenhuma dessas carteiras é afetada por falhas frequentes ou comportamento inconsistente (como a falha na exibição de algumas transações já sincronizadas), nem exigem comportamentos alternativos devido ao ECC SDK.
Com o lançamento dos novos SDKs 2.0 de carteira móvel em setembro, a ECC entregou a peça final em nossos esforços para mitigar problemas de desempenho de carteira de terceiros. Edge, Nighthawk e Unstoppable implementaram rapidamente os SDKs e, a partir de hoje, temos o prazer de informar que os critérios acima foram atendidos.
O que é gastar antes da sincronização e por que é importante?
Disponível agora em Edge, Nighthawk e Unstoppable, Spend Before Sync (SBS) introduz sincronização não linear, que permite que as carteiras escaneiem pedaços do blockchain fora de ordem e/ou em paralelo. Isso possibilita que os usuários gastem seus fundos existentes sem exigir que a carteira sincronize totalmente todo o blockchain.
Separadamente, mas também importante, as estruturas de dados que permitem o SBS melhoram substancialmente o desempenho das atualizações da árvore de compromissos de notas. Por exemplo, Zingo! não adotou o SBS, mas apenas usando a estrutura de dados atualizada essa carteira obteve uma melhoria superior a 10x na velocidade de varredura linear.
Aditya Bharadwaj, mais conhecido como Adi, fundador do Nighthawk, chamou o SBS de “um avanço inovador que promete revolucionar o uso ponto a ponto do Zcash para pagamentos e interações protegidas de aplicativos”.
O que aprendemos durante o Modo de Emergência
Nosso código SDK móvel não atendeu às necessidades de um usuário típico do Zcash. A UX de sincronização era confusa e o design da API impedia as carteiras de gastar fundos até que a carteira tivesse sincronizado totalmente a cadeia. Antes do Modo de Emergência, e até certo ponto antes da reestruturação do ECC, nossa equipe estava muito dispersa e tentava se concentrar em muitas coisas, o que permitiu que problemas como o impacto da carga de transações surgissem. Há muito tempo sabíamos que um problema de carregamento de transações era possível, mas priorizamos outros recursos e melhorias do Zcash. Este desafio de priorizar melhorias de novos recursos em vez de tornar o sistema existente mais resiliente ou robusto está sempre presente. Neste caso, subestimamos a probabilidade deste problema e a quantidade de esforço que seria necessária para mitigá-lo. Optamos por abordar a questão da maneira mais completa, fazendo com que as carteiras funcionem durante uma alta carga de transações, em vez do expediente de intervenções de curto prazo para diminuir a carga de transações. Acreditávamos que essas intervenções de curto prazo levariam a uma maior complexidade sem resolver totalmente o problema a longo prazo. Ainda acreditamos que a nossa abordagem foi a melhor para a robustez a longo prazo do ecossistema Zcash, mas subestimamos o tempo e o esforço e a perturbação geral para os utilizadores Zcash nesse ínterim. Também aprendemos sobre comunicações. Demoramos muito para definir o Modo de Emergência e comunicar uma explicação e um plano concisos, tanto interna quanto externamente. Ter nossa própria carteira em desenvolvimento (Zashi), que utiliza nossos SDKs, foi fundamental para agilizar o processo, pois nos permitiu testar nossas soluções antes de implantar e/ou compartilhar com carteiras de terceiros.
Com o Modo de Emergência concluído, o ECC está voltando sua atenção para nossas principais áreas de foco: prova de aposta Zcash, desenvolvimento da carteira Zashi, melhorias contínuas em SDKs e bibliotecas principais Zcash e trabalho de política dos EUA.