BIP-0037
Proposition introduite pour permettre aux portefeuilles légers (Simplified Payment Verification) de filtrer les transactions sans avoir à télécharger la blockchain complète. Cette méthode repose sur le concept de Bloom Filters, des structures de données probabilistes qui sont utilisées pour tester l’appartenance à un ensemble. Ces filtres permettent aux clients SPV de recevoir uniquement les transactions pertinentes pour leur portefeuille, afin de réduire la bande passante et la mémoire vive requise pour la synchronisation, notamment sur les téléphones portables. Les Bloom Filters sont transmis à un nœud complet, lequel renvoie en réponse des « Merkle blocks », contenant uniquement les transactions filtrées, l’en-tête avec la racine de Merkle, et les branches nécessaires pour associer ces transactions à la racine de l’arbre de Merkle. Le BIP-0037 a été critiqué pour ses lacunes en matière de confidentialité, car il expose notamment les adresses et les transactions des utilisateurs aux nœuds complets utilisés. Pour tenter de remédier à cette faille, il est possible d’intégrer des transactions supplémentaires, les « faux positifs », afin de créer du déni plausible. Néanmoins, le volume de faux positifs nécessaire pour atteindre un niveau de déni plausible satisfaisant reste considérablement élevé. Par ailleurs, le BIP-0037 a aussi été critiqué pour la charge de calcul imposée aux nœuds complets et pour l’introduction d’un nouveau vecteur d’attaque de type DoS. Cette option est donc par défaut désactivée dans Bitcoin Core. Pour l’activer, il faut entrer le paramètre peerbloomfilters=1 dans le fichier de configuration.