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.
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.
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.
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:
Não há garantia de que a lista fornecida pela troca seja autêntica.
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:
Como mostrado na ilustração, o ID da conta de usuário é feito em hash juntamente com um valor específico.
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.
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.
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.
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
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).
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.
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.
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.)
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.)
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.
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
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.
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.
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.
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:
Não há garantia de que a lista fornecida pela troca seja autêntica.
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:
Como mostrado na ilustração, o ID da conta de usuário é feito em hash juntamente com um valor específico.
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.
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.
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.
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
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).
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.
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.
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.)
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.)
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.
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