BIP-157
BIP-157 décrit le protocole de récupération des compact block filters par les light clients. Successeur de BIP-37 pour la confidentialité.
La couche réseau de Neutrino
BIP-157, écrit par Olaoluwa Osuntokun et Alex Akselrod en 2017, définit les messages P2P permettant aux light clients de demander à un full node les filtres compacts décrits dans BIP-158. Avec son partenaire BIP-158, il constitue le protocole Neutrino, utilisé par les wallets light modernes pour synchroniser leur historique sans télécharger toute la blockchain.
Les nouveaux messages P2P
| Message | Rôle |
|---------|------|
| getcfilters | Demande des filtres pour une plage de blocs |
| cfilter | Envoi d'un filtre |
| getcfheaders | Demande des headers de filtres |
| cfheaders | Envoi des headers chainés |
| getcfcheckpt | Points de checkpoint des filtres |
| cfcheckpt | Réponse aux checkpoints |
Le client peut ainsi vérifier la chaîne des filtres sans télécharger les blocs eux-mêmes : tous les nœuds servant les filtres sont d'accord sur les mêmes valeurs, et un nœud malveillant ne peut pas mentir longtemps sans être détecté.
Le flux typique
- Le wallet télécharge les headers de blocs (80 octets chacun).
- Il télécharge les filter headers via
getcfheaders. - Pour chaque bloc qui l'intéresse, il télécharge le filtre via
getcfilter. - Il teste localement le filtre contre ses propres adresses.
- Si match, il télécharge le bloc complet via
getdata.
Le serveur ne sait pas pour quelles adresses le wallet s'intéresse : il envoie le même filtre à tout le monde.
Avantages sur BIP-37
| Critère | BIP-37 | BIP-157/158 | |---------|--------|-------------| | Privacy serveur | Mauvaise (fuites) | Bonne (filtres déterministes) | | Charge serveur | Asymétrique | Symétrique | | Auditable | Non | Oui (tous les nœuds calculent pareil) | | DoS résistance | Faible | Forte |
Implémentations
- LND Neutrino : référence, utilisé par Phoenix, Zeus, Mutiny.
- btcd / btcwallet : compatible.
- Wasabi Wallet 2 : implémentation cliente.
- Bitcoin Core : option
-blockfilterindexdepuis 0.19.
À retenir
BIP-157 est la couche transport de la révolution des filtres compacts. Combiné à BIP-158, il rend possible des wallets ultra-légers et privés, idéaux pour mobile et embarqué. C'est aujourd'hui le standard de fait pour les light clients sérieux.
Termes lies
- Compact Block FiltersLes compact block filters (BIP-158) sont des filtres GCS qui résument le contenu d'un bloc. Permettent à un client léger de tester localement la pertinence d'un bloc. Plus privés que les bloom filters. Base de Neutrino.
- NeutrinoNeutrino (BIP-157/158) est un mode de scan SPV où le client filtre côté lui-même via les compact block filters. Préserve la confidentialité contre les serveurs. Utilisé par certains wallets Lightning (LDK, etc.). Évolution moderne du SPV.
- BIP-158BIP-158 spécifie les compact block filters basés sur GCS (Golomb-coded sets). Permettent de tester localement la pertinence d'un bloc. Cœur de Neutrino.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.