Un satoshi, abrégé sat, est un cent-millionième de bitcoin : 1 sat = 0,00000001 BTC. C'est la plus petite unité de valeur inscrite dans les transactions de la couche de base de Bitcoin. Ce n'est pas une autre cryptomonnaie. Une même somme s'exprime en BTC ou en satoshis entiers, comme une longueur en mètres ou en centimètres.
Anna doit payer 25000 sat, mais son portefeuille affiche 0,00025 BTC. Ce ne sont ni deux monnaies ni un meilleur taux de change : ce sont deux écritures de la même somme. La relation est fixe : 1 BTC = 100000000 sat, donc 0,001 BTC = 100000 sat. Pour les petits montants du quotidien, les sats sont souvent plus lisibles qu'une suite de zéros après la virgule. Le cours du bitcoin en euros ou en dollars peut varier ; cette conversion entre BTC et sat ne change pas pour autant. [1] [2]
Quand Anna choisit sats dans les réglages, ses bitcoins ne partent nulle part et aucune nouvelle monnaie n'est créée. Seuls le nombre et l'unité affichés changent. sat abrège le nom de l'unité et sats s'emploie couramment au pluriel. Le nom rend hommage à Satoshi Nakamoto, créateur de Bitcoin, et ne désigne pas un actif à acheter séparément. Une unité plus petite facilite la lecture des petits montants. Elle ne garantit ni un pouvoir d'achat stable ni un gain. [2]
Supposons que le portefeuille d'Anna utilise une somme de 50000 sat reçue auparavant. Il envoie 25000 sat au destinataire, rend 24000 sat à Anna et laisse 1000 sat de frais au mineur qui inclut la transaction dans un bloc. Le compte est bon : 50000 = 25000 + 24000 + 1000. Anna a donc dépensé 26000 sat pour ce paiement, pas la totalité du montant utilisé. C'est un exemple, pas un niveau de frais habituel ou conseillé. Avant de valider, lisez séparément la somme destinée au bénéficiaire et les frais. [8]
À côté des frais, le portefeuille peut afficher une Fee Rate, un taux en sat/vB. Il indique le nombre de satoshis par octet virtuel, l'unité de taille utilisée pour les frais de transaction. Une transaction de 100 vB au taux de 10 sat/vB coûte ainsi 1000 sat. Ce taux n'est pas un pourcentage de la somme envoyée. Deux paiements identiques en valeur peuvent avoir des tailles différentes, notamment si l'un réunit davantage de sommes reçues précédemment. Vérifiez donc le résultat dans le récapitulatif final du portefeuille. [7] [8]
Un nombre sans unité ne suffit pas. Saisir 25000 dans un champ en sats n'a pas du tout le même sens que dans un champ en BTC. Après avoir scanné un QR code de paiement, vérifiez l'adresse, le réseau, le montant et les frais avant de signer. La signature est une autorisation numérique de dépenser : le portefeuille la crée à l’aide d’une clé privée, une valeur secrète qui permet de contrôler les bitcoins. Selon BIP 321, la spécification des liens de paiement, le paramètre amount d'un lien de paiement utilise des BTC décimaux avec un point : amount=0.00025 signifie 25000 sat. Cela reste vrai si le portefeuille affiche des sats ou emploie une virgule décimale locale. Il n'est pas nécessaire de modifier le lien à la main ; l'important est le résultat correct sur l'écran de confirmation. [3]
Le réseau ne contient pas de petits fichiers représentant chaque satoshi. Il enregistre des sorties de transactions avec un montant et les conditions permettant de le dépenser. Une sortie encore non dépensée est un UTXO. Un portefeuille peut réunir plusieurs de ces montants reçus et additionner leurs valeurs pour afficher un solde. Lors d'un paiement, il consomme entièrement certaines sorties et en crée de nouvelles pour le destinataire et la monnaie éventuelle. Satoshi est l'unité de ces valeurs, pas un objet distinct rangé dans le portefeuille. [2]
La précision d’un montant et le montant pratique d’un paiement sont deux choses différentes. Une sortie peut contenir 1 sat. Les nœuds, ces ordinateurs qui vérifient et transmettent les transactions, peuvent toutefois refuser de relayer une transaction créant une sortie trop petite. Dust concerne leurs règles de diffusion et l'estimation du coût futur de dépense. Le seuil dépend aussi du type de sortie et des paramètres de ces règles. Ce n'est pas une règle universelle imposant le même montant minimal à tout paiement valide. Même une petite sortie déjà incluse dans un bloc peut coûter plus cher à dépenser que sa valeur. [7]
Lightning Network utilise des canaux de paiement, dans lesquels les participants actualisent la répartition des fonds engagés dans le canal. Il n’est donc pas nécessaire d’inscrire chaque paiement séparément dans un bloc Bitcoin. Ses calculs internes utilisent aussi le millisatoshi, abrégé msat : 1 sat = 1000 msat. Cela permet notamment de calculer les frais plus finement. Cela ne crée pas de sortie contenant une fraction de satoshi sur la couche de base. Lors de la fermeture des canaux, les règles de Lightning convertissent les valeurs en satoshis entiers et écartent certaines sorties trop petites. Une comptabilité interne plus précise et le règlement final sont deux choses différentes. [6] [5]
Diviser un BTC en cent millions de fractions n'augmente pas la quantité de bitcoins, pas plus que convertir des mètres en centimètres n'allonge une table. Les nouveaux bitcoins sont créés selon les règles de la subvention de bloc, la nouvelle émission associée à un bloc. Lors du Halving, cette subvention est divisée par deux en satoshis entiers ; les fractions sont supprimées et, dans un avenir lointain, le résultat devient nul. La constante technique MAX_MONEY sert de borne de contrôle des montants. Elle ne signifie pas, à elle seule, qu'exactement 21 millions de BTC seront émis et disponibles à la dépense. Les clés perdues et certaines récompenses inutilisables ou non réclamées réduisent également la disponibilité. [1] [8]
Bitcoin Core emploie CAmount, un type entier sur 64 bits, pour les montants, et la constante COIN vaut 100000000. Ainsi, 0,00025 BTC est traité en interne comme l'entier 25000. Cela permet d'éviter les imprécisions des calculs binaires ordinaires en virgule flottante, ou floating point. Pour l'utilisateur, la règle est simple : vérifier l'unité et le montant exact. Pour concevoir une calculatrice ou traiter des paiements par programme, utilisez des satoshis entiers ou une arithmétique décimale exacte, plutôt que d'arrondir après coup un résultat approximatif. [1]
Pour une vision complète, lisez aussi Bitcoin, 21 Million, Unit of Account, Lightning Network, UTXO, Transaction Fees. Cette entrée est également citée par Bitcoin Pizza Day, Chaumian eCash, Blind Signature, OP_CHECKTEMPLATEVERIFY.