E se a blockchain pudesse guardar um segredo?
Autor convidado Mr. Haysberg explica como Midnight usa provas de conhecimento zero para verificar transações sem revelar dados privados.
By SongMarketCap
Imagine que sua conta bancária funcionasse assim: todos os pagamentos que você já fez, todo salário que você recebeu, todo saldo, visível para qualquer pessoa com uma conexão à internet.
Seu vizinho. Seu chefe. Um estranho que quer roubar você.
É assim que a maioria das blockchains funciona hoje.
Em 4 de novembro, @MidnightNtwrk publicou uma frase curta que acho que resume para onde isso está indo: você não precisa mais escolher entre público e privado. Existe uma terceira opção.
Este artigo explica essa opção em palavras simples. Se você é novo em cripto, vai entender. Se você desenvolve, há uma camada mais profunda em cada seção para você também.
O problema: duas escolhas ruins
Por anos, as blockchains ofereceram duas opções.
Cadeias públicas: qualquer pessoa pode verificar que tudo é justo. Ótimo para confiança. Mas toda a sua vida financeira fica exposta, para sempre.
Sistemas privados: seus dados ficam ocultos. Mas agora você precisa confiar em quem opera o sistema, e você perde a abertura que tornou a blockchain útil em primeiro lugar.
Escolha abertura ou escolha privacidade. Esse era o acordo.
A terceira opção
Midnight separa o problema em duas partes.
A rede em si permanece pública. Qualquer pessoa pode verificá-la, e seu token NIGHT também permanece público. Seus dados pessoais ficam no seu próprio dispositivo. Eles nunca são publicados na cadeia.
Em vez dos seus dados, a cadeia recebe uma prova: um pequeno pedaço de matemática que diz "as regras foram seguidas" sem mostrar o que havia dentro.
O app decide o que pode ser revelado, e para quem. Um banco, um auditor, um parceiro. Apenas o que é necessário.
Uma forma simples de imaginar: mostrar a um segurança que você tem mais de 18 anos sem mostrar seu nome, seu endereço, ou sua data exata de nascimento.
Para avançados: essa prova é uma prova de conhecimento zero. O consenso e NIGHT vivem no livro razão público, enquanto o estado do app pode ser dividido em partes públicas e privadas, e apenas provas sobre a parte privada tocam a cadeia.
Compact: a linguagem por trás disso
Para construir apps assim, desenvolvedores precisam de uma forma de dizer "esta parte é pública, esta parte é privada". Em Midnight essa ferramenta é uma linguagem de programação chamada Compact. Eu a cobri em detalhes em Private by Default Ep. 4.
O que importa para todos:
Ela se parece muito com TypeScript, uma das linguagens mais populares do mundo, então os desenvolvedores não começam do zero.
Você não precisa ser um criptógrafo. Você marca o que é privado e o que é público, e as ferramentas cuidam da matemática pesada.
É de código aberto, então qualquer um pode inspecioná-la.
Para avançados: Compact é fortemente e estaticamente tipada e limitada, então contratos não podem entrar em loop para sempre. Lançamentos públicos vivem em github.com/midnightntwrk/compact.
Como um app em Midnight funciona: o restaurante
Todo contrato Compact tem três partes. A forma mais fácil de imaginá-las é um restaurante.
A vitrine (ledger). O que todo mundo pode ver da rua. Informação pública, armazenada na cadeia.
A receita secreta (witnesses). Trancada na cozinha. Informações privadas que permanecem no seu dispositivo.
As regras da cozinha (circuits). O processo que transforma ingredientes em uma refeição. Em Midnight, essas regras se tornam provas, assim clientes podem confiar que a refeição foi preparada corretamente sem jamais ver a receita.
Os próprios desenvolvedores da Midnight resumem em uma frase: a lógica é pública, os dados são privados, e o resultado pode ser verificado por qualquer um.
Privado por padrão
Aqui está a parte de que eu mais gosto. Em Compact, tudo é privado a menos que você escolha o contrário.
Se um desenvolvedor quiser que uma informação se torne pública, ele precisa dizer isso de propósito. Se esquecer, o programa se recusa a compilar e aponta o local exato onde os dados vazariam.
Para avançados: isso é feito com disclose(). Qualquer valor de um witness ou argumento de circuito que flua para o estado público do ledger, um valor de retorno de um circuito exportado, ou outro contrato, deve ser envolvido em disclose(), ou o compilador o rejeita. A documentação da Midnight chama isso, em tom de brincadeira, de Witness Protection Program.
Privacidade é o cinto de segurança. Tornar público é uma escolha consciente.
Por que privacidade na verdade é segurança
Em 5 de novembro, Sebastien Guillemot (@SebastienGllmt), CTO da Midnight Foundation, publicou um post no blog com uma ideia forte: em uma blockchain, privacidade não é luxo. É segurança.
Pense no que uma cadeia totalmente pública entrega a um criminoso:
Uma lista das carteiras mais ricas.
O histórico completo de qualquer pessoa que queiram atacar.
Pistas para mensagens de phishing que parecem reais porque sabem o que você fez.
Se ninguém pode ver o seu saldo, ninguém pode mirar você por causa dele.
Como a Midnight esconde seu dinheiro
Você pode pensar: basta embaralhar o saldo e pronto. Não é bem assim. Se você embaralha o número 1000 da mesma forma todas as vezes, um atacante pode embaralhar números comuns com antecedência e simplesmente fazer a correspondência.
Então a Midnight faz algo mais inteligente.
Seu dinheiro é dividido em notas separadas, como cédulas em uma carteira, em vez de um total único. Cada nota é selada junto com seu montante, o tipo de token, a chave do proprietário e um segredo aleatório enorme. Esse selo é chamado de compromisso da nota.
Para quem observa, todo selo parece ruído aleatório. Uma nota que vale 1 token e uma nota que vale 1 milhão parecem iguais.
Para avançados: o compromisso é um hash sobre valor, tipo de token, chave do proprietário e um nonce aleatório grande, então o mesmo valor nominal produz muitos compromissos únicos e ataques de pré cálculo falham.
[NEWSBREAK]
Gastar sem mostrar nada
Se tudo está oculto, como a rede impede alguém de gastar o mesmo dinheiro duas vezes? Duas ferramentas:
Uma prova de propriedade. Quando você gasta, prova que possui uma nota válida sem revelar qual nota, quanto há nela, ou quem você é.
Um carimbo único chamado nullifier. Toda nota tem um. Quando você gasta, o carimbo é publicado. A rede verifica que ele nunca foi usado antes, assim a mesma nota nunca pode ser gasta duas vezes. E ninguém pode rastrear o carimbo de volta à nota original.
Pense em uma pulseira de festival que é perfurada no portão. O segurança sabe que foi usada. O segurança não sabe quem você é.
Viewing keys: úteis, mas proteja-as
A Midnight também tem viewing keys.
Uma viewing key permite ver dinheiro entrando. Ela não mostra o que você gastou ou seu saldo total. Ela não pode mover seus fundos.
Ainda assim, trate-a como uma senha e só compartilhe com apps em que confia.
A versão curta
Uma rede pública que todos podem verificar.
Seus dados ficam com você.
A cadeia vê selos, provas e carimbos, não o seu saldo ou histórico.
Os desenvolvedores decidem exatamente onde fica a linha entre público e privado, e as ferramentas impedem vazamentos por acidente.
Não público. Não privado. Uma terceira opção.
Autor convidado · Mr. Haysberg (Vision & Vibe, @visionandvibehq)
Ouça: Private by Default Ep. 4, sobre Compact