Aller au contenu principal
BIP

BIP-158

BIP-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.

Définition

BIP-158, rédigé par Olaoluwa Osuntokun et Alex Akselrod (mai 2017), définit le format des Compact Block Filters basés sur les Golomb-coded sets (GCS). Pour chaque bloc, le full node calcule un filtre déterministe encodant les éléments de scripts (scriptPubKey, outpoints) du bloc. Le filtre fait typiquement 1 à 3 % de la taille du bloc, soit ~50 Ko par bloc moderne.

Pourquoi GCS et pas Bloom

Les filtres de Bloom (BIP-37) avaient deux défauts pour le côté serveur : taille variable, et conception orientée client. GCS résout ces problèmes :

  • Compact : encodage Golomb (rice) sur les hashes triés, ~2× plus dense que Bloom à fausse positif égal.
  • Déterministe : tous les nœuds calculent exactement le même filtre.
  • Calculable par bloc : pas de configuration côté client.
  • Auditable : un nœud peut vérifier qu'un autre a bien calculé le filtre.

Le format technique

Pour chaque bloc, le filtre encode :

  • Les scriptPubKey de chaque output (filtre basic, type 0).
  • Les outpoints dépensés par les inputs.

Le faux positif rate par défaut est de 1 / 784 931 : un filtre signale rarement un match qui n'en est pas un, mais quand il signale, le client doit télécharger tout le bloc.

Le couplage avec BIP-157

BIP-158 décrit le contenu du filtre. BIP-157 décrit comment demander ces filtres via le protocole P2P. Les deux BIPs forment ensemble la spécification complète de Neutrino.

Performance et adoption

| Métrique | Valeur | |----------|--------| | Taille moyenne d'un filtre | ~30-60 Ko | | Bande passante synchro 1 an | ~3 Go (filtres) vs ~50 Go (blocs) | | Faux positifs par adresse/an | ~0.01 % | | Implémentations | LND, btcd, Wasabi 2, BIP-158 lib Rust/Go |

Limites

  • Pas de vérification de paiement immédiate : il faut télécharger le bloc complet quand un match est trouvé.
  • Pas idéal pour bloomy address scanning d'un wallet immense : à 1 000 adresses, les faux positifs augmentent.
  • Coût serveur : indexation initiale longue (3-4 jours sur un Raspberry Pi).

À retenir

BIP-158 est l'innovation qui a rendu les wallets mobiles non-custodial viables. Avant lui, le choix était binaire : full node lourd ou wallet SPV non-privé. Aujourd'hui, Phoenix, Zeus, Mutiny et Wasabi proposent une expérience proche du SPV sans en sacrifier la privacy.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.