Como é que verifico os ativos na árvore Merkle da OKX? (Árvore de Merkle V2)
Aplicável ao período de auditoria após março de 2023
O que é uma árvore de Merkle?
Uma Árvore de Merkle (ou Árvore de Hash) é uma estrutura de dados, que é normalmente uma árvore binária. Utiliza funções predefinidas para calcular o valor de hash de um nó de baixo para cima, até ao nó raiz superior da árvore.
Informação do nó
Cada nó da árvore armazena essa informação:
- Valor de hash do nó
- Montante da criptomoeda de um utilizador captado pelo instantâneo de auditoria (por exemplo, BTC, ETH, USDT)### Regra de hash
valor de hash,{"BTC":"BTC amount","ETH":"ETH amount","USDT":"USDT amount"}
be324cf06aee0616b4ec20c3,{"BTC":"1.023","ETH":"0","USDT":"20.2343322"} - Nós de folha (exceto nós de preenchimento)O OKX atribuirá um __nonce__ único a cada utilizador, que pode ser encontrado na página de auditoria do utilizador; __balances__ é uma cadeia de carateres json composta pelos ativos e montantes dos utilizadores que foram capturados pela imagem de auditoria, por exemplo: {"BTC":"1.023","ETH":"0","USDT":"20.2343322"} (NOTA: é necessário eliminar os zeros à direita e manter 8 casas decimais de precisão) ### Nós Pais
hash=SHA256(nonce+balances) __h1__=Hash do nó filho esquerdo do nó atual, __h2__=Hash do nó filho direito do nó atual, __audit_id__=ID da auditoria atual, __height__=a altura do nó h1 (ou h2) Definição de altura: altura do nó folha inferior=1, altura de um nó pai=altura do seu nó filho + 1, o nó raiz tem a altura máximahash de um nó pai = SHA256(h1+h2+(h1 BTC amount+h2 BTC amount)+(h1 ETH amount+h2 ETH amount)+(h1 USDT amount+h2 USDT amount)+height)
Regra de divisão do nó
Para proteger a privacidade dos clientes, o OKX dividirá aleatoriamente os ativos dos utilizadores em dois nós, com o intervalo aleatório entre 0 e 1. Por exemplo, se os ativos de um utilizador forem: {"BTC": "10.2", "ETH": "4", "USDT": "5"} e o número aleatório for 0,6, os ativos do utilizador serão divididos em 60% e 40%.
Durante a geração subsequente da árvore de Merkle, os nós de folha divididos serão aleatoriamente baralhados para os distribuir por diferentes posições na árvore.
Regra dos nós de preenchimento
Para construir uma árvore de Merkle completa (uma árvore binária completa), são necessários 2^n nós de folhas, mas os dados atuais podem não satisfazer esse requisito e também pode haver um número ímpar de dados. Nestas circunstâncias, se o nó k não tiver nós irmãos, será automaticamente gerado um nó irmão k' como nó de preenchimento, de tal forma que hash(k')=hash(k), e os montantes dos ativos serão definidos como 0 para todas as moedas.
por exemplo.
Hash | saldos |
---|---|
h1 | {"BTC": 1, "ETH": 1,"USDT": 1} |
h2 | {"BTC": 1, "ETH": 2,"USDT": 3} |
h3 | {"BTC": 1, "ETH": 2,"USDT": 4} |
hash de um nó pai = SHA256(h1+h2+(h1 BTC amount+h2 BTC amount)+(h1 ETH amount+h2 ETH amount)+(h1 USDT amount+h2 USDT amount)+height) |
h7,3,{"BTC":"3","ETH":"5","USDT":"8"} h6,2,{"BTC":"1","ETH":"2","USDT":"4"} h5,2,{"BTC":"2","ETH":"3","USDT":"4"} h4,1,{"BTC":"0","ETH":"0","USDT":"0"} h3,1,{"BTC":"1","ETH":"2","USDT":"4"} h2,1,{"BTC":"1","ETH":"2","USDT":"3"} h1,1,{"BTC":"1","ETH":"1","USDT":"1"} |
Passos de verificação
Inicie sessão na sua [conta OKX] (https://www.okx.com/), vá a Ativos > Auditorias para ver as auditorias recentes, selecione Detalhes para ver os seus dados de auditoria.
Selecionar Ativos e Ver detalhes para uma melhor compreensão da auditoria de dadosTambém pode verificar manualmente os seus ativos na árvore de Merkle selecionando Copiar dados
Selecionar Copiar dados para o processo de verificação manualAbra o editor de texto (por exemplo, notebook), cole e guarde a cadeia de carateres json como um ficheiro json.
Fases operacionais
Mac: Abra o terminal, introduza o comando touch merkle_proof_file.json e, em seguida, será criado um ficheiro json. Por defeito, o ficheiro é guardado na secretária do sistema. Pode abrir o Finder e procurar por merkle_proof_file.json para encontrar este ficheiro. Abra este ficheiro json, cole os dados copiados e guarde-o.
Windows: Faça duplo clique para abrir um editor de texto (por exemplo, bloco de notas), cole os dados e guarde-os como um ficheiro json.
No nosso caso, nomeamos o ficheiro "merkle_proof_file.json". O texto json de dados do caminho da árvore de Merkle é mostrado como apresentado abaixo:
{
"hash": "7e5a588806ff1de23f81e3a092860de43367fb4ea5503a53d95a5bc36d77e0c2",
"nodes": [
{ "balances": { "BTC": "0.49997703", "ETH": "0", "USDT": "16.62437479" },
"hash": "4087972e6b4bd3897c19f76b94b27db8eaf19f0d27d1b73e18297c18c850c3c1"
},
{ "balances": { "BTC": "0.40002297", "ETH": "0", "USDT": "12.18752303" },
"hash": "da14bd34c8d933781b8ec20a7e16109d0d650306b049da52c755437c4f7ec5e5" }
],
"nonce": "b6f6ea7584742839791ab923f4f1980d7ca3ff7c5d3f3fd9cc2a18c598503553",
"totalBalances": { "BTC": "0.9", "ETH": "0", "USDT": "28.81189782" }
}
Descarregar a "<a href="/prova-de-reservas/download?tab=liabilities" target="_blank">Arvore de Merkle completa" sob o relatório de responsabilidade e descompacte o ficheiro descarregado para obter um "ficheiro de árvore de Merkle completa".
Selecionar a transferência para obter o relatórioDescarregar a ferramenta OKX open-source verification (MerkleValidator) 6. Guardar a ferramenta de verificação de fonte aberta OKX (MerkleValidator) e os dois ficheiros de dados (merkle_proof_file.json, full-liabilities-merkle-tree.txt) na mesma pasta. No nosso caso: colocamos a ferramenta e o ficheiro de dados na pasta Downloads, com o nome proof-of-reserves, como se mostra abaixo:
7. Execute o comando e localize o diretório da pasta descarregada. No nosso caso, introduza o comando: cd ~/Downloads/proof-of-reserveDigite o comando abaixo e carregue no enter para iniciar a verificação:
Mac
./MerkleValidator --merkle_file full-liabilities-merkle-tree.txt --user_info_file merkle_proof_file.json
Windows
MerkleValidator.exe --merkle_file full-liabilities-merkle-tree.txt --user_info_file merkle_proof_file.json
Nota: Se estiver a utilizar o Mac e se deparar com a mensagem "não é possível abrir as ferramentas porque o programador não pode ser verificado", aceda a Preferências do sistema > Segurança e privacidade > Geral > Clique no cadeado para efetuar alterações > Permitir aplicações transferidas da App Store e programadores identificadosVerificar o resultado
Se a verificação for aprovada, o resultado A validação do caminho da árvore de Merkel foi aprovada será apresentado abaixo:
Se a verificação falhar, o resultado A validação do caminho da árvore de Merkel falhou será mostrado abaixo:
10. Também pode consultar o código da ferramenta de verificação de código aberto OKX (MerkleValidator) e definição de árvore de merkle OKX, escrever um programa para verificar se os seus ativos são capturados pela árvore de merkle construída a partir do instantâneo de auditoria, utilizando os dados do caminho da árvore de merkle recolhidos no passo 2. ## Aviso legal
ESTE ARTIGO DEVE SER USADO SOMENTE PARA FINS INFORMATIVOS. REPRESENTA AS OPINIÕES DO(S) AUTOR(ES) E NÃO REPRESENTA AS OPINIÕES DA OKX. O SEU CONTEÚDO NÃO SE DESTINA A FORNECER (i) CONSULTORIA DE INVESTIMENTO OU RECOMENDAÇÃO DE INVESTIMENTO; (ii) OFERTA OU SOLICITAÇÃO PARA COMPRAR, VENDER OU MANTER ATIVOS DIGITAIS, OU (iii) CONSULTORIA FINANCEIRA, CONTABILÍSTICA, JURÍDICA OU TRIBUTÁRIA. ATIVOS DIGITAIS, INCLUINDO STABLECOINS AND NFTS, ENVOLVEM UM ALTO RISCO E PODEM SOFRER FORTES OSCILAÇÕES OU ATÉ PERDER TODO O SEU VALOR. CONSIDERE CUIDADOSAMENTE SE NEGOCIAR OU ACUMULAR ATIVOS DIGITAIS É ADEQUADO PARA SI TENDO EM CONTA A SUA CONDIÇÃO FINANCEIRA.