Como o ZK-Snark melhora o portão. Prova de Reservas

Avançado10/12/2023, 4:19:14 PM
Como um dos pioneiros no setor a introduzir provas de reservas, a Gate.io vai adotar a tecnologia ZK-Snark para melhorar a sua prova de reservas, fornecendo aos utilizadores uma proteção superior de segurança de ativos e privacidade.

Com mais de 13 milhões de utilizadores, o Gate.io sabe perfeitamente a importância da segurança de fundos e foi pioneiro a indústria na tomada de medidas eficazes. Gate.io foi uma das primeiras trocas a implementar a prova de reservas (POR), revelando o seu PR já em maio de 2020. Só depois de a FTX se apropriar indevidamente dos ativos dos utilizadores em 2022, levando a uma crise de liquidez e subsequente falência, é que a prova de reservas se tornou amplamente reconhecida como uma solução para garantir a segurança dos fundos de utilizadores e aumentar a fiabilidade da plataforma.

Na sequência do incidente FTX, a Gate.io lançou prontamente a sua segunda prova de reservas. Pouco depois do seu lançamento, o fundador da Ethereum, Vitalik Buterin, publicou um artigo intitulado “Ter um CEX seguro: prova de solvência e não só”, discutindo como as bolsas podem demonstrar melhor a sua solvência. O artigo sugere a integração de tecnologias avançadas como o ZK-snark para além da prova de reservas tradicional para garantir um PoR mais público, transparente e autêntico. O Gate.io planeia usar a nova tecnologia mencionada no artigo para atualizar a sua prova de reservas, oferecendo aos utilizadores maior privacidade e segurança de ativos genuína.

O que é a Prova de Reservas?

Prova de Reservas (PoR) refere-se à revisão dos saldos detidos por bolsas de criptomoedas ou outras instituições financeiras, verificando se o valor do ativo registado pela empresa corresponde aos ativos reais detidos. Se o montante do ativo nas reservas exceder a quantidade de ativos depositados pelos utilizadores, ou seja, o rácio de garantia é superior a 100%, prova que os fundos de utilizadores são respaldados por ativos reais numa base 1:1.

Antes do surgimento do PoR, também havia propostas de transferências de ativos e provas de passivos para demonstrar que as bolsas tinham fundos suficientes.

Transferência de ativos - Demonstrar a Bolsa tem ativos suficientes

Em 2011, a MTgox, então a maior bolsa de Bitcoin, provou que detinham certos fundos ao executar uma transação que transferiu 424,242 BTC para uma morada anunciada anteriormente. Este método só podia validar os ativos e não podia provar os passivos da bolsa.

Prova de Passivo

O passivo de uma troca são os ativos depositados pelos seus utilizadores. A maneira mais simples de provar os ativos dos utilizadores é publicar uma lista contendo contas de utilizador e saldos. Todos os utilizadores podem aceder a esta lista e verificar se o saldo em relação à conta deles está correto. No entanto, este método tem desvantagens óbvias:

  1. Não há garantia de que a lista fornecida pela troca seja autêntica.

  2. No processo, as informações da conta do utilizador e o saldo são divulgados.

Este método também pode usar uma estrutura de dados como a Merkle para minimizar a exposição das informações do utilizador, levando ao conceito atual de PoR.

Como ilustrado, uma árvore Merkle é uma estrutura de dados tipo árvore. Os dados na camada inferior chamam-se “nós de folha” e o meio pode ser designado “nós intermediários”. Dois nós de folhas podem sofrer hashing (processando qualquer valor de entrada para obter um valor específico) para produzir o valor de um nó intermediário. Dois nós intermediários são então hashed para obter um valor de saída exclusivo para o nó de nível seguinte. Depois de camadas sucessivas de processamento, o nó raiz (Root) da árvore Merkle é finalmente obtido. Este valor é único e qualquer alteração no nó foliar resultará numa alteração no nó raiz.

