Si vous utilisez votre propre portefeuille Bitcoin en self-custody, vous avez forcément déjà utilisé une adresse de réception. Comme vous le savez sans doute, ces séquences de caractères permettent de recevoir des bitcoins sur votre portefeuille.
Dans cet article, nous allons étudier en détail cet élément essentiel dans l'utilisation de Bitcoin. Nous explorons ce qu'est précisément une adresse de réception et son rôle dans le portefeuille. Nous présentons également les différents types d'adresses existants, de la manière dont chaque type est construit et de celui que vous devriez privilégier. Enfin, nous abordons les bonnes pratiques à adopter pour garantir la sécurité de vos bitcoins en self-custody.
Qu'est-ce qu'une adresse de réception Bitcoin ?
Une adresse de réception Bitcoin est une chaîne alphanumérique utilisée pour recevoir des bitcoins sur un portefeuille, un peu comme une adresse postale qui sert à recevoir du courrier. Cette adresse est l'identifiant qui indique où envoyer les BTC.
En revanche, contrairement à une adresse postale, qui reste la même pour tous les courriers reçus, les portefeuilles Bitcoin peuvent générer plusieurs adresses de réception différentes. Pour des raisons de confidentialité, que nous aborderons plus en détail dans la dernière partie, il est fortement recommandé d'utiliser une nouvelle adresse pour chaque paiement reçu dans le portefeuille.
Concrètement, lorsqu'un utilisateur souhaite envoyer des bitcoins, il doit connaître l'adresse de réception du destinataire. Cette adresse est générée par le portefeuille du destinataire et peut être communiquée à l’envoyeur qui va l’utiliser dans sa transaction.
Chaque adresse de réception est liée à une clé publique, qui est elle-même associée à une clé privée. Une fois que les bitcoins sont reçus sur une adresse, la seule manière de les dépenser de nouveau est de fournir une preuve cryptographique avec la clé privée correspondante.
Cette preuve prend la forme d'une signature numérique. La personne qui détient la clé privée associée à une adresse est donc de fait le propriétaire de cette adresse et des bitcoins qui y sont envoyés. Ce mécanisme garantit que seul le propriétaire légitime peut dépenser les bitcoins qu'il a précédemment reçus.
Quels sont les différents types d’adresses Bitcoin ?
Sur Bitcoin, différents modèles de script standards sont utilisés pour bloquer des BTC sur une adresse de réception. Chaque modèle de script répond à des besoins spécifiques, et de nouveaux modèles sont régulièrement introduits avec des mises à jour.
Un modèle de script est essentiellement une petite liste d’OP-codes mis ensemble pour former une norme qui spécifie une manière d’établir des conditions de dépenses sur des bitcoins. Les principales familles de modèles de scripts, par ordre chronologique, sont :
Legacy ;
Nested SegWit ;
SegWit ;
Taproot.
Si vous utilisez un portefeuille Bitcoin en self-custody, vous avez probablement déjà rencontré ces termes techniques, car il vous est généralement demandé de choisir parmi ces standards lors de la création de votre portefeuille. Et justement, chaque standard correspond à un type d'adresse différent.
Le modèle P2PKH (Pay-to-PubKey-Hash) est le plus ancien. Il a été introduit par Satoshi Nakamoto lors du lancement de Bitcoin. Les adresses P2PKH débutent par un « 1 ». Par exemple, voici une adresse de réception P2PKH :
1HTzQjs6YUUPiGNnpC9425xEnXqs2jWm7c
Introduit quelques années plus tard, le modèle P2SH (Pay-to-Script-Hash) permet d'encoder un script de dépense pour des transactions plus complexes, telles que les portefeuilles multisignatures. Les adresses P2SH débutent toujours par un « 3 », par exemple :
3GE7GuBm1MfuUT7t1biDJwcM75oWVxFbwP
Ces deux modèles font partie du standard « Legacy » et sont aujourd'hui considérés comme désuets. Leur utilisation n’est plus recommandée. Ils ne présentent pas de problème de sécurité, mais ils coûtent plus cher et sont moins confidentiels que les standards modernes.
Les adresses P2SH-P2WPKH et P2SH-P2WSH sont des solutions de transition pour la compatibilité de SegWit. Ces modèles de script spécifiques encapsulent une adresse SegWit dans une adresse P2SH, afin de permettre aux utilisateurs de bénéficier des avantages de SegWit tout en restant compatibles avec les anciens logiciels. Ces adresses sont les mêmes que des adresses P2SH et elles commencent donc par un « 3 ». C’est ce standard que l’on appelle « Nested-Segwit », qui n'est plus nécessaire étant donné la large adoption de SegWit.
P2WPKH (Pay-to-Witness-PubKey-Hash) et P2WSH (Pay-to-Witness-Script-Hash) sont les formats natifs SegWit. En tant qu’utilisateur, vous pouvez tout à fait choisir d’utiliser ce standard, même si je vous conseille plutôt d’utiliser des adresses Taproot dorénavant. Les adresses P2WPKH commencent par « bc1q » et permettent à l’utilisateur d’économiser sur ses frais de transaction. Les adresses P2WSH, commencent également par « bc1q », et sont utilisées pour des scripts plus complexes, comme les multisignatures. Par exemple, voici une adresse SegWit :
bc1qtcstnrarj7ennfsu4fjtlmdw3gu3w833jgvhrt
Enfin, les scripts P2TR (Pay-to-Taproot), introduits avec Taproot en 2021, représentent le modèle le plus récent. L'utilisation des adresses P2TR permet non seulement des économies de frais, mais aussi une amélioration de la confidentialité, surtout pour les scripts complexes. Les adresses P2TR commencent toujours par « bc1p », comme par exemple :
bc1ph540qgndfedhnhfyq36z7d6fsk278ca0sgsmexnz377v633e7slqp7lnjn
Mais concrètement, comment sont générées ces adresses de réception par les portefeuilles ?
Comment sont construites les adresses Bitcoin ?
La construction d'une adresse de réception dépend du type de script utilisé. Pour les modèles P2PKH et P2WPKH, les adresses sont simplement le hachage de la clé publique de l'utilisateur. Votre portefeuille Bitcoin génère de nombreuses paires de clés cryptographiques à partir de votre phrase mnémonique (12 ou 24 mots). Chaque paire se compose d'une clé privée, utilisée pour dépenser les fonds, et d'une clé publique, utilisée pour les recevoir. Pour former une adresse de réception, la clé publique est simplement passée dans une fonction de hachage.
Cette partie constitue ce qu'on appelle la charge utile de l'adresse. À celle-ci, on ajoute ensuite certaines métadonnées, comme le préfixe « bc1q » pour les adresses SegWit, par exemple. On ajoute également une somme de contrôle (ou checksum).
Pour les modèles P2SH et P2WSH, comme leurs noms l’indiquent, les adresses sont le résultat du hachage du script utilisé. Pour le reste, la construction est identique.
Quant aux adresses P2TR, leur construction diffère légèrement : l'adresse n'est pas le hachage d'une clé publique, mais plutôt la clé publique elle-même, présentée sous sa forme brute. Pour ceux désirant approfondir leur compréhension du fonctionnement des adresses Taproot, je vous invite à consulter notre article dédié à ce sujet.
Une fois que toutes les informations nécessaires à la construction d'une adresse sont rassemblées, elles sont ensuite encodées dans un format spécifique adapté à Bitcoin. Trois formats sont utilisés :
Base58check pour les vieilles adresses Legacy ;
Bech32 pour les adresses SegWit ;
Bech32m pour les adresses Taproot.
Ces formats sont simplement une manière standard d’écrire les adresses pour qu'elles soient lisibles par les humains et uniformément reconnues par différents logiciels de portefeuille et plateformes telles que Bitstack.
Pour bloquer des bitcoins, la charge utile de l'adresse est intégrée dans un script qui verrouille les fonds. Ce script est généralement appelé « scriptPubKey » ou « Locking Script ».
Comment bien utiliser les adresses de réception Bitcoin ?
Comme nous l’avons vu dans la partie précédente, les adresses de réception Bitcoin intègrent une somme de contrôle. Cette valeur, calculée à partir de l'adresse elle-même, est ajoutée à la fin de celle-ci pour garantir son intégrité et sa validité lors de la transmission.
Cette somme de contrôle est importante, car elle permet aux logiciels de vérifier l'exactitude de l'adresse saisie lors d'un envoi de bitcoins. Par exemple, avec l'application Bitstack, si vous tentez de retirer vos bitcoins vers un autre portefeuille et commettez une erreur en saisissant l'adresse, l’application ne vous laissera pas envoyer vos fonds, car l’adresse est invalide. Cette vérification est rendue possible grâce à la somme de contrôle.
Cette fonctionnalité élimine le besoin de vérifier minutieusement chaque caractère de l'adresse de réception lors de sa transmission à un envoyeur. Il suffit de vérifier quelques caractères au début, au milieu et à la fin de l'adresse pour vous assurer qu’il s'agit bien de la bonne. S’il y a une faute de frappe, comme un caractère manquant ou en trop, le logiciel de l'expéditeur empêchera l'envoi de la transaction.
Voilà pour ce qui est de la sécurité des adresses de réception Bitcoin. Pour la confidentialité, il est important de comprendre que les adresses ne doivent être utilisées qu'une seule fois. Cela signifie que pour chaque nouvelle transaction entrante, vous devez générer une nouvelle adresse neuve.
Puisque la blockchain est publique, il est facile de consulter quelles adresses sécurisent quelle quantité de bitcoins. Si une même adresse est utilisée pour plusieurs transactions, il est alors possible de déduire que tous les bitcoins associés à cette adresse appartiennent à une même personne. Ce phénomène de réutilisation d'adresse compromet la vie privée de l'utilisateur, en permettant de faire des liens déterministes entre différentes transactions et en facilitant le traçage des bitcoins sur la blockchain. Satoshi Nakamoto lui-même soulignait déjà cette problématique dans son livre blanc :
- Nakamoto, S. (2008). "Bitcoin: A Peer-to-Peer Electronic Cash System". https://bitcoin.org/bitcoin.pdf.
Pour protéger au mieux votre vie privée, il est fortement recommandé d'utiliser chaque adresse Bitcoin une seule fois. Heureusement, avec les portefeuilles déterministes et hiérarchiques, il est désormais très simple de gérer de multiples adresses. Toutes les paires de clés associées à un portefeuille peuvent être régénérées facilement à partir de votre phrase mnémonique. C’est précisément pour cette raison que les logiciels de portefeuille vous proposent automatiquement une nouvelle adresse à chaque fois que vous appuyez sur le bouton « Recevoir ».
➤ Découvrez 7 astuces pour améliorer la sécurité de votre portefeuille Bitcoin.
Conclusion
Une adresse Bitcoin est une suite de caractères généralement générée à partir d'une clé publique, utilisée dans les scripts pour bloquer des bitcoins. Autrement dit, elle sert à recevoir des bitcoins.
Il existe plusieurs types d'adresses Bitcoin, chacun correspondant à une norme différente. De nos jours, il est recommandé d'utiliser des adresses Taproot P2TR, ou à défaut, des adresses SegWit P2WPKH.
Pour l'utilisateur, l'aspect le plus important lors de l'utilisation des adresses de réception est de ne jamais réutiliser la même adresse pour plusieurs transactions. Il est essentiel de générer une nouvelle adresse pour chaque transaction, sans quoi le peu de confidentialité amené par Bitcoin est complètement détruit.