estou passando pela seção Compact nos últimos dois dias e, honestamente, quanto mais penso sobre o que o compilador realmente faz, mais percebo que ele carrega mais peso do que a maioria das pessoas dá crédito 😂
aqui está o problema que o Compact está resolvendo
As provas ZK são poderosas, mas escrever circuitos ZK diretamente requer uma profunda expertise criptográfica. o tipo de expertise que a maioria dos desenvolvedores de aplicativos não tem e não deveria precisar. se a meia-noite exigisse que cada desenvolvedor entendesse sistemas de prova Halo2 e a aritmética PLONKish apenas para construir um aplicativo que preservasse a privacidade, o pool de desenvolvedores seria pequeno e a rede nunca alcançaria uma escala comercial.

O Compact resolve isso sentando-se entre o desenvolvedor e a camada ZK completamente. os desenvolvedores escrevem contratos inteligentes em uma linguagem específica de domínio baseada em TypeScript. O Compact se parece e se comporta como TypeScript. ele lida com dados protegidos e não protegidos, estado público e privado, interações on-chain e off-chain. para o desenvolvedor, lê como um ambiente de programação normal.
embaixo, o compilador Compact pega esse código de contrato e gera duas coisas. primeiro, os materiais criptográficos necessários para provas ZK - as descrições de circuito reais na aritmética PLONKish que o sistema de prova usará
segundo, as descrições do circuito em si, que impõem os termos do contrato inteligente enquanto mantêm os dados privados protegidos. o desenvolvedor escreve TypeScript
o compilador produz a maquinaria ZK.
o que isso acerta é a abstração
toda a promessa da meia-noite como uma plataforma de privacidade acessível repousa na não exigência de que os desenvolvedores se tornem criptógrafos. O Compact entrega isso. um desenvolvedor que nunca viu um circuito ZK pode escrever um contrato que produz provas ZK válidas porque o compilador lida com a tradução.

mas aqui está a coisa com a qual continuo lidando. essa abstração cria uma dependência que se estende até o fundo.
cada aplicação única implantada na meia-noite herda sua qualidade de circuito do que quer que o compilador Compact produza. se o compilador gera circuitos ineficientes para um determinado padrão de contrato, cada aplicativo que usa esse padrão herda a ineficiência. não há caminho ao redor do compilador na camada de aplicação
os desenvolvedores não podem otimizar seus próprios circuitos porque o compilador possui essa camada completamente.
e a qualidade do circuito não é uma preocupação menor. tempo de geração de prova, tamanho da prova, custo de verificação, throughput de transação - todos esses são funções de quão bem o compilador traduz o código do contrato em circuitos ZK. um compilador subótimo não apenas desacelera um aplicativo
ele estabelece um teto para todos os aplicativos na rede simultaneamente.

honestamente não sei se o compilador Compact é a abstração certa que torna a meia-noite genuinamente acessível a uma ampla base de desenvolvedores sem sacrificar a eficiência que circuitos ZK específicos devem entregar ou um único ponto de dependência de otimização que silenciosamente limita o que toda a rede pode alcançar até que o próprio compilador melhore??
#night @MidnightNetwork $NIGHT

