Hoje fui com um amigo de infância ao novo centro de banho que abriu no andar de baixo, e no meio do banho ele desapareceu. Esperei bastante tempo no salão de descanso e não vi ninguém, então fui perguntar ao funcionário se tinha visto meu amigo. O funcionário disse que ele foi para o quarto. Eu disse que ia procurá-lo, e ele me impediu, dizendo que os quartos são espaços privados e não se pode entrar à toa.


Na época, achei essa regra muito razoável.

O lobby é público, qualquer um pode entrar e ver; os quartos são privados, pessoas de fora não têm permissão para entrar, mas os funcionários sabem em qual quarto você está e podem contatá-lo em caso de emergência. Duas regras funcionam simultaneamente.


\u003cc-35/\u003e está em \u003cm-37/\u003e, o white paper tem um design chamado livro-razão público e privado que faz algo semelhante na blockchain.


O problema das blockchains públicas existentes é: total transparência. Tudo o que você faz no Ethereum, seja o remetente, o destinatário, o valor ou o timestamp, tudo está registrado no livro-razão público. Isso é amigável para auditorias, mas um desastre para aplicações comerciais. Uma empresa que coloca o contrato da cadeia de suprimentos na cadeia para execução, seus concorrentes podem ver no dia seguinte com quem ela está colaborando, quanto pagou e qual é a duração do contrato.

Essa transparência não é uma vantagem no ambiente comercial, é uma falha fatal.


A Midnight divide o livro-razão em duas pistas paralelas. Os dados na pista de estado público são visíveis para todos, incluindo \u003ct-53/\u003e registros de transferência de tokens, votações de governança, dados de consenso, essas coisas precisam ser transparentes para estabelecer confiança.

Os dados na pista de estado privado só podem ser vistos pelas partes relevantes, e a legalidade é verificada por meio de provas ZK — os validadores podem confirmar que a transação é legítima, mas não veem o conteúdo da transação em si.


Essas duas pistas não são duas cadeias, mas sim duas formas de processamento de dados na mesma cadeia. Os desenvolvedores podem controlar com precisão quais dados seguem pela pista pública e quais seguem pela pista privada ao escrever contratos na linguagem Compact.

Uma aplicação médica pode colocar as informações de identidade do paciente em estado privado e as provas de conformidade em estado público, de modo que a parte reguladora possa verificar a conformidade sem precisar ver os dados do paciente, e os dados do paciente não precisam estar no livro-razão público.


Eu acho que o verdadeiro problema que esse design resolve é uma contradição fundamental que a blockchain sempre teve: a descentralização precisa de transparência para estabelecer confiança, mas as aplicações comerciais precisam de privacidade para proteger os dados.

Esses dois requisitos são mutuamente excludentes em um livro-razão de estado único; você só pode escolher um. O design de dupla pista da Midnight contorna essa dicotomia.

O que precisa ser transparente deve ser transparente, o que precisa ser privado deve ser privado, decidido pelos desenvolvedores de aplicações com base em cenários específicos.

Claro que esse design tem muitos detalhes a serem tratados na execução prática. Onde os dados em estado privado são armazenados? O white paper afirma que os dados privados existem na máquina local do usuário. Isso significa que, se os dados locais do usuário forem perdidos, o estado privado correspondente pode não ser recuperável.

Os dados armazenados na cadeia são as provas ZK, não os dados originais; as provas podem validar a legalidade, mas não trazem de volta o conteúdo original. Esse design de soberania de dados é bom para os usuários, mas também significa que os usuários precisam ser responsáveis pelo backup de dados; se essa responsabilidade for transferida para usuários comuns, será um obstáculo, algo que ainda não consegui clarear.


Há outra questão: como lidar com a interação entre o estado privado e o estado público? Para uma transação que envolve dados privados, se for necessário acionar uma mudança no estado público, como a lógica de validação no meio pode garantir que o conteúdo privado não seja revelado?

O white paper diz que usa provas ZK para fazer a ponte, provando que os dados privados atendem a uma determinada condição e, em seguida, acionando a atualização do estado público, todo o processo não expõe o conteúdo privado em si. Mas a complexidade da implementação real é muito alta, rodar na rede de testes é uma coisa, e usar em larga escala no ambiente de produção é outra.


Voltando ao centro de banhos. O que meu amigo está fazendo no quarto, o funcionário não sabe e eu também não, mas se ele está neste prédio, o funcionário sabe. Esse estado de saber que ele está lá, mas não saber o que ele está fazendo, é o que o livro-razão público e privado da Midnight faz.