Aller au contenu principal

BINOHASH

Fonction de hachage résistante aux collisions pour les transactions Bitcoin, proposée par Robin Linus (ZeroSync) en 2026, qui permet une forme limitée d’introspection de transaction dans Bitcoin Script sans modification du consensus. Le nom vient du coefficient binomial \(\binom{n}{t}\) qui permet sa construction.

Le problème résolu par Binohash est que Bitcoin Script ne peut pas lire nativement les données d’une transaction (entrées, sorties, montants). Cette limitation empêche la vérification trustless des propriétés d’une transaction dans Script, ce qui est nécessaire pour des protocoles comme les ponts BitVM.

Binohash exploite le comportement FindAndDelete du legacy OP_CHECKMULTISIG, un artéfact historique qui supprime les signatures du scriptCode avant le calcul du sighash. En intégrant un pool de signatures dans le locking script et en sélectionnant des sous-ensembles via OP_ROLL, chaque sélection produit un sighash différent. Le dépenseur effectue un grinding par preuve de travail (puzzles de signatures ECDSA vérifiables par OP_SIZE) jusqu’à trouver un sous-ensemble satisfaisant une contrainte de taille. Les indices du sous-ensemble gagnant constituent le Binohash, directement lisible dans l’unlocking script.

Termes associés :