🔍 Por dentro do @Rayls Axyl: o que acontece quando o cálculo paralelo da raiz do estado falha?

A execução paralela pode melhorar o desempenho, mas o que acontece quando o cálculo paralelo da raiz do estado falha durante a criação de um bloco?

Analisei o código de execução do Rayls Axyl e encontrei três caminhos distintos para calcular a raiz do estado.

⚡ 1. Cálculo esparso

O Axyl inicia o cálculo da trie esparsa enquanto as transações EVM estão sendo executadas. Isso permite que as duas operações ocorram em paralelo. Quando o cálculo paralelo é bem-sucedido, o Axyl usa a raiz do estado e as atualizações da trie resultantes.

🔄 2. Alternativa sequencial

Se o cálculo paralelo retornar um erro, o Axyl tenta calcular a raiz do estado novamente usando um método sequencial. O código também converte um panic dentro da operação protegida da raiz esparsa em um resultado de erro, permitindo que o chamador acione o caminho alternativo.

🛠️ 3. Cálculo sequencial direto

Se não for possível configurar a tarefa paralela, o Axyl segue outro caminho. Como a função de raiz esparsa não está disponível, a raiz do estado é calculada diretamente pelo método sequencial.

A principal conclusão é que a falha na configuração da tarefa e a falha no cálculo são tratadas por caminhos diferentes, embora ambas possam levar ao cálculo sequencial da raiz do estado.

Após selecionar a raiz do estado, o Axyl a utiliza na montagem do bloco. O código também registra nos logs o caminho de cálculo selecionado.

Uma limitação importante é que o caminho alternativo não garante a recuperação de todas as falhas. Se o cálculo sequencial também retornar um erro, esse erro é propagado, em vez de ser ignorado silenciosamente.

Esses detalhes de implementação mostram como o Axyl integra o cálculo paralelo, o tratamento de erros, a recuperação sequencial e a construção de blocos.