D'abord, ils vous ignorent, puis ils se moquent de vous, puis ils vous combattent, puis vous gagnez. - Mahatma Gandhi.
Une implémentation Bitcoin est un code que les particuliers peuvent
exécuter sur leurs ordinateurs
pour les transformer en nœuds Bitcoin.
L'implémentation de référence est le code open source connu sous le nom de Bitcoin
Core, qui peut être téléchargé à partir du site
https://bitcoincore.org/en/download/
Les nœuds Bitcoin interconnectés constituent le réseau Bitcoin.
La fonction d'un nœud est de vérifier de manière indépendante la validité des transactions, en rejetant celles qui ne respectent pas les règles du Bitcoin.
Une transaction Bitcoin consiste en un message signé numériquement invoquant le transfert d'une certaine quantité d'unités monétaires.
Les signatures numériques sont générées à partir d'une
clé privée et de la
clé publique correspondante.
Une clé privée est un nombre aléatoire entre 0 et 2^256 (à peu près le nombre
d'atomes dans l'univers connu), son entropie est donc de 256 bits.
La clé publique est dérivée de la clé privée par une fonction à sens unique,
ce qui signifie qu'il est impossible d'obtenir une clé privée à partir d'une clé
publique.
Une clé privée peut chiffrer des données que seule la clé publique correspondante
peut décrypter, et vice versa.
La signature numérique d'un message consiste à crypter le
message avec la clé privée
et à ajouter un texte comprenant le message original (non crypté) ainsi que la clé
publique.
Pour vérifier que le propriétaire de la clé privée a autorisé le message, il suffit de
décrypter le message à l'aide de la clé publique et de confirmer que le message résultant
correspond à l'original.
Les adresses Bitcoin sont des clés publiques codées,
conçues pour être plus lisibles et résistantes aux erreurs de frappe.
La génération et le stockage des clés privées, ainsi que de leurs clés publiques et
adresses correspondantes,
sont des processus simples qui peuvent être facilités par des programmes appelés
portefeuilles.
Les nœuds maintiennent une mempool, qui est une liste de demandes de
transactions, et stockent une copie du
grand livre distribué connu sous le nom de Blockchain, qui contient
les transactions confirmées.
Chaque nœud obtient les soldes actuels, appelés UTXO set,
à partir de sa propre copie de la Blockchain.
En cas de transactions conflictuelles, la validité devrait être déterminée par l'ordre
chronologique.
Mais les nœuds ne peuvent pas prouver mathématiquement l'ordre de la sollicitation, et
comme les demandes de transaction sont propagées comme des rumeurs entre les nœuds et
peuvent être publiées par n'importe quel nœud,
différents nœuds reçoivent ces commandes à des moments différents et dans un ordre
chronologique variable.
Par conséquent, si les nœuds ne s'accordent pas sur la version de la transaction qui
doit être reconnue comme valide, il y a
double dépense, ce qui entraîne la coexistence
de systèmes monétaires différents.
La principale innovation de Bitcoin pour résoudre ce problème est le mécanisme connu sous le
nom de Preuve de Travail. Ce mécanisme permet de se passer d'une autorité centrale en assurant une rotation
probabiliste du pouvoir d'exécuter des demandes de transaction. Différents nœuds miniers
gagnet ce pouvoir en fonction de leur puissance de calcul relative.
Cela fonctionne comme une loterie décentralisée continue où les participants acquièrent des "tickets" en utilisant une ressource impossible à falsifier : l'énergie.
Les systèmes alternatifs à la Preuve de Travail s'appuient sur des ressources de leur
propre système, ce qui les rend peu sécurisés. Ces systèmes sont vérifiés par des données
qui peuvent
être falsifiées à peu de frais et sont vulnérables aux attaques où une seule
entité contrôle clandestinement la majorité des nœuds.
Par conséquent, ces systèmes nécessitent une autorité pour employer les ressources
humaines, entraînant une bureaucratie et des privilèges.
Les mécanismes de consensus qui n'impliquent pas de travail impliquent plutôt la
gouvernance.
Une fois qu'une demande de transaction est incluse dans un bloc de données qui est
vérifié, copié et propagé indépendamment par chaque nœud, elle est considérée comme exécutée.
Cependant, la coexistence de deux blocs concurrents pendant quelques minutes est
possible. Ce problème est
résolu lorsqu'un nouveau bloc est créé, car chaque nouveau bloc doit être lié au
dernier bloc précédent,
et les nœuds suivent la chaîne avec le plus de travail cumulé, généralement la
chaîne la plus longue.
Par conséquent, la probabilité qu'un bloc soit rejeté diminue avec sa profondeur dans
la chaîne, et chaque
bloc suivant augmente la probabilité d'immuabilité, appelée confirmation.
Les transactions effectuées dans les blocs rejetés reviennent dans la liste des demandes
de transactions si elles ne sont pas incluses dans les nouveaux blocs.
Le créateur de chaque bloc reçoit une récompense, composée de frais de
transaction
et d'un subside via une transaction appelée coinbase.
Chaque demande de transaction indique les frais à payer pour prioriser son exécution.
Le subside est constitué de nouvelles unités de bitcoin, dont l'émission est divisée
par deux tous les 210 000 blocs (environ 4 ans). Il en résulte un taux d'inflation
monétaire décroissant pour atteindre un maximum de 21 millions de bitcoins.
L'intégrité des informations contenues dans les blocs est facilement vérifiable grâce à
l'utilisation de fonctions de hachage cryptographiques. Ces fonctions unidirectionnelles
transforment toute entrée de données numériques en données de taille fixe appelées hachage.
Les hachages sont totalement différents les uns des autres, même si les données d'entrée
ne présentent que de légères différences.
Dans Bitcoin, la fonction de hachage la plus couramment utilisée est SHA256, qui produit un
hachage de 256 bits. Par exemple, l'identifiant (ID) de transaction est le double
hachage SHA256 des données de la transaction, et l'identifiant du bloc est le double
hachage SHA256 des données de l'en-tête du bloc.
Données contenues dans l'en-tête du bloc :
1. # Le hachage de l'ID du bloc
précédent.
2. # Le hachage combiné de tous les
hachages de transactions,
connu sous le nom de Racine d'un Arbre de Merkle.
3. N # Nonce et cible de hachage.
4. T Horodatage.
Chaque bloc se compose de son en-tête et des transactions avec leurs hachages respectifs :
1.
Le hachage de l'ID du bloc
précédent:
Il forme une chaîne dans laquelle le hachage de chaque nouveau bloc comprend l'historique
complet des transactions.
Toute modification d'un bloc l'invalide ainsi que tous les blocs suivants.
Comme un moustique dans l'ambre, plus un bloc est enfoncé dans la chaîne, plus il devient
inamovible.
2. La racine d'un arbre de Merkle:
Elle permet de vérifier facilement l'intégrité d'une transaction.
3. Nonce et cible de hachage:
Nonce:
Pour extraire un bloc, il faut trouver un nonce qui, combiné au reste des données d'en-tête
du bloc, donne un hachage (Block ID) inférieur à un seuil spécifié, appelé cible de hachage.
Par exemple, si l'objectif est d'obtenir un hachage commençant par 00 à partir de données
contenant le texte "bitcoin",
des tentatives pourraient être faites avec "bitcoin-1", "bitcoin-2", et ainsi de
suite jusqu'à ce qu'un nonce réussi soit trouvé.
Essayez-le ici!.
Dans cet exemple, le nonce serait 53.
L'ID du bloc est donc une preuve de travail facilement vérifiable.
Les mineurs
dépensent de l'énergie pour proposer des transactions, tandis que l'exécution réelle des
transactions se fait de manière décentralisée par l'intermédiaire des nœuds.
Cible de hachage:
Sa fonction est de maintenir un taux moyen de production de blocs de 10 minutes. Cela
garantit une propagation et une validation relativement rapides des blocs, réduisant les
blocs orphelins et décourageant les incitations à la centralisation de l'exploitation
minière. La conception empêche les gros mineurs d'obtenir des avantages significatifs en
construisant leurs propres blocs.
En outre, un flux de données minimal minimise les coûts d'exploitation des nœuds et
facilite la réplication des informations.
4. Horodatage:
Il s'agit de l'heure approximative à laquelle chaque bloc a été extrait par son mineur
respectif.
Tous les 2016 blocs, le réseau calcule la différence de temps entre le premier et le
dernier horodatage afin d'ajuster l'objectif de hachage en fonction de l'évolution de la
puissance minière totale.
La cible de hachage peut être multipliée ou divisée par un maximum de 4 pour limiter
l'impact de certaines attaques de double dépense.
Les horodatages ne sont pas exacts et n'augmentent pas nécessairement dans le temps d'un bloc à l'autre. Pour être accepté par un nœud, un horodatage doit être postérieur à la médiane des 11 horodatages précédents et doit être antérieur de deux heures dans le futur selon l'heure actuelle du nœud.
Grâce à ce mécanisme, pour la première fois dans l'histoire, l'inflation d'un bien monétaire est prévisible.
La technologie Bitcoin utilise l'électricité pour éviter de consommer des ressources humaines. Elle libère du temps humain.
Lorsque nous pouvons sécuriser un réseau financier par l'informatique plutôt que par des comptables, des régulateurs, des enquêteurs, des policiers et des avocats, nous passons d'un système manuel, local et de sécurité inconsistante à un système automatisé, mondial et beaucoup plus sécurisé. — Nick Szabo.
Les mineurs de Bitcoin utilisent l'énergie de la même manière que les pompiers utilisent l'eau pour éteindre un incendie.
Le minage de Bitcoin se tourne vers les sources d'énergie qui libèrent une énergie
bloquée, qui autrement serait gaspillée. Les mineurs de Bitcoin fournissent une charge
très flexible et interruptible, capable de fonctionner n'importe où.
À long terme, à mesure que la concurrence augmente et que la rentabilité du minage
diminue, seule l'utilisation
d'énergie excédentaire restera économiquement viable.
La technologie Bitcoin permet de décentraliser le contrôle d'un système monétaire,
minimisant ainsi la gouvernance financière. Bitcoin fonctionne selon des règles sans
gouvernants.
Se demander "qui contrôle Bitcoin?" revient à demander "qui contrôle une langue?".
Les cypherpunks répugnent à la gouvernance, c'est pourquoi son absence a
toujours été l'objectif. Cette absence renforce l'immuabilité
de la sécurité du réseau et la crédibilité de sa politique monétaire.
"Oui, reculez un peu, vous m'enlevez la lumière du soleil". - Réponse du philosophe Diogène à l'offre d'Alexandre le Grand de lui accorder n'importe quel souhait.
Dans Bitcoin, le consensus émerge lorsque différents ordinateurs exécutent simultanément
le même protocole. En maximisant le rôle du protocole de consensus,
le consensus social est impitoyablement minimisé.
La conception de base de Bitcoin est immuable, seules les innovations technologiques qui
améliorent la sécurité sont justifiées pour être progressivement incluses dans son code.
Avancer lentement est un dogme.
La nature du bitcoin est telle qu'une fois la version 0.1 publiée, la conception de base était gravée dans le marbre pour le reste de sa durée de vie. - Satoshi Nakamoto.
Nous devons traiter les logiciels Bitcoin avec le même respect que les logiciels de réacteurs nucléaires. - Hugo Nguyen.
Ce genre de choses est difficile. C'est subtil. Si vous êtes frustrés par la lenteur de Bitcoin, laissez-moi vous dire que Bitcoin va trop vite. La cryptographie est difficile et effrayante, et nous devons nous assurer que nous avançons lentement. - Andrew Poelstra.
Les mises à jour de sécurité de Bitcoin suivent un processus méticuleux :
1. Recherche : Alors que le déploiement de nouvelles
fonctionnalités dans Bitcoin est incroyablement lent (pour
de bonnes raisons), le rythme de la recherche est écrasant.
- Andrew Poelstra.
2. Proposition : Les mises à jour sont proposées pour une revue par
les pairs, un remue-méninges, le déploiement
sur des sidechains/test-nets et un développement itératif.
3. Consensus : Si les propositions suscitent de l'intérêt, s'il y a
un consensus écrasant
parmi les participants du réseau, et si les contributeurs logiciels les plus actifs
les acceptent à l'unanimité,
les mises à jour sont implémentées et testées.
4. Déploiement en Open Source : Les mises à jour sont déployées en
tant que code open source, permettant
aux utilisateurs de les vérifier de manière indépendante.
5. Exécution : Les mises à jour sont appliquées par
les nœuds. Chaque opérateur de nœud
doit installer manuellement les mises à jour s'il choisit de les adopter.
Le terme "fork" se réfère à un changement dans les règles de consensus :
- Soft Fork : Resserre les règles de consensus. Les blocs considérés
comme valides par les nœuds exécutant l'ancienne version
peuvent être considérés comme invalides par ceux exécutant la nouvelle version. Cela
n'implique pas une mise à niveau simultanée de l'ensemble du réseau.
- Hard Fork : Assouplit les règles de consensus. Les blocs considérés
comme invalides par les nœuds exécutant l'ancienne version
peuvent être considérés comme valides par ceux exécutant la nouvelle version. Il
nécessite que chaque nœud effectue une mise à niveau, en faisant une solution de dernier
recours contre un problème de sécurité extrême dans la blockchain.
Plus le risque procédural et le coût mental sont élevés, moins il y a d'incitations à effectuer une mise à niveau.
En cas de défaillance catastrophique et générale de la technologie de Bitcoin, des développeurs influents, partageant, espérons-le, des principes communs, pourraient contribuer à déployer un code qui migrerait les règles de base de Bitcoin vers une nouvelle technologie. Ce scénario, souvent appelé "l'option nucléaire", suggère que dans de telles circonstances, le concept de Bitcoin perdurerait probablement malgré les changements technologiques.
Si SHA-256 était complètement cassé, je pense que nous pourrions nous mettre d'accord sur ce qu'était la chaîne de blocs honnête avant que les problèmes ne commencent, la bloquer et continuer à partir de là avec une nouvelle fonction de hachage. - Satoshi Nakamoto.
La grande réussite de la technologie Bitcoin est de faire respecter automatiquement les droits de propriété dans un système monétaire.