Glossaire / Transactions et frais
SIGHASH_ANYONECANPAY
- Qu'est-ce que SIGHASH_ANYONECANPAY ?
- SIGHASH_ANYONECANPAY est un modificateur qui retire toutes les autres entrées de l'empreinte, de sorte qu'une signature ne couvre que le seul bitcoin qu'elle dépense et que d'autres peuvent librement rejoindre la transaction.
Ce n'est pas un mode à part entière. L'indicateur a la valeur 128 et s'ajoute à l'un des trois modes de base, ce qui produit 129, 130 ou 131, et chaque combinaison répond à une question différente sur ce que le signataire accepte de laisser des inconnus modifier. Le financement participatif et les places de marché d'ordinals sont les deux endroits où il est vraiment utile.
Comment cela fonctionne
Activer le modificateur réduit le côté entrées de l'empreinte à une seule entrée : l'outpoint dépensé, son numéro de séquence et le script qu'il déverrouille.
Toutes les autres entrées disparaissent du calcul. Un signataire qui travaille sous cette règle ne sait pas et ne se soucie pas de savoir combien d'autres personnes ont apporté des bitcoins, dans quel ordre elles l'ont fait, ni si d'autres arriveront ensuite, et l'ajout d'une entrée plus tard ne peut pas invalider une signature faite auparavant. Cette propriété est toute la fonctionnalité, et c'est elle qui permet de collecter les signatures : plusieurs personnes peuvent signer isolément, à des moments différents, sur des machines différentes, et quelqu'un peut réunir les éléments en une seule transaction valide.
Le mode de base gouverne toujours le côté sorties, et les trois combinaisons se comportent très différemment.
- 129, le modificateur avec la règle de toutes les sorties, signifie « mon bitcoin entre et les paiements doivent être exactement cette liste ». Des entrées peuvent être ajoutées, pas des sorties.
- 130, le modificateur avec la règle d'aucune sortie, est la signature la plus faible que le protocole autorise : un bitcoin en entrée, et aucune déclaration sur l'endroit où quoi que ce soit aboutit.
- 131, le modificateur avec la règle d'une seule sortie, signifie « mon bitcoin entre et je dois recevoir la sortie à mon index ». Tout le reste reste ouvert.
Où le voir
Deux constructions l'utilisent sérieusement, et toutes deux dépendent de la capacité d'inconnus à ajouter des fonds sans casser ce qui est déjà signé.
La première est le contrat de financement conditionnel (assurance contract), la version bitcoin de la promesse de financement participatif. Chaque contributeur signe la valeur 129 sur une liste de sorties fixe contenant le paiement du projet, et chaque promesse est une entrée. La transaction ne devient valide que lorsque les entrées promises couvrent les sorties, de sorte que l'objectif de financement s'impose lui-même par l'arithmétique au lieu d'un agent séquestre, et une campagne qui n'atteint pas son but ne produit simplement jamais de transaction valide. Promettre ne coûte rien et se retirer ne coûte rien, parce que les bitcoins ne bougent jamais.
La seconde est l'offre de place de marché pré-signée. Un vendeur signe la valeur 131 sur sa propre sortie d'inscription ou de rune et le prix qu'il demande, publie le résultat sous forme de transaction partiellement signée, et tout acheteur la complète avec ses propres entrées, sa propre monnaie rendue et des frais. Aucun contrat de mise en vente, aucun dépositaire, et aucune contrepartie à qui faire confiance pour le règlement lui-même.
Un avertissement l'accompagne. La valeur 130 qui se trouve dans une mempool publique est de l'argent gratuit pour qui la ramasse le premier, et un seul bit la sépare des combinaisons sûres. Si vous examinez du code de signature, vérifiez que le mode de base est une constante codée en dur et que le modificateur est la seule partie que quelque chose est autorisé à faire varier.
Lire l'octet de l'indicateur
Séparez l'octet de l'indicateur sighash en ses deux moitiés et il cesse d'être cryptique. Les bits du bas donnent le mode de base : 1 pour toutes les sorties, 2 pour aucune, 3 pour une seule sortie correspondante. Le bit haut, d'une valeur de 128, est le modificateur. Ainsi, une signature qui se termine par 81 couvre tout sauf les autres entrées, 83 est la règle des places de marché, et un simple 01 sans modificateur est le paiement ordinaire que votre propre portefeuille produit chaque fois que vous dépensez.