Clients légers

De Bitcoin Wiki
Aller à la navigation Aller à la recherche
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.

Récement, un certain nombre de clients bitcoins qui ne copient pas la totalité de la blockchain ont vu le jour. Cette page traite de ces clients connus sous le nom de "clients légers"

Cette page est destinée à faire la part des choses entre la sécurité, la confiance, et la praticité des différents modes de fonctionnements des portefeuilles.


La hauteur des blocs et la profondeur des blocs

Il est important de faire la distinction entre la vérification de la hauteur d'un bloc et la vérification de la profondeur de ce même bloc.

Un client vérifie la hauteur H d'un bloc en vérifiant qu'il y a H bloc avant lui, que tout ces H blocs sont tous bien formé et qu'ils obéissent à la règle de l'ajustement de la de difficulté. Actuellement, seul le client Satoshi, libbitcoin, et BTCD vérifient la Hauteur. Les clients lourds tiennent compte de cette méthode pour valider une transaction. La hauteur d'un bloc est le point d'ancrage fondamental de la sécurité du système Bitcoin.


Un client vérifie la profondeur D d'un bloc en vérifiant qu'il y a un nombre D de blocs créés après (ces blocs sont également appelés «confirmations»), qui sont tous bien formés. Les clients légers tiennent compte de cette méthode pour valider une transaction. En revanche, tous les clients utilisent la profondeur de bloc quelle branche est la plus longue, en cas d'une division en deux branches(ou plus) de la blockhain.


les clients "lourds"

Les clients complets (on parle aussi de clients "complets") téléchargent l'intégralité de la blockchain, en y incluant la totalité des transactions.

Utilisation de la hauteur d'un bloc comme contrôle de validité

Un client lourd fait confiance a plus longue chaîne de blocs respectant les règles de formations et de difficulté, qu'il peut trouver.

Toute opération sur la chaîne la plus longue bien formé est considéré comme valide. Par conséquent, la validité d'une transaction est déterminée par sa hauteur - c'est à dire le nombre de blocs devant elle. La profondeur d'une transaction (le nombre de blocs après elle) est utilisée pour déterminer la probabilité de l'opération d'être invalidée à cause de l'apparition d'une branche plus longue

Les clients "légers"

Les clients légers (on parle aussi de clients "Headers Only") téléchargent une copie complète des en-têtes de tous les blocs de la blockchain. Cela signifie que les exigences de téléchargement et de stockage augementent de manière linéaire avec le temps écoulé depuis bitcoin a été inventé; il serait préférable d'avoir une augementation à l'échelle logarithmique, ou même constante.


La vérification simplifiée de paiement (SPV)

Le fonctionnement est décrit dans la section 8 du livre blanc bitcoin original.

La profondeur d'un bloc en guise de controle de validité

Comme l'écrit Satoshi, "[le client léger] ne peut pas vérifier la transaction de lui-même, mais en le reliant à un endroit de la chaîne, il ne peut voir que d'un noeud de réseau à validé cette transaction, et les blocs ajoutés après confirment que le réseau a accepté celle ci". Si on prend "X" le "nombre de blocs ajoutés après la validation de la transaction", un client léger fait confiance essentiellement sur le fait qu'une transaction profonde de X blocs dans la chaîne n'a pas encore entrées qui sont dépensé plus loin dans la chaîne. Par conséquent, la validité d'une transaction est déterminé par sa profondeur - c'est à dire le nombre de blocs se trouvent après lui.

Ceci est très différent du modèle de confiance dans le client "lourd": le client lourd vérifie que les entrées d'un transaction n'ont pas été dépensés en vérifianr tout le parcourt de toute la chaîne jusqu'à ce point - il n'y a pas besoin de profondeur ici. Le client lourd n'a besoin que d'une seule "confirmation", car il a déjà véréfié que la transaction est valide (pas besoin de double confirmation).

La seule utilisation de la profondeur des blocs dans le client lourd, actuellement, est pour décider laquelle des branches est valides, en cas de division (fork) de la chaine


Le danger des clients légers

Les clients légers sont une préoccupation car ils sont vulnérables a l'attaque par double-dépense par quelqu'un qui contrôle la connexion réseau. La vérification est fiable tant que le contrôle est effectué par une majorité de neuds honnêtes au sein du réseau, et que le client léger est en mesure de comuniquer avec.

Le problème, c'est que dans un scénario d'attaque par le FAI, ceci n'est pas une propriété de sécurité suffisamment solide. Le FAI n'aurait pas besoin de dominer "le reste du réseau" parce que le client ne serai pas en mesure de communiquer avec lui : Le FAI pourrai aisément détourner le trafic.


[Page en construction]