a
a
Weather:
city not found
HomeBitcoinContexte technique des adresses Bitcoin version 1

Contexte technique des adresses Bitcoin version 1

Conversion de la clé publique ECDSA en adresse Bitcoin

Cet article peut être trop technique pour certains utilisateurs. L’article plus simple sur les adresses Bitcoin peut être plus approprié.

Une adresse Bitcoin est un hachage de 160 bits de la partie publique d’une paire de clés ECDSA publique / privée. En utilisant la cryptographie à clé publique, vous pouvez «signer» des données avec votre clé privée, et toute personne connaissant votre clé publique peut vérifier que la signature est valide.

Une nouvelle paire de clés est générée pour chaque adresse de réception (avec les nouveaux portefeuilles HD, cela se fait de manière déterministe). La clé publique et les clés privées associées (ou la graine nécessaire pour les générer) sont stockées dans le fichier de données du portefeuille. C’est le seul fichier dont les utilisateurs devraient avoir besoin pour la sauvegarde. Une transaction «d’envoi» vers une adresse Bitcoin spécifique nécessite que le portefeuille correspondant connaisse la clé privée qui l’implémente. Cela implique que si vous créez une adresse et recevez des pièces à cette adresse, puis restaurez le portefeuille à partir d’une sauvegarde précédente, avant que l’adresse ne soit générée, les pièces reçues avec cette adresse seront perdues; ce n’est pas un problème pour les portefeuilles HD où toutes les adresses sont générées à partir d’une seule graine. Les adresses sont ajoutées à un pool de clés d’adresses avant d’être utilisées pour recevoir des pièces. Si vous perdez complètement votre portefeuille, toutes vos pièces sont perdues et ne peuvent pas être récupérées.

Bitcoin vous permet de créer autant d’adresses que vous le souhaitez et d’en utiliser une nouvelle pour chaque transaction. Il n’y a pas « d’adresse principale » – la zone « Votre adresse Bitcoin » dans certaines interfaces utilisateur de portefeuille n’a pas d’importance. Il n’est disponible que pour des raisons de commodité et devrait changer automatiquement lorsqu’il est utilisé.

Les adresses Bitcoin contiennent un code de vérification intégré, il n’est donc généralement pas possible d’envoyer Bitcoin à une adresse mal saisie. Cependant, si l’adresse est bien formée mais que personne ne la possède (ou si le propriétaire a perdu son wallet.dat), toutes les pièces envoyées à cette adresse seront perdues à jamais.

Les valeurs de hachage et les données de somme de contrôle sont converties en une représentation alphanumérique à l’aide d’un schéma personnalisé: le schéma d’encodage Base58Check. Dans Base58Check, les adresses peuvent contenir tous les caractères alphanumériques sauf 0, O, I et l. Les adresses P2PKH du réseau principal commencent par 1, tandis que les adresses P2SH commencent par 3 (Les adresses Bech32 commencent par bc1 et n’utilisez pas l’encodage Base58Check). Les adresses Testnet commencent généralement par m ou n. Les adresses Mainnet peuvent contenir de 25 à 34 caractères et les adresses de testnet peuvent contenir de 26 à 34 caractères. La plupart des adresses comportent 33 ou 34 caractères.

Collisions (absence de collision)

Étant donné que les adresses Bitcoin sont essentiellement des nombres aléatoires, il est possible, bien qu’extrêmement improbable, que deux personnes génèrent indépendamment la même adresse. C’est ce qu’on appelle une collision. Si cela se produit, le propriétaire d’origine de l’adresse et le propriétaire en collision pourraient dépenser l’argent envoyé à cette adresse. Il ne serait pas possible pour la personne en collision de dépenser la totalité du portefeuille du propriétaire d’origine (ou vice versa).

Mais parce que l’espace des adresses possibles est si astronomiquement grand, la Terre est plus susceptible d’être détruite dans les 5 prochaines secondes qu’une collision au cours du prochain millénaire.

Comment créer une adresse Bitcoin

La bonne façon de créer une adresse Bitcoin est d’utiliser un logiciel de portefeuille bien testé, open source et évalué par des pairs. La gestion manuelle des clés a entraîné des pertes de fonds maintes et maintes fois. Contrairement à d’autres systèmes centralisés, les pertes de Bitcoin sont généralement irrécupérables.

Voici un bref aperçu du fonctionnement de la génération d’adresses, à titre informatif:

0 – Avoir une clé ECDSA privée

   18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725

1 – Obtenez la clé publique correspondante générée avec elle (33 octets, 1 octet 0x02 (la coordonnée y est paire) et 32 ​​octets correspondant à la coordonnée X)

   0250863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b2352

2 – Hash SHA-256 sur la clé publique

   0b7c28c9b7290c98d7438e70b3d3f7c848fbd7d1dc194ff83f4f7cc9b1378e98

3 – Hash RIPEMD-160 sur le résultat SHA-256

   f54a5851e9372b87810a8e60cdd2e7cfd80b6e31

4 – Ajouter l’octet de version devant le hachage RIPEMD-160 (0x00 pour le réseau principal)

   00f54a5851e9372b87810a8e60cdd2e7cfd80b6e31

(notez que les étapes suivantes sont l’encodage Base58Check, qui a plusieurs options de bibliothèque disponibles pour l’implémenter)
5 – Hash SHA-256 sur le résultat étendu RIPEMD-160

   ad3c854da227c7e99c4abfad4ea41d71311160df2e415e713318c70d67c6b41c

6 – Hash SHA-256 sur le résultat du hachage SHA-256 précédent

   c7f18fe8fcbed6396741e58ad259b5cb16b7fd7f041904147ba1dcffabf747fd

7 – Obtenez les 4 premiers octets du deuxième hachage SHA-256. C’est la somme de contrôle de l’adresse

   c7f18fe8

8 – Ajoutez la somme de contrôle de 4 octets de l’étape 7 à la fin du hachage RIPEMD-160 étendu à partir de l’étape 4. Il s’agit de l’adresse bitcoin binaire de 25 octets.

   00f54a5851e9372b87810a8e60cdd2e7cfd80b6e31c7f18fe8

9 – Convertissez le résultat d’une chaîne d’octets en une chaîne base58 en utilisant l’encodage Base58Check. C’est le format d’adresse Bitcoin le plus couramment utilisé

   1PMycacnJaSqwwJqjawXBErnLsZ7RkXUAs

Voir également

https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

No comments

leave a comment