1. Contexte Bitcoin

Bitcoin adopte un modèle de transaction semblable à celui des espèces (système de paiement en espèces) et son mode de paiement est basé sur un modèle appelé UTXO, qui est différent du modèle traditionnel basé sur le solde du compte.

图片

Par exemple : dans le processus de modèle de comptabilité de compte de la banque, lorsque A transfère 100 yuans à B, la banque enregistre trois étapes qui constituent un processus de transaction. La première étape consiste à déduire 100 yuans du compte de A. L'ID d'enregistrement de cette étape est tid1. La deuxième étape consiste à déposer 100 yuans sur le compte de B. L'ID d'enregistrement de cette étape est tid2. La troisième étape consiste à enregistrer un enregistrement de transfert, qui associe tid1 et tid2, indiquant que le compte A diminue de 100 yuans et que le compte B augmente de 100 yuans.

De cette manière, la relation de transfert entre A et B est enregistrée et peut être interrogée et suivie à l'avenir. Nous allons maintenant expliquer le mode de paiement Bitcoin à travers l’introduction d’UTXO et du modèle de paiement.

UTXO

Dans la blockchain Bitcoin, tous les soldes sont stockés dans une liste appelée « Sorties de transaction non dépensées » (UTXO). Chaque UTXO contient une certaine quantité de Bitcoin, des informations sur le propriétaire et un état de disponibilité, semblable à un chèque avec le nom du titulaire. Ce chèque peut être signé et transféré à quelqu'un d'autre.

Le solde d'une adresse est égal à la somme de tous ses UTXO. Le solde actuel de chaque adresse peut être obtenu en parcourant la liste UTXO, et la somme de ces UTXO représente l'offre totale actuelle de tous les Bitcoins.

图片

Dans la structure des transactions Bitcoin, chaque transaction contient des entrées et des sorties. Chaque entrée est une référence à un UTXO existant, et chaque sortie spécifie une nouvelle adresse de réception et un nouveau montant. Une fois la transaction créée, l'UTXO associé à l'entrée est temporairement verrouillé pour empêcher sa réutilisation, et le statut de l'UTXO associé ne changera qu'après avoir été empaqueté et confirmé avec succès par le mineur.

Plus précisément, l'entrée UTXO est supprimée et la sortie génère un nouvel UTXO et l'ajoute à la liste. Ceci est similaire à la génération d'un nouveau chèque après l'expiration de l'ancien chèque, la propriété du nouveau chèque étant transférée au nom du nouveau titulaire.

Il convient de souligner que chaque UTXO ne peut être utilisé qu'une seule fois dans une transaction. Après utilisation, il est définitivement supprimé et une nouvelle sortie est créée et ajoutée à la liste UTXO. La liste UTXO est constamment mise à jour à mesure que de nouveaux blocs sont créés. En analysant l'historique des transactions, l'état de la liste UTXO à un moment donné peut être reconstruit.

De plus, le montant total d'entrée d'une transaction dépasse généralement légèrement le montant total de sortie, et cette différence devient les frais de transaction et sert d'incitation aux travailleurs K. Les frais de transaction sont proportionnels à la complexité de la transaction, donc une transaction avec plus d'entrées et de sorties nécessitera généralement des frais de réseau plus élevés.

图片

Afin de mieux comprendre la structure des transactions de Bitcoin, nous pouvons en apprendre davantage grâce à l'exemple suivant, où « vin » représente l'entrée de la transaction et « vout » représente la sortie de la transaction. Les transactions Bitcoin utilisent une approche d'entrée et de sortie plutôt que le modèle traditionnel de solde de compte.

图片

Nous pouvons sélectionner au hasard un enregistrement de transaction sur blockchain.com à analyser. La figure suivante montre que l'ID de hachage est.

Transaction pour 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Il contient une entrée et deux sorties.

图片

En utilisant les commandes bitcoin-cli getrawtransaction et decoderawtransaction, nous pouvons inspecter la structure sous-jacente de la transaction ci-dessus :

