#dusk $DUSK @Dusk
Passei esta semana pela estrutura de notas do Phoenix porque queria entender o que “spent” realmente significa em um modelo de privacidade de UTXO — e a resposta é mais contraintuitiva do que eu esperava.
Em um modelo transparente de UTXO como o Bitcoin, quando você gasta uma moeda a rede sabe exatamente qual saída não gasta você consumiu. Ela remove essa saída do conjunto UTXO. A cadeia consegue rastrear para onde algo foi movido.
O Phoenix faz algo diferente. Quando você gasta uma nota, a rede não a remove da árvore de Merkle de notas. O whitepaper é explícito: “as notas não são removidas da árvore de Merkle. Em vez disso, a árvore continua a crescer à medida que novas transações são adicionadas à rede.”
O que acontece em vez disso: um nullifier é adicionado a uma lista separada de nullifiers. O nullifier é um valor determinístico derivado da chave secreta da nota. A rede verifica que o nullifier ainda não foi visto antes — é assim que se previne o double spending. Mas a rede não tem como mapear um nullifier de volta para uma nota específica na árvore. Ela sabe que algo foi gasto. Ela não sabe qual nota.
Essa parte é sólida. A desvinculabilidade (unlinkability) vem precisamente do que a rede não aprende. Uma nota na árvore de Merkle tem exatamente a mesma aparência se foi gasta ou não. Um observador que acompanha a cadeia não consegue distinguir uma nota não gasta recém-criada de uma nota cujo nullifier já está na lista.
. Com o tempo, à medida que o uso do Phoenix aumenta, o estado completo da árvore de Merkle se torna uma carga real de armazenamento para os nós — todas aquelas notas gastas ainda ficam lá, indistinguíveis das que estão ativas.
Eu realmente acho que é uma compensação de design deliberada, e não uma falha — remover notas gastas vazaria quais notas foram gastas, quebrando a desvinculabilidade. Mas isso significa que a garantia de privacidade tem um custo real de infraestrutura associado a ela que cresce com o uso.
O que eu ainda não descobri é se existe algum mecanismo de pruning para notas muito antigas que a rede concordou que estão permanentemente gastas — ou se a árvore foi desenhada para crescer indefinidamente sem nenhuma estratégia de compressão.
Passei esta semana pela estrutura de notas do Phoenix porque queria entender o que “spent” realmente significa em um modelo de privacidade de UTXO — e a resposta é mais contraintuitiva do que eu esperava.
Em um modelo transparente de UTXO como o Bitcoin, quando você gasta uma moeda a rede sabe exatamente qual saída não gasta você consumiu. Ela remove essa saída do conjunto UTXO. A cadeia consegue rastrear para onde algo foi movido.
O Phoenix faz algo diferente. Quando você gasta uma nota, a rede não a remove da árvore de Merkle de notas. O whitepaper é explícito: “as notas não são removidas da árvore de Merkle. Em vez disso, a árvore continua a crescer à medida que novas transações são adicionadas à rede.”
O que acontece em vez disso: um nullifier é adicionado a uma lista separada de nullifiers. O nullifier é um valor determinístico derivado da chave secreta da nota. A rede verifica que o nullifier ainda não foi visto antes — é assim que se previne o double spending. Mas a rede não tem como mapear um nullifier de volta para uma nota específica na árvore. Ela sabe que algo foi gasto. Ela não sabe qual nota.
Essa parte é sólida. A desvinculabilidade (unlinkability) vem precisamente do que a rede não aprende. Uma nota na árvore de Merkle tem exatamente a mesma aparência se foi gasta ou não. Um observador que acompanha a cadeia não consegue distinguir uma nota não gasta recém-criada de uma nota cujo nullifier já está na lista.
. Com o tempo, à medida que o uso do Phoenix aumenta, o estado completo da árvore de Merkle se torna uma carga real de armazenamento para os nós — todas aquelas notas gastas ainda ficam lá, indistinguíveis das que estão ativas.
Eu realmente acho que é uma compensação de design deliberada, e não uma falha — remover notas gastas vazaria quais notas foram gastas, quebrando a desvinculabilidade. Mas isso significa que a garantia de privacidade tem um custo real de infraestrutura associado a ela que cresce com o uso.
O que eu ainda não descobri é se existe algum mecanismo de pruning para notas muito antigas que a rede concordou que estão permanentemente gastas — ou se a árvore foi desenhada para crescer indefinidamente sem nenhuma estratégia de compressão.