L'élagage des arbres Merkle décrit dans le livre blanc est-il faisable/utile  ? Si non, y aurait-il une alternative ?


Lorsque je lisais bitcoin-paper-errata-and-details.md écrit par David A. Harding, j’ai réalisé qu’il y avait probablement un malentendu commun ou une simplification excessive à propos de l’élagage des arbres Merkle. Ce que Nick ODell avait dit pourrait être un exemple vivant :

  • Une feuille (transaction) peut être élaguée lorsque toutes ses sorties ont été dépensées

Cela a semblé être vrai pour moi, jusqu’à ce que je lise ce que David avait écrit :

il n’y a actuellement aucun moyen dans Bitcoin de prouver qu’une transaction n’a pas été dépensée

L'élagage des arbres Merkle décrit dans le livre blanc est-il faisable/utile  ? Si non, y aurait-il une alternative ?

Je ne sais pas si j’ai bien compris, alors j’ai d’abord fait un diagramme pour illustrer (une partie de) ma compréhension de ce problème :

Pourtant, je ne pense pas que ce problème puisse simplement tuer toute l’idée de l’élagage des arbres de Merkle, je pense que cela signifie simplement que « la capacité de disque récupérable est bien inférieure aux attentes ». En d’autres termes, si je ne me trompe pas, l’affirmation de Nick ODell pourrait être « corrigée » comme  :

  • Une feuille (transaction) peut être élaguée lorsque toutes ses sorties ont été dépensées, et toutes ses transactions précédentes ont été élaguées.

Cependant, je pense alors que, même si l’affirmation « corrigée » est prise en considération, l’idée de l’élagage des arbres de Merkle ne semble toujours pas réalisable/utile  :

  • Même si le problème mentionné ci-dessus est évité, un nœud malveillant peut toujours tromper le nouveau nœud complet en cachant/choisissant certaines branches merkle. Un nœud malveillant peut mentir sur la propriété réelle des pièces (état dépensé/non dépensé) sans casser du tout l’arborescence de Merkle. En d’autres termes. sinon il pourrait être trompé par un nœud malveillant.
  • Si un nœud complet doit activer l’élagage pour réduire l’espace disque requis pour lui-mêmelire/modifier directement les fichiers blockchain semble être beaucoup moins efficace que l’implémentation actuelle selon laquelle l’ensemble UTXO est complètement séparé du stockage de la blockchain, de sorte qu’un nœud complet (qu’il soit élagué ou non) n’a besoin que d’interroger et de mettre à jour la base de données de l’ensemble UTXO pendant le processus de téléchargement et de validation. La blockchain elle-même n’a pas du tout besoin d’être touchée à nouveau à des fins de validation, c’est la raison pour laquelle les anciens blocs peuvent être simplement supprimés lorsque « l’élagage » (pas l’élagage de l’arbre Merkle) est activé.
  • Cependant, je ne suis toujours pas sûr de cette conclusion. Est-ce lié à l’idée des preuves de fraude, dans le sens où tant qu’il y a encore au moins un nœud complet honnête, le nouveau nœud serait capable de repérer quelle donnée est la bonne ? Et si l’ensemble UTXO était également engagé dans la blockchain ? Que se passe-t-il si d’autres engagements comme la hauteur de bloc de la transaction précédente sont également ajoutés à la blockchain ?

    De plus, j’ai entendu dire que le protocole Mimblewimble permet un élagage sécurisé de la blockchain. Je suis également curieux de savoir comment Mimblewimble pourrait y parvenir, et si un objectif similaire pourrait éventuellement être atteint dans Bitcoin ?