@MidnightNetwork
Esta manhã eu estava analisando um contrato Compact quando algo não se comportou da maneira que eu esperava.
O resultado deveria ter seguido.
Não seguiu.
Sem falha.
Sem saída.
Apenas... nada.
Eu executei novamente.
Mesmas entradas.
Mesmas condições.
Ainda bloqueado.
Nesse ponto, pensei que havia conectado algo errado.
Então eu voltei.
Linha por linha.
Algo parecia fora.
O caminho não estava falhando.
Ele simplesmente nunca passou por isso.
Foi então que tudo fez sentido.
Não quebrou.
Desapareceu.
Apenas parte da lógica realmente sobreviveu.
O resto não pôde ser expresso como restrições, então nunca entrou no circuito.
Não rejeitado.
Apenas... não expressável.
Essa é uma espécie diferente de limite.
Não em tempo de execução.
Não validação.
Mais cedo que ambos.
Eu continuo voltando a isso como uma restrição de pré-prova.
Porque o que é compilado não é a sua lógica completa.
É apenas a parte que pode existir como restrições dentro do circuito.
Tudo o mais simplesmente nunca aparece.
O que faz a depuração parecer estranha.
Você não está perseguindo erros.
Você está tentando perceber o que está faltando.
E você só vê se já suspeita disso.
$NIGHT só importa se os desenvolvedores podem realmente detectar quais partes de sua lógica sobrevivem à compilação de restrições quando aplicações reais começam a lidar com casos extremos.
Porque isso não aparecerá quando tudo estiver limpo.
Aparece quando algo deveria funcionar... e simplesmente não está lá.
Então a verdadeira questão se torna esta.
Se o Compact filtra a lógica antes de ela se tornar parte do circuito, como você detecta o que seu contrato nunca teve permissão para fazer?