图片

Dans le réseau Bitcoin, le résultat de chaque transaction contient deux informations clés : l'adresse (hachage de clé publique) et le montant (en Bitcoins).

Si le résultat d’une transaction n’a pas été utilisé dans l’entrée d’autres transactions, alors ce résultat est appelé résultat de transaction non dépensé (UTXO). Toute personne possédant la clé privée correspondant à la clé publique dans l'UTXO a le droit d'utiliser (c'est-à-dire de dépenser) cet UTXO.

Regardons les informations dans "vin" dans le code ci-dessus. Elle indique que l'UTXO dépensé par cette transaction provient de la 0ème sortie (une transaction peut avoir plusieurs sorties, index) d'une autre transaction (son ID est 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18). de 0).

Nous pouvons connaître le montant de cet UTXO (par exemple, 0,1 Bitcoin) à partir de l’historique des transactions. Par conséquent, dans cette transaction, cet utilisateur a dépensé 0,1 Bitcoin, et la valeur 0,1 n'a pas besoin d'être écrite explicitement dans la transaction, mais est obtenue en interrogeant les informations UTXO.

Le "vout" de cette transaction contient deux sorties, qui représentent deux nouveaux UTXO, correspondant au nouveau solde et au nouveau propriétaire. Ces nouveaux UTXO existeront jusqu'à ce qu'une autre transaction les consomme en entrée.

图片

Modèle de paiement

Afin de mieux comprendre le modèle de paiement du réseau Bitcoin, nous utilisons un exemple pour présenter le processus de paiement d'un montant de n Bitcoins payé par A à B. La figure ci-dessous montre le processus par lequel l'utilisateur A envoie 3 Bitcoins à l'utilisateur B.

图片

Pour l’utilisateur A, il faut tout d’abord déterminer l’ensemble de tous les UTXO qu’il possède, c’est-à-dire tous les Bitcoins que l’utilisateur A peut contrôler ;

A sélectionne un ou plusieurs UTXO de cet ensemble comme entrée de la transaction. La somme des montants de ces entrées est m (2+0,8+0,5=3,3 BTC), ce qui est supérieur au montant n (3 BTC) nécessaire. être payé;

L'utilisateur A définit deux sorties pour la transaction, une sortie est payée à l'adresse de B, le montant est n (3 BTC) et l'autre sortie est payée à la propre adresse de changement de A, le montant est mn-fee (3,3-3- 0,001 =0,299 BTC). Le portefeuille de l'utilisateur se compose généralement de plusieurs adresses. Généralement, chaque adresse n'est utilisée qu'une seule fois et la modification est renvoyée par défaut vers une nouvelle adresse ;

Une fois que le travailleur K aura emballé et confirmé la transaction sur la blockchain, le destinataire B pourra obtenir des informations sur la transaction.

图片

Étant donné que la taille de chaque bloc est limitée (généralement environ 1 Mo), les travailleurs K donnent la priorité aux transactions avec des taux de transaction élevés (fee_rate=fee/size) pour obtenir les retours sur frais les plus élevés.

Nous pouvons vérifier le taux de transaction minière K en temps réel dans le pool de transactions non confirmées (mempool). Si nous souhaitons obtenir une confirmation le plus rapidement possible pendant le processus de transfert, nous pouvons choisir la priorité élevée ou personnaliser un taux de transaction approprié.

图片

2. Numérotation et suivi des congs

L'offre totale de Bitcoin est de 21 millions et chaque Bitcoin contient 10 ^ 8 Satoshi (Sat). Ainsi, dans le réseau Bitcoin, nous avons un total de 21 millions * 10^8 satoshis.

Le protocole Ordinals utilise une manière unique de numéroter chaque Satoshi pour garantir son caractère unique et la capacité de suivre avec précision le compte auquel il appartient. De plus, la classification de rareté des satoshis sera simplifiée.

Le numéro de Satoshi

