Midnight detalha correções de segurança no Ledger 9.1.0.1

A versão ativada na mainnet aborda problemas envolvendo taxas de transação, limites de bloco e saldos de carteiras. Ela também introduz validações mais rigorosas para desenvolvedores que desenvolvem no Midnight.

By SongMarketCap

Updated:

Midnight News - Midnight detalha correções de segurança no Ledger 9.1.0.1

Midnight publicou o código-fonte e as notas de versão do Ledger 9.1.0.1, a versão ativada na mainnet durante a atualização de rede de 6 de novembro. A versão lista 13 correções, incluindo mudanças nos cálculos de taxas de transação, limites de bloco e na forma como as carteiras exibem moedas.

De acordo com as notas de versão, os operadores de nós receberam o software em 3 de novembro. O código-fonte e as descrições das correções foram publicados em 7 de novembro. A atualização também rejeita algumas transações que compilações anteriores do Ledger 9 aceitavam.

Mudanças nas taxas de transação e nos limites de bloco

O ledger é a parte do software do Midnight que determina se as transações são válidas e quanto elas custam. Midnight migrou para o Ledger 9 sem o período de antecedência usual na rede de testes Preprod. O projeto explicou que utiliza um processo de lançamento mais controlado quando correções de segurança o exigem.

Um problema afetava como os nós processavam entradas repetidas em estruturas de dados compartilhadas. Segundo as notas de versão, uma transação pequena podia forçar um nó a executar uma quantidade exponencialmente crescente de trabalho antes de verificar sua taxa. O ledger atualizado rejeita entradas repetidas antes de calcular a taxa e processa os dados em tempo proporcional ao seu tamanho.

Outras duas correções abordam limites de bloco. Uma transação podia declarar exclusões que nunca executava, reduzindo as taxas para outras partes da transação e contornando o limite de bytes líquidos escritos. Um problema separado de cálculo permitia que um tempo de computação declarado de pelo menos 2⁶³ picossegundos fosse cobrado como zero. Ambos os tipos de transação agora são rejeitados como inválidos.

DUST, carteiras e a Cardano Bridge

As taxas de transação do Midnight são pagas usando DUST, um recurso gerado a partir de holdings de NIGHT. As notas de versão descrevem um problema em que um contrato inteligente podia capturar o recurso de taxa excedente creditado durante o registro enquanto o registrante ainda recebia o valor integral. Chamadas de contrato que transferem o recurso de taxa como entrada pública ou saída pública agora são rejeitadas.

Outra correção diz respeito a como as carteiras reproduzem eventos da cadeia. Uma saída válida podia conter um registro criptografado que não correspondia ao seu compromisso criptográfico. Isso podia fazer com que uma carteira exibisse moedas que não podia gastar ou sobrescrevesse a posição de uma moeda que já possuía. As notas de versão afirmam que o estado on-chain não foi afetado.

A atualização também limpa de forma mais completa da memória dados sensíveis derivados de seeds de carteiras. Algumas das correções listadas referem-se a achados de auditoria, e as notas de versão apontam para nove avisos de segurança no GitHub cujas páginas não estavam publicamente disponíveis na manhã de 8 de novembro.

Uma correção separada aplica-se à ponte de protocolo destinada a transferir tokens de Cardano para Midnight. Solicitações de valor zero podiam anteriormente passar na validação sem pagar uma taxa. Agora, as solicitações devem atender ao mínimo exigido ou cobrir todo o saldo restante. A ponte está presente no código do Ledger 9, mas permanece desabilitada na mainnet até que uma ação de governança separada a habilite.

[NEWSBREAK]

Pacotes para desenvolvedores e questões pendentes

A versão inclui @midnight-ntwrk/ledger-v9 1.0.1, onchain-runtime-v4 4.0.1 e Proof Server 9.0.1. Um servidor de provas gera as provas de conhecimento zero usadas em transações. A documentação da atualização da mainnet do Midnight lista separadamente o Proof Server 9.0.0 entre seus componentes compatíveis.

O Ledger 9.1.0.1 rejeita transações com assinaturas duplicadas de comitê ou registros de taxa duplicados. Um contrato pode conter no máximo 256 operações, cada implantação é cobrada por seu estado completo, e o gas declarado deve permanecer dentro do limite do bloco.

Várias funções de cálculo de custo em Rust agora retornam um erro em vez de um valor. Desenvolvedores que calculam taxas diretamente devem levar essa mudança em conta em suas integrações.

Duas questões conhecidas da versão 9.1.0.0 permanecem em aberto. Uma pode fazer com que uma chamada de contrato seja rejeitada quando sua taxa é paga com exatamente um gasto de DUST. A documentação do Midnight indica o uso de dois ou mais gastos de DUST como solução temporária enquanto uma correção é planejada para uma versão posterior.