A maioria dos sistemas que consegue fazer múltiplas partes independentes concordarem com algo insere uma etapa entre "cada parte calcula uma resposta" e "as respostas são combinadas": uma rodada em que todos comparam anotações antes de se comprometerem com qualquer coisa.
A documentação de Newton diz que seu passo de avaliação ignora isso completamente.
A avaliação de políticas e a assinatura acontecem como uma única ação atômica, sem uma rodada separada para verificar se os operadores realmente concordam antes de suas assinaturas serem enviadas.
Eu queria ver exatamente o que precisa ser verdade para que esse atalho seja seguro e o que acontece se ele não for.

Veja a justificativa que Newton dá para pular a verificação: cada operador avalia a mesma política sobre os mesmos dados, e como essa avaliação é determinística, todo operador honesto é garantido a chegar ao mesmo resultado sem precisar comparar as respostas primeiro. Se duas pessoas fazem a mesma aritmética idêntica sobre entradas idênticas, você não precisa de um árbitro para confirmar que elas obtiveram o mesmo número — você já sabe que obtiveram.
Isso é um ganho real de eficiência, e só funciona porque há algo a montante que eu já tinha rastreado separadamente: quando a avaliação acontece, os dados que todo mundo está avaliando já foram forçados a uma única versão canônica durante a rodada anterior de consenso. Os operadores não estão avaliando números obtidos individualmente — estão todos avaliando uma entrada compartilhada, já acordada. Determinismo mais entradas idênticas é uma base genuinamente forte para pular uma etapa de comparação.

Mas a agregação de assinaturas BLS adiciona uma restrição que torna isso mais frágil do que parece à primeira vista: toda assinatura que entra em um agregado precisa ser sobre a mesma mensagem exata. Então a aposta pela atomicidade não é realmente "os operadores vão concordar" — é "os operadores vão produzir uma saída idêntica em bytes", uma afirmação mais rígida. Dois operadores poderiam chegar à mesma conclusão substantiva — negar esta transação — enquanto produzem saídas que diferem de alguma forma irrelevante (uma diferença de arredondamento em ponto flutuante entre arquiteturas de CPU, um campo de timestamp, um artefato de ordenação na forma como uma estrutura de dados é serializada antes de ser assinada) e, como a agregação BLS se importa com o resumo literal, isso já basta para colocá-los em baldes de assinaturas diferentes. Cada balde só cresce se uma quantidade suficiente de operadores cair exatamente nesse mesmo resumo.
Esse resultado é, na verdade, tranquilizador, uma vez que você acompanha o encadeamento, e é a parte que eu não esperava: um bug real de não determinismo não produziria um resultado assinado incorreto escapando como se estivesse correto. Ele fragmentaria as assinaturas entre vários resumos ligeiramente diferentes, nenhum dos quais, individualmente, atinge o limite de quórum. O não determinismo vira um problema de vivacidade — a tarefa trava, nada alcança o quórum — em vez de um problema de segurança em que um resultado incorreto é autorizado por engano. Esse é um modo de falha significativamente melhor do que a alternativa.
É exatamente por isso que a única pergunta em aberto que fica importa mais do que em outros contextos. Nada do que foi publicado diz o que acontece de fato em termos operacionais quando ocorre essa fragmentação. O gateway detecta uma tarefa que ficou travada porque as respostas se dividiram em alguns resumos quase idênticos e então a reexecuta? Existe um timeout que falha a tarefa de uma vez?

Ele volta para algum caminho mais lento que insere um teste de consistência no final?
A documentação afirma a suposição — avaliação determinística significa que não é necessário nenhum teste de consistência — de um jeito claro o bastante para dar para acompanhar o raciocínio, mas ela para exatamente no ponto em que essa suposição é testada. Ela descreve o caso de segurança do caminho rápido.
Ela não diz como é o caminho de recuperação no dia em que uma diferença de arredondamento, um check de política dependente do relógio ou uma divergência de versão entre os motores Rego de dois operadores realmente fazem duas partes honestas assinarem algo que não é idêntico de verdade.