Selon le protocole Ordinals, les satoshis sont numérotés en fonction de l'ordre dans lequel ils sont extraits. La figure ci-dessous montre la représentation du 0ème Satoshi extrait dans le 0ème bloc.

图片

Il existe de nombreuses façons d’exprimer Satoshi :

Symbole entier : Par exemple, 2099994106992659, qui représente le numéro de série attribué au satoshi selon l'ordre minier.

Notation décimale : par exemple, 3891094.16797, le premier chiffre indique la hauteur du bloc où le Satoshi a été extrait et le deuxième chiffre indique le numéro Satoshi dans le bloc.

Symbole du degré : par exemple, 3°111094′214″16797‴, le premier chiffre est le point, numéroté à partir de 0, le deuxième chiffre est l'index de bloc de l'époque divisée par deux et le troisième chiffre est l'index de bloc pendant la difficulté. période d'ajustement, le dernier chiffre est l'indice de sat dans le bloc.

Symbole de pourcentage : par exemple, 99,99971949060254 % indique la position du Satoshi dans l'offre de Bitcoin, exprimée en pourcentage.

Nom : Par exemple Satoshi. Un nom qui code le numéro de séquence à l'aide des caractères a à z.

图片

Prenons un exemple pour expliquer comment numéroter les Bitcoins nouvellement extraits. Observant le 795952ème bloc de la blockchain Bitcoin, il contient une transaction nommée "Tx 3a1f...b177", qui enregistre la récompense du travailleur K (transaction coinbase). Cette transaction comprend les Bitcoins nouvellement extraits, qui sont utilisés comme récompenses pour les travailleurs K, ainsi que les frais de traitement payés par l'initiateur de la transaction aux travailleurs K.

En regardant la partie entrée, nous pouvons voir l’ID de l’UTXO, qui consiste en une chaîne de zéros et la hauteur du bloc. Et dans la section de sortie, nous pouvons voir les adresses qui ont reçu ces récompenses et frais, ainsi que leur montant total.

图片

Si nous examinons plus en détail la production de pièces vers les travailleurs K, nous pouvons voir la distribution des adresses, des montants et des satoshis contenus. Comme mentionné précédemment, ceux-ci incluent les récompenses minières K et les frais de traitement.

Parmi eux, les informations sur le numéro de satoshi vert 1941220000000000–1941220625000000 sont les nouveaux satoshi générés par l'exploitation des récompenses K, et les 712 enregistrements satoshi restants correspondent à tous les frais de traitement du bloc.

图片

Nous pouvons vérifier le numéro Sat 1941220000000000.

Son numéro de bloc est 795952 et la notation décimale (décimale) est 795952.0, ce qui signifie que la hauteur du bloc d'extraction de ce Satoshi est 795952, le nombre de Satoshi dans ce bloc est 0 et la rareté qui en résulte est marquée comme rare, nous. nous le présenterons en détail dans les sections suivantes.

图片

La circulation de Cong

Le modèle de transaction de Bitcoin utilise le modèle Unspent Transaction Output (UTXO), ce qui signifie que chaque Bitcoin (BTC) peut être retracé jusqu'à sa source. Illustrons ce processus avec un exemple :

Supposons que l'utilisateur A ait reçu une récompense en exploitant K, qui contient des Bitcoins du 100ème Satoshi au 110ème Satoshi. Ces Bitcoins sont tous stockés dans le même UTXO (Unspent Transaction Output). L'ID de cet UTXO est adc123.

Désormais, lorsque l'utilisateur A souhaite payer 5 satoshis à l'utilisateur B, il choisit d'utiliser l'UTXO avec l'ID abc123 comme entrée de la transaction. Cette transaction enverra 5 satoshis à l'utilisateur B et renverra 5 satoshis en guise de modification à l'utilisateur A.

Ces deux 5 satoshis deviendront un tout, mais seront stockés dans deux UTXO différents, tels que abc456 et abc789.

L'identifiant UTXO ci-dessus et le nombre de satoshis ne sont indiqués qu'à titre d'exemple. Dans les situations réelles, le nombre minimum de satoshis envoyés est limité à 546 et l'identifiant UTXO n'est pas exprimé sous cette forme.

图片

Dans la transaction ci-dessus, le chemin de circulation des 10 satoshis de l’utilisateur A est :

Mining K produit 10 satoshis, numérotés [100, 110). Cela signifie que les 100e à 109e satoshis sont stockés dans l'UTXO avec l'identifiant abc123 et que leur propriétaire est l'utilisateur A.

Lorsque A effectue le transfert, les 10 satoshis sont divisés en deux parties de 5 satoshis chacune. Le principe du « premier entré, premier sorti » est adopté ici, c'est-à-dire que l'ordre des numéros Satoshi est déterminé en fonction de leur index dans le résultat de la transaction.

En supposant que l'ordre de sortie est d'abord l'utilisateur A, puis l'utilisateur B, puis le numéro de séquence des 5 satoshis restants de l'utilisateur A est [100, 105), qui est stocké dans l'UTXO avec l'identifiant abc456, et les 5 satoshis de l'utilisateur B sont la séquence le numéro est [105, 110) et est stocké dans l'UTXO avec l'identifiant abc789.

图片

Satoshi rare

En tant que spin-off du protocole Ordinals, la rareté des satoshi peut être définie en fonction de l'ordre dans lequel ils sont extraits. Cela se traduira par des satoshis spéciaux ayant des raretés différentes. Voici les niveaux de rareté des différents Satoshis :

commun Niveau commun : n'importe quel satoshi à l'exception du premier satoshi du bloc (l'offre totale est de 2 100 000 milliards)

peu commun Niveau Excellent : le premier satoshi de chaque bloc (l'offre totale est de 6929999)

rare : premier Satoshi à chaque période d'ajustement de difficulté (offre totale 3437)

épique : le premier Satoshi après chaque moitié (l'offre totale est de 32)

légendaire : le premier satoshi à chaque cycle (l'offre totale est de 5)

mythique : le premier Satoshi du bloc Genesis (l'offre totale est de 1)

Ce concept de satoshis rares peut ajouter plus d’intérêt et de valeur à l’écosystème Bitcoin. Les satoshis de différentes raretés peuvent avoir des valeurs différentes sur le marché, attirant les collectionneurs et les investisseurs.

图片

3. Méthode d'inscription

Une différence significative entre les ordinaux et les autres NFT de chaîne non Bitcoin est que leurs métadonnées ne sont pas stockées dans un emplacement spécifique.

Au lieu de cela, ces métadonnées sont intégrées dans les données du témoin (champ témoin) de la transaction, c'est pourquoi nous l'appelons une « inscription » car les données sont « gravées » dans les bits comme une inscription sur une partie spécifique de la transaction de pièces. , ces données sont attachées à un Satoshi spécifique.

Ce processus d'inscription est mis en œuvre via Segregated Witness (SegWit) et Pay-to-Taproot (P2TR). Il comprend deux étapes : valider et révéler toute forme de contenu (tel que du texte, des images ou des vidéos) sur le Satoshi désigné.

Nous détaillerons ensuite une autre méthode de stockage plus directe, OP_RETURN, et expliquerons pourquoi elle ne fonctionne pas avec les inscriptions. Parallèlement, nous explorerons les concepts de Segwit et Pay-to-Taproot, ainsi que leur rôle dans l'inscription. Enfin, nous aborderons les modalités d'inscription.

图片

OP_RETURE

Dans la version 0.9 du client Bitcoin Core, un compromis a finalement été trouvé en utilisant l'opérateur RETURN. RETURN permet aux développeurs d'ajouter 80 octets de données de non-paiement à la sortie de la transaction. Contrairement aux pseudo-paiements, RETURN crée une sortie explicitement vérifiable mais non dépensée et n'a pas besoin d'être stockée dans une collection UTXO (Unspent Transaction Output).​

Les sorties RETURN sont enregistrées sur la blockchain, ce qui occupera de l'espace disque et entraînera une augmentation de la taille de la blockchain, mais elles n'occuperont pas la collection UTXO et ne feront donc pas gonfler la collection UTXO, ni n'augmenteront le coût coûteux de la mémoire. du nœud complet.

Bien que OP_RETURN soit une méthode de stockage d’informations directement sur la blockchain Bitcoin, elle présente également certains défis. Tout d'abord, OP_RETURN ne peut stocker que 80 octets de données, ce qui n'est évidemment pas suffisant dans les situations où davantage de données doivent être stockées.

Deuxièmement, les données OP_RETURN sont stockées dans la sortie de transaction. Bien qu'elles n'occupent pas la collection UTXO, elles occuperont l'espace de stockage de la blockchain, entraînant une augmentation de la taille de la blockchain.

Enfin, l'utilisation de OP_RETURN augmente les frais de transaction car elle nécessite de payer plus pour valider ces transactions.

图片

Témoin séparé

Par rapport aux méthodes précédentes, SegWit propose une nouvelle solution capable de résoudre les problèmes ci-dessus.

SegWit est une mise à niveau clé du protocole pour Bitcoin. Elle a été proposée pour la première fois par le développeur principal de Bitcoin, Pieter Wuille, en 2015 et a finalement été officiellement adoptée dans la version 0.16.0 en 2017.

Le « Ségrégé » dans Segregated Witness (SegWit) signifie séparation ou isolement, tandis que « Témoin » implique les données de signature associées à la transaction. Par conséquent, le concept principal de SegWit est de séparer certaines données de signature de transaction (également appelées données de témoin) des données de transaction réelles.

Le principal avantage de la séparation des données de signature des données de transaction est de réduire la taille des données stockées dans les blocs Bitcoin. Cela se traduit par une plus grande capacité disponible par bloc pour accueillir plus de transactions, ce qui signifie également que le réseau est capable de traiter plus de transactions et que les utilisateurs paient des frais de transaction moins élevés.

Techniquement, cela signifie déplacer les données de signature de script (scriptSig) initialement contenues dans la structure du bloc de base vers une nouvelle structure de données. Les nœuds de validation et les K Workers vérifieront également la signature du script dans cette nouvelle structure de données pour garantir la validité de la transaction.

图片

La mise à niveau de SegWit introduit également un nouveau champ de données de témoin pour améliorer la confidentialité et l'efficacité. Bien que les données des témoins ne soient pas spécifiquement conçues pour stocker des données de transaction en texte brut, elles nous donnent en fait la possibilité de stocker des éléments tels que des métadonnées d'inscription.

Nous utilisons la figure suivante pour comprendre plus clairement le témoignage séparé :

图片

Racine pivotante

P2TR est un type de sortie de transaction de Bitcoin qui a été introduit lors de la mise à niveau Taproot 2021, qui permet de stocker différentes conditions de transaction dans la blockchain de manière plus privée.

Dans cette architecture, P2TR joue un rôle crucial dans l’inscription des données des Ordinaux. L'inscription intègre en fait des données spécifiques dans les transactions Bitcoin, et les mises à niveau de Taproot, en particulier P2TR, rendent l'intégration de ces données plus flexible et plus économique.

Tout d'abord, grâce à la méthode de stockage des codes de commande Taproot, nous pouvons stocker les données d'inscription dans le chemin de commande Taproot, et ces codes de commande n'ont presque aucune restriction sur le contenu. En même temps, nous pouvons également bénéficier de réductions sur les données des témoins. ce qui rend le stockage des données d'inscription relativement économique.

Cependant, étant donné que la consommation des instructions Taproot ne peut provenir que de la sortie Taproot existante, le stockage des inscriptions adopte un processus de validation/révélation en deux étapes. Premièrement, dans la transaction de validation, une sortie Taproot est établie et promet de contenir les données d'inscription.

图片

Ensuite, dans une transaction de révélation, la sortie établie par la transaction de validation est consommée, révélant ainsi le contenu de l'inscription sur la chaîne.

Cette approche réduit considérablement l’utilisation des ressources. Si P2TR n'est pas utilisé, les données témoins seront stockées dans la sortie de la transaction. Tant que cette sortie n'est pas consommée, les données témoins existeront toujours dans l'ensemble UTXO.

En revanche, si P2TR est utilisé, les données témoins n'apparaîtront pas dans la transaction générée lors de la phase de validation et ne seront donc pas écrites dans l'ensemble UTXO. Ce n'est que lorsque cet UTXO sera consommé que les données du témoin apparaîtront dans l'entrée de la transaction pendant la phase de révélation.

P2TR permet d’écrire des données originales sur la blockchain Bitcoin, mais n’occupe pas toujours l’espace concentré dans UTXO. Étant donné que la maintenance/modification de l’ensemble UTXO nécessite plus de ressources, cette méthode peut économiser considérablement des ressources.

图片

une inscription

Le protocole Ordinals étend la limite de taille d'écriture sur le réseau Bitcoin en utilisant SegWit pour stocker le contenu en texte brut dans le témoin, permettant jusqu'à 4 Mo de stockage de métadonnées.

Taproot simplifie le processus de stockage de données de témoins arbitraires dans les transactions Bitcoin, permettant au développeur d'Ordinals, Casey Rodarmor, de réutiliser d'anciens opcodes (OP_FALSE, OP_IF, OP_PUSH) pour créer des soi-disant « enveloppes » pour stocker ce qu'on appelle « « Inscription » n'importe quelle information.

Le processus de moulage de l’inscription comprend les deux étapes suivantes :

Tout d'abord, dans la transaction de validation, vous devez créer une promesse pointant vers la sortie Taproot contenant le contenu de l'inscription. Le format de ce stockage est Taproot, la sortie de la transaction précédente doit être P2TR (Pay-To-Taproot) et le contenu d'un format spécifique est intégré dans le script témoin Taproot.

Tout d'abord, la chaîne « ordn » est poussée sur la pile pour lever l'ambiguïté sur le but de l'inscription. Ensuite, utilisez OP_PUSH 1 pour indiquer que le prochain push contient le type de contenu, et OP_PUSH 0 pour indiquer que les push de données suivants contiennent le contenu lui-même.

Étant donné que l'une des limitations de Taproot est qu'une seule transmission de données ne peut pas dépasser 520 octets, plusieurs transmissions de données sont nécessaires pour stocker des inscriptions volumineuses. À l'heure actuelle, les données d'inscription ont été liées à la sortie de transaction non dépensée (UTXO) de la sortie de transaction, mais n'ont pas encore été rendues publiques.

图片

Deuxièmement, dans la transaction de révélation, la production créée doit être consommée. A ce stade, la transaction est initiée en prenant en entrée l'UTXO correspondant à l'inscription. A ce moment, le contenu de l'inscription lié à l'UTXO sera exposé à l'ensemble du réseau.

Grâce aux deux étapes ci-dessus, le contenu de l'inscription a été associé à un UTXO spécifique. Selon la méthode de positionnement de Satoshi (UTXO) introduite précédemment, l'inscription est gravée sur le premier Satoshi correspondant à son entrée UTXO, et le contenu de l'inscription est inclus dans l'entrée montrant la transaction.

Selon la circulation et le suivi susmentionnés de Satoshi (UTXO), ce Satoshi contenant un contenu spécial peut être transféré, acheté, vendu, perdu et récupéré. Il est à noter que l’inscription ne peut être répétée, faute de quoi les inscriptions ultérieures seront invalides.

Pour expliquer ce processus plus en détail, passons en revue un exemple montrant comment inscrire une petite image d’un Bitcoin NFT. Ce processus couvre les deux phases de validation et de révélation mentionnées précédemment.

Tout d’abord, nous pouvons voir que l’ID de hachage de la première transaction est 2ddf9...f585c. Il convient de noter que le résultat de cette transaction ne contient pas de données de témoin et qu'il n'y a aucune information d'inscription pertinente sur la page Web.

图片

Ensuite, nous vérifions l'enregistrement de la deuxième étape, dont l'ID de hachage est e7454…7c0e1. Ici, nous pouvons voir les informations de l’inscription des Ordinaux, qui sont le contenu de l’inscription du témoignage.

L'adresse d'entrée de cette transaction est l'adresse de sortie de la transaction précédente, et la sortie 0,00000546BTC (546 Satoshi) consiste à transférer ce NFT vers sa propre adresse. Par la même occasion, on peut également retrouver le satoshi où se situe cette inscription en Sat 1893640468329373.

图片图片

Dans le portefeuille Bitcoin, nous pouvons voir cet actif. Si nous voulons échanger ce NFT, nous pouvons le transférer directement vers les adresses d'autres personnes, c'est-à-dire transférer l'UTXO, complétant ainsi le transfert de l'inscription.

图片

4. Portefeuille Bitcoin

Après avoir compris ce qu'est l'écologie des Ordinaux, la circulation des satoshis et la connaissance associée des inscriptions, il existe actuellement de nombreux scénarios d'application, qu'il s'agisse de l'émergence de BRC-20, ORC-20, BRC-721, GBRC-721 et d'autres protocoles dérivés associés, qui nécessitent que nous ayons des portefeuilles correspondants pour prendre en charge et afficher les informations sur les jetons ou les petites images NFT.

Dans cette section, nous présenterons les concepts et les caractéristiques des différentes adresses de portefeuille Bitcoin.

Les adresses Bitcoin commencent généralement par 1, 3 ou bc1 et, comme les adresses e-mail, peuvent être partagées avec d'autres utilisateurs Bitcoin afin de transférer Bitcoin directement vers votre portefeuille.

D'un point de vue sécurité, les adresses Bitcoin ne contiennent pas d'informations sensibles et peuvent donc être partagées publiquement à tout moment sans compromettre la sécurité de votre compte. Contrairement aux adresses e-mail, vous pouvez créer de nouvelles adresses Bitcoin selon vos besoins, et toutes déposeront des fonds directement dans votre portefeuille.

图片

En fait, de nombreux portefeuilles modernes établissent automatiquement une nouvelle adresse pour chaque transaction afin de maximiser la confidentialité. Un portefeuille est simplement un ensemble d’adresses et de clés qui débloquent les fonds qu’il contient. Nous devons d’abord savoir comment l’adresse du portefeuille Bitcoin est générée.

Clés privées et publiques Bitcoin

Bitcoin utilise la courbe elliptique Secp256k1. La « clé privée » est un nombre aléatoire compris entre 1 et n-1. N est un très grand nombre (256 bits) et n est exprimé en notation scientifique.

图片

Cette plage est très large et rend presque impossible le piratage des clés privées d'autrui. Cette clé privée est un entier aléatoire, généralement représenté par 256 bits binaires, et peut être codée de différentes manières. Les clés privées utilisant le format WIF (Wallet Import Format) ou compressé WIF ne sont pas cryptées et peuvent être décodées directement en entiers aléatoires bruts.

Une autre méthode est BIP38 (Bitcoin Improvement Proposal 38), qui recommande d'utiliser l'algorithme AES pour chiffrer la clé privée. La clé privée générée par ce schéma commence par le caractère 6P, et un mot de passe doit être saisi pour l'importer dans divers portefeuilles Bitcoin. C'est ainsi que nous utilisons habituellement la protection par clé privée.

Ensuite, nous utilisons la formule de courbe elliptique K = kG, où k est la clé privée et G est le point de base, qui est un argument de la courbe elliptique secp256k1.

Grâce à cette formule, on peut obtenir les deux coordonnées de K, qui sont les deux expressions de la clé publique, à savoir « Format non compressé » et « Format compressé ».

图片

La forme non compressée consiste à connecter directement les deux coordonnées x et y ensemble, puis à ajouter le préfixe 0x04 devant ;

La forme compressée signifie que lorsque y est un nombre pair, le code est 02 x, et lorsque y est un nombre impair, le code est 03 x ;

Adresse Bitcoin

Différents types d'adresses Bitcoin sont présentés dans la figure ci-dessous. Il existe quatre méthodes de représentation :

图片

1. Format hérité (P2PKH)

Exemple : 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u

L'adresse commence par "1", qui est le format d'adresse original de Bitcoin et est encore utilisé aujourd'hui. Il est obtenu par calcul de Hash à partir de la clé publique, également connu sous le nom de P2PKH, qui est l'abréviation de Pay To PubKey Hash (paiement au hachage de clé publique).

2. Format SegWit imbriqué (P2SH)

Exemple : 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN

L'adresse commence par "3". P2SH est l'abréviation de Pay To Script Hash, qui prend en charge des fonctions plus complexes que les adresses héritées. P2SH imbriqué, obtient l'adresse P2SH existante (commençant par "3") et l'encapsule avec l'adresse SegWit.

图片

3. Format natif SegWit (Bech32)

Exemple : bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3

BIP0173 a introduit les formats d'adresse commençant par « bc1 », qui sont les adresses utilisées pour le témoin natif séparé (SegWit). Ce format d'adresse utilise le codage Bech32 et est spécifiquement conçu pour SegWit. Les adresses au format Bech32 ont été définies dans le BIP173 fin 2017. L'une de ses principales caractéristiques est qu'il n'est pas sensible à la casse, il est donc plus facile d'éviter toute confusion lors de la saisie, et il est également plus facile à lire.

Par rapport au codage Base58 traditionnel, Bech32 utilise le codage Base32, donc moins de caractères sont nécessaires dans l'adresse, le calcul est plus efficace et il peut être stocké de manière plus compacte dans le code QR.

De plus, Bech32 offre une plus grande sécurité et une détection des erreurs de somme de contrôle mieux optimisée, minimisant ainsi le risque d'adresses invalides.

Les adresses Bech32 elles-mêmes sont compatibles avec SegWit. Aucun espace supplémentaire n'est requis pour insérer l'adresse SegWit dans l'adresse P2SH, donc en utilisant l'adresse au format Bech32, les frais de traitement seront inférieurs.

Dans l'ensemble, les adresses Bech32 présentent plusieurs avantages par rapport aux adresses Base58 traditionnelles : les codes QR générés sont plus petits, plus résistants aux erreurs, plus sécurisés, insensibles à la casse et ne contiennent que des lettres minuscules, ils sont donc plus faciles à lire, à saisir et à saisir. comprendre.

图片

4. Format de racine pivotante (P2TR)

Bech32 a un inconvénient : si le dernier caractère de l'adresse est p, alors l'insertion ou la suppression d'un nombre quelconque de caractères q immédiatement avant p n'invalidera pas sa somme de contrôle.

Afin d'atténuer les défauts ci-dessus de Bech32, l'adresse Bech32m a été proposée dans BIP0350 :

  • Pour les adresses Segwit natives avec la version 0, utilisez le Bech32 précédent ;

  • Pour les adresses Segwit natives version 1 (ou supérieure), le nouveau Bech32m est utilisé.

Pour les adresses Bech32m, lorsque leur numéro de version est 1, elles commencent toujours par "bc1p", ce qui signifie qu'il s'agit d'adresses Taproot. Semblables au Segwit natif, ces adresses peuvent être générées à partir d'une phrase de départ et d'une phrase secrète utilisées pour générer les clés publiques et privées de la suite étendue, permettant la dérivation d'adresses pour différents chemins dans un portefeuille déterministe hiérarchique.

图片

Ceci est principalement utilisé pour stocker des actifs numériques tels que les jetons BRC-20 ainsi que les NFT de Bitcoin.