Reserva à prova em Árvores Merkle (Fonte: Vitalik

Neste método, o total de ativos detidos por uma troca em nome dos seus utilizadores é determinado pela acumulação de valores camada a camada. No entanto, mesmo depois de inserir os dados da conta de utilizador e do saldo diretamente nos nós foliares, continua a haver um risco menor de fuga de informação. Tomando a ilustração como exemplo, o utilizador marcado a verde (Charlie) pode aceder à informação parcial de David, bem como aos saldos de Alice e Bob no lado esquerdo. Consequentemente, houve melhorias técnicas nos nós foliares:

  1. Como mostrado na ilustração, o ID da conta de usuário é feito em hash juntamente com um valor específico.

  2. Os saldos de utilizadores estão dispersos. Por exemplo, o 10ETH do Charlie pode ser dividido em duas quantidades 5ETH e colocado em dois nós foliares diferentes.

  3. A identificação do utilizador e o saldo são hashed separadamente e os valores resultantes são haxilados uma vez mais. A prova do fundo de reserva do Gate.io usa esse método.

Apesar destes avanços ao nível do nó foliar, um problema continua por resolver: saldos negativos. Na prática, depois dos utilizadores depositarem as criptomoedas, eles interagem com produtos de troca, como negociações alavancadas e contratos perpétuos. Se ocorrerem perdas, a perda máxima deve ser 100% do capital, ou seja, o saldo da conta de um usuário deve ser sempre maior ou igual a zero.

Normalmente, os saldos negativos são iniciados por trocas maliciosas. Por exemplo, se uma troca se apropriar indevidamente 500ETH, em cálculos padrão, os ativos que a bolsa detém realmente podem ser inferiores à garantia exigida, possivelmente até menos de 100%, revelando a apropriação indevida. No entanto, a bolsa pode criar uma conta, como a chamada Henry com um saldo de -500ETH na ilustração dada, para tornar o valor total do ativo da Merkle tree igual ou inferior aos ativos que a bolsa detém após apropriação indevida, fabricando assim uma ilusão de uma taxa de garantia superior a 100%.

Impacto das Contas de Valor Negativo na Ilustração das Merkle Trees (Fonte: Vitaliano

Para resolver este problema, trocas como o Gate.IO começaram a usar a tecnologia ZK-Snark à prova de conhecimento zero para melhorar as suas provas de reserva.

O que são provas Zero-Knowledge e ZK-Snarks?

Uma prova de conhecimento zero é uma técnica através da qual uma parte pode provar algo a outra sem revelar informações confidenciais. Para ilustrar este conceito com um exemplo simples: Se o Utilizador A souber o número de telefone do utilizador B e o Utilizador C inquirir se o Utilizador A sabe, o utilizador A pode discar o número de B no local para verificar que realmente o tem, sem divulgar o número real ao Utilizador C. Este processo, que preserva a privacidade do utilizador mas confirma o conhecimento, exemplifica o mecanismo da “prova de conhecimento zero”.

No domínio das criptomoedas, provas de conhecimento zero permitem que os utilizadores demonstrem a propriedade de uma chave privada sem expor a própria chave ou qualquer assinatura eletrónica. As plataformas de negociação de criptomoedas esperam validar o estado dos seus fundos de reserva sem divulgar informações sensíveis do utilizador, como saldos de contas individuais.

O ZK-Snark significa uma técnica sucinta e não interativa de prova de conhecimento zero. Passa por uma “configuração inicial confiável” para produzir uma String de Referência Comum (CRS) que todos os provadores podem aceder diretamente. Isto é análogo a um sistema de classificação de exames em que o ZK-Snark carrega diretamente as respostas corretas. Os examinados podem então verificar as suas respostas (enviando a solução para uma pergunta para um sistema de backend, que fornece imediatamente o resultado correto ou incorreto), tornando o processo altamente eficiente.

Com o ZK-Snark, os utilizadores podem atestar saber o valor original que foi hash sem revelar o conteúdo real desse valor. Sem divulgar quantias, valores ou moradas específicos, os utilizadores também podem verificar a validade de uma transação. É normalmente utilizado em transações privadas. No design das provas de reserva, o ZK-Snark pode pré-definir restrições, eliminar contas diferentes de zero e garantir a privacidade do utilizador.

Como o Porto.io Utiliza os ZK-snarks para reforçar as provas de reserva

Porta.io integra a tecnologia ZK-Snark com Merkle trees para criar provas de reserva mais transparentes, protegidas pela privacidade e invioláveis.

Processo de Implementação

  1. Autorização Cold Wallet
    Todas as carteiras frias e quentes transferem uma quantidade aleatória específica para uma morada designada pela empresa de auditoria para verificar a propriedade. A empresa de auditoria resume os saldos desses endereços para determinar o valor total controlado pela troca (incluindo os fundos de utilizadores e proprietários).

  2. Instantâneo de equilíbrio de utilizadores
    Num momento específico no tempo, é feito um instantâneo dos saldos dos utilizadores na plataforma. As ações da conta reais são calculadas usando dados como ordens em dívida, empréstimos, juros devidos e lucros/perdas não realizados.

  3. Saldos de exportação
    O UID encriptado e o saldo de cada utilizador são fornecidos à empresa de auditoria com a finalidade de calcular os ativos de utilizadores agregados e publicar um número Merkle.

  4. Processamento em lote de ativos
    do usuário Os ativos líquidos da troca são confirmados como a soma dos ativos líquidos de cada usuário. Então, com base no ativo líquido dos utilizadores, é construída uma árvore Merkle.
    (A principal razão para o processamento em lote é que o Gate.io tem 13 milhões de utilizadores. Processar todos os dados do utilizador de uma só vez colocaria exigências extremas ao hardware e software. O processamento em lote é mais tempo e econômico sem comprometer a segurança ou a privacidade dos dados.)

  5. Implementando Restrições de Circuito
    ① Antes de os ativos líquidos de um usuário serem inseridos na árvore Merkle, o nó correspondente à identificação desse usuário está vazio.
    ② Com base na lista de ativos do utilizador e no preço de cada ativo, calcule o ativo total do utilizador. O ativo total deve sempre exceder o passivo total.
    ③ Adicionar o ativo/passivo do utilizador ao ativo/passivo da bolsa.
    ④ Usando a identificação do usuário, o ativo/passivo total e a lista de ativos, calcular o hash do status do usuário. Insira o status do usuário na árvore Merkle para ter uma nova Raiz da Merkle.
    ⑤ Antes de criar uma operação para um usuário, o valor do hash raiz da árvore deve corresponder ao valor hash do nó raiz depois de criar uma operação para o usuário subsequente.
    (Restrição ① evita dados de nós não verdadeiros, ② evita contas com valores negativos e ⑤ garante que os dados dos usuários permanecem inalterados antes e depois das operações.)

  6. Gerando provas de reserva
    usando o circuito ZK-Snark, determine o número de ativos do utilizador e depois emita um relatório de prova de reserva.

Para obter uma explicação mais detalhada do processo de cálculo de reservas e implementação do código, clique aqui.

Desempenho

Numa máquina com 32 núcleos e 128 GB de RAM, são 15 dias para calcular as provas de ativos para 10 milhões de utilizadores. Os cálculos da prova de reserva podem ser paralelizados; assim, com 10 máquinas, demora apenas 1,5 dias.

Conclusão

A introdução do ZK-Snarks é um upgrade significativo para o Gate.iOs reservar provas e um passo essencial na proteção dos ativos dos utilizadores. Esta proteção superior de segurança e privacidade aumenta a confiança dos utilizadores e estabelece um novo padrão para a indústria das criptomoedas. Como líder da indústria, a Gate.io agora criou o seu código de fonte aberta, na esperança de promover desenvolvimentos mais transparentes e seguros do setor. No futuro, o Gate.io vai continuar o seu espírito de inovação, explorando e pioneiro num futuro criptográfico mais seguro e abrangente, protegido pela privacidade ao lado dos seus utilizadores.

Referências

Autor: Wayne
Tradutor(a): Piper
Revisor(es): Edward、KOWEI、Elisa、Ashley He、Joyce
* As informações não se destinam a ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecido ou endossado pela Gate.io.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem fazer referência à Gate.io. A violação é uma violação da Lei de Direitos de Autor e pode estar sujeita a ações legais.

Como o ZK-Snark melhora o portão. Prova de Reservas

Avançado10/12/2023, 4:19:14 PM
Como um dos pioneiros no setor a introduzir provas de reservas, a Gate.io vai adotar a tecnologia ZK-Snark para melhorar a sua prova de reservas, fornecendo aos utilizadores uma proteção superior de segurança de ativos e privacidade.

Com mais de 13 milhões de utilizadores, o Gate.io sabe perfeitamente a importância da segurança de fundos e foi pioneiro a indústria na tomada de medidas eficazes. Gate.io foi uma das primeiras trocas a implementar a prova de reservas (POR), revelando o seu PR já em maio de 2020. Só depois de a FTX se apropriar indevidamente dos ativos dos utilizadores em 2022, levando a uma crise de liquidez e subsequente falência, é que a prova de reservas se tornou amplamente reconhecida como uma solução para garantir a segurança dos fundos de utilizadores e aumentar a fiabilidade da plataforma.

Na sequência do incidente FTX, a Gate.io lançou prontamente a sua segunda prova de reservas. Pouco depois do seu lançamento, o fundador da Ethereum, Vitalik Buterin, publicou um artigo intitulado “Ter um CEX seguro: prova de solvência e não só”, discutindo como as bolsas podem demonstrar melhor a sua solvência. O artigo sugere a integração de tecnologias avançadas como o ZK-snark para além da prova de reservas tradicional para garantir um PoR mais público, transparente e autêntico. O Gate.io planeia usar a nova tecnologia mencionada no artigo para atualizar a sua prova de reservas, oferecendo aos utilizadores maior privacidade e segurança de ativos genuína.

O que é a Prova de Reservas?

Prova de Reservas (PoR) refere-se à revisão dos saldos detidos por bolsas de criptomoedas ou outras instituições financeiras, verificando se o valor do ativo registado pela empresa corresponde aos ativos reais detidos. Se o montante do ativo nas reservas exceder a quantidade de ativos depositados pelos utilizadores, ou seja, o rácio de garantia é superior a 100%, prova que os fundos de utilizadores são respaldados por ativos reais numa base 1:1.

Antes do surgimento do PoR, também havia propostas de transferências de ativos e provas de passivos para demonstrar que as bolsas tinham fundos suficientes.

Transferência de ativos - Demonstrar a Bolsa tem ativos suficientes

Em 2011, a MTgox, então a maior bolsa de Bitcoin, provou que detinham certos fundos ao executar uma transação que transferiu 424,242 BTC para uma morada anunciada anteriormente. Este método só podia validar os ativos e não podia provar os passivos da bolsa.

Prova de Passivo

O passivo de uma troca são os ativos depositados pelos seus utilizadores. A maneira mais simples de provar os ativos dos utilizadores é publicar uma lista contendo contas de utilizador e saldos. Todos os utilizadores podem aceder a esta lista e verificar se o saldo em relação à conta deles está correto. No entanto, este método tem desvantagens óbvias:

  1. Não há garantia de que a lista fornecida pela troca seja autêntica.

  2. No processo, as informações da conta do utilizador e o saldo são divulgados.

Este método também pode usar uma estrutura de dados como a Merkle para minimizar a exposição das informações do utilizador, levando ao conceito atual de PoR.

Como ilustrado, uma árvore Merkle é uma estrutura de dados tipo árvore. Os dados na camada inferior chamam-se “nós de folha” e o meio pode ser designado “nós intermediários”. Dois nós de folhas podem sofrer hashing (processando qualquer valor de entrada para obter um valor específico) para produzir o valor de um nó intermediário. Dois nós intermediários são então hashed para obter um valor de saída exclusivo para o nó de nível seguinte. Depois de camadas sucessivas de processamento, o nó raiz (Root) da árvore Merkle é finalmente obtido. Este valor é único e qualquer alteração no nó foliar resultará numa alteração no nó raiz.

Reserva à prova em Árvores Merkle (Fonte: Vitalik

Neste método, o total de ativos detidos por uma troca em nome dos seus utilizadores é determinado pela acumulação de valores camada a camada. No entanto, mesmo depois de inserir os dados da conta de utilizador e do saldo diretamente nos nós foliares, continua a haver um risco menor de fuga de informação. Tomando a ilustração como exemplo, o utilizador marcado a verde (Charlie) pode aceder à informação parcial de David, bem como aos saldos de Alice e Bob no lado esquerdo. Consequentemente, houve melhorias técnicas nos nós foliares:

  1. Como mostrado na ilustração, o ID da conta de usuário é feito em hash juntamente com um valor específico.

  2. Os saldos de utilizadores estão dispersos. Por exemplo, o 10ETH do Charlie pode ser dividido em duas quantidades 5ETH e colocado em dois nós foliares diferentes.

  3. A identificação do utilizador e o saldo são hashed separadamente e os valores resultantes são haxilados uma vez mais. A prova do fundo de reserva do Gate.io usa esse método.

Apesar destes avanços ao nível do nó foliar, um problema continua por resolver: saldos negativos. Na prática, depois dos utilizadores depositarem as criptomoedas, eles interagem com produtos de troca, como negociações alavancadas e contratos perpétuos. Se ocorrerem perdas, a perda máxima deve ser 100% do capital, ou seja, o saldo da conta de um usuário deve ser sempre maior ou igual a zero.

Normalmente, os saldos negativos são iniciados por trocas maliciosas. Por exemplo, se uma troca se apropriar indevidamente 500ETH, em cálculos padrão, os ativos que a bolsa detém realmente podem ser inferiores à garantia exigida, possivelmente até menos de 100%, revelando a apropriação indevida. No entanto, a bolsa pode criar uma conta, como a chamada Henry com um saldo de -500ETH na ilustração dada, para tornar o valor total do ativo da Merkle tree igual ou inferior aos ativos que a bolsa detém após apropriação indevida, fabricando assim uma ilusão de uma taxa de garantia superior a 100%.

Impacto das Contas de Valor Negativo na Ilustração das Merkle Trees (Fonte: Vitaliano

Para resolver este problema, trocas como o Gate.IO começaram a usar a tecnologia ZK-Snark à prova de conhecimento zero para melhorar as suas provas de reserva.

O que são provas Zero-Knowledge e ZK-Snarks?

Uma prova de conhecimento zero é uma técnica através da qual uma parte pode provar algo a outra sem revelar informações confidenciais. Para ilustrar este conceito com um exemplo simples: Se o Utilizador A souber o número de telefone do utilizador B e o Utilizador C inquirir se o Utilizador A sabe, o utilizador A pode discar o número de B no local para verificar que realmente o tem, sem divulgar o número real ao Utilizador C. Este processo, que preserva a privacidade do utilizador mas confirma o conhecimento, exemplifica o mecanismo da “prova de conhecimento zero”.

No domínio das criptomoedas, provas de conhecimento zero permitem que os utilizadores demonstrem a propriedade de uma chave privada sem expor a própria chave ou qualquer assinatura eletrónica. As plataformas de negociação de criptomoedas esperam validar o estado dos seus fundos de reserva sem divulgar informações sensíveis do utilizador, como saldos de contas individuais.

O ZK-Snark significa uma técnica sucinta e não interativa de prova de conhecimento zero. Passa por uma “configuração inicial confiável” para produzir uma String de Referência Comum (CRS) que todos os provadores podem aceder diretamente. Isto é análogo a um sistema de classificação de exames em que o ZK-Snark carrega diretamente as respostas corretas. Os examinados podem então verificar as suas respostas (enviando a solução para uma pergunta para um sistema de backend, que fornece imediatamente o resultado correto ou incorreto), tornando o processo altamente eficiente.

Com o ZK-Snark, os utilizadores podem atestar saber o valor original que foi hash sem revelar o conteúdo real desse valor. Sem divulgar quantias, valores ou moradas específicos, os utilizadores também podem verificar a validade de uma transação. É normalmente utilizado em transações privadas. No design das provas de reserva, o ZK-Snark pode pré-definir restrições, eliminar contas diferentes de zero e garantir a privacidade do utilizador.

Como o Porto.io Utiliza os ZK-snarks para reforçar as provas de reserva

Porta.io integra a tecnologia ZK-Snark com Merkle trees para criar provas de reserva mais transparentes, protegidas pela privacidade e invioláveis.

Processo de Implementação

  1. Autorização Cold Wallet
    Todas as carteiras frias e quentes transferem uma quantidade aleatória específica para uma morada designada pela empresa de auditoria para verificar a propriedade. A empresa de auditoria resume os saldos desses endereços para determinar o valor total controlado pela troca (incluindo os fundos de utilizadores e proprietários).

  2. Instantâneo de equilíbrio de utilizadores
    Num momento específico no tempo, é feito um instantâneo dos saldos dos utilizadores na plataforma. As ações da conta reais são calculadas usando dados como ordens em dívida, empréstimos, juros devidos e lucros/perdas não realizados.

  3. Saldos de exportação
    O UID encriptado e o saldo de cada utilizador são fornecidos à empresa de auditoria com a finalidade de calcular os ativos de utilizadores agregados e publicar um número Merkle.

  4. Processamento em lote de ativos
    do usuário Os ativos líquidos da troca são confirmados como a soma dos ativos líquidos de cada usuário. Então, com base no ativo líquido dos utilizadores, é construída uma árvore Merkle.
    (A principal razão para o processamento em lote é que o Gate.io tem 13 milhões de utilizadores. Processar todos os dados do utilizador de uma só vez colocaria exigências extremas ao hardware e software. O processamento em lote é mais tempo e econômico sem comprometer a segurança ou a privacidade dos dados.)

  5. Implementando Restrições de Circuito
    ① Antes de os ativos líquidos de um usuário serem inseridos na árvore Merkle, o nó correspondente à identificação desse usuário está vazio.
    ② Com base na lista de ativos do utilizador e no preço de cada ativo, calcule o ativo total do utilizador. O ativo total deve sempre exceder o passivo total.
    ③ Adicionar o ativo/passivo do utilizador ao ativo/passivo da bolsa.
    ④ Usando a identificação do usuário, o ativo/passivo total e a lista de ativos, calcular o hash do status do usuário. Insira o status do usuário na árvore Merkle para ter uma nova Raiz da Merkle.
    ⑤ Antes de criar uma operação para um usuário, o valor do hash raiz da árvore deve corresponder ao valor hash do nó raiz depois de criar uma operação para o usuário subsequente.
    (Restrição ① evita dados de nós não verdadeiros, ② evita contas com valores negativos e ⑤ garante que os dados dos usuários permanecem inalterados antes e depois das operações.)

  6. Gerando provas de reserva
    usando o circuito ZK-Snark, determine o número de ativos do utilizador e depois emita um relatório de prova de reserva.

Para obter uma explicação mais detalhada do processo de cálculo de reservas e implementação do código, clique aqui.

Desempenho

Numa máquina com 32 núcleos e 128 GB de RAM, são 15 dias para calcular as provas de ativos para 10 milhões de utilizadores. Os cálculos da prova de reserva podem ser paralelizados; assim, com 10 máquinas, demora apenas 1,5 dias.

Conclusão

A introdução do ZK-Snarks é um upgrade significativo para o Gate.iOs reservar provas e um passo essencial na proteção dos ativos dos utilizadores. Esta proteção superior de segurança e privacidade aumenta a confiança dos utilizadores e estabelece um novo padrão para a indústria das criptomoedas. Como líder da indústria, a Gate.io agora criou o seu código de fonte aberta, na esperança de promover desenvolvimentos mais transparentes e seguros do setor. No futuro, o Gate.io vai continuar o seu espírito de inovação, explorando e pioneiro num futuro criptográfico mais seguro e abrangente, protegido pela privacidade ao lado dos seus utilizadores.

Referências

Autor: Wayne
Tradutor(a): Piper
Revisor(es): Edward、KOWEI、Elisa、Ashley He、Joyce
* As informações não se destinam a ser e não constituem aconselhamento financeiro ou qualquer outra recomendação de qualquer tipo oferecido ou endossado pela Gate.io.
* Este artigo não pode ser reproduzido, transmitido ou copiado sem fazer referência à Gate.io. A violação é uma violação da Lei de Direitos de Autor e pode estar sujeita a ações legais.
Comece agora
Registe-se e ganhe um cupão de
100 USD
!