Provas Merkle
Quando você resolve um nome, a API retorna uma prova de associação ao Merkle - 128 hashes irmãos da Sparse Merkle Tree. Isso permite verificar a resolução sem confiar no servidor.
Como funciona a verificação
leaf = SHA-256(address)
key = SHA-256("richard.zcash")
current_root
|
/ \
/ \
... ...
/ \
sibling[127] leaf(richard.zcash)
Hash a folha através dos 128 níveis usando os hashes irmãos. Se você chegar ao smt_root anunciado, a resolução está correta.
A Árvore Merkle Esparsa
ZCashNames usa uma árvore Merkle esparsa (SMT) SHA-256 de profundidade 128:
- Profundidade 128 - 2^128 slots possíveis, sem colisões
- SHA-256 em todos os níveis para hashing determinístico
- Provas de não adesão - verifique se um nome não está em uso (necessário durante o registro)
- Provas de adesão - verifique se um nome está registrado (devolvido na resolução)
Estado Determinístico
Dois indexadores independentes processando os mesmos blocos devem produzir a mesma raiz SMT. Uma incompatibilidade significa que alguém está errado.
Verifique a raiz atual: GET /v1.0/info