Pourquoi est-Bitcoin est une innovation majeure? Sur le consensus traditionnel distribué consensus VS Nakamoto

Traducteur de Préface: Comme nous le savons, comme la chaîne de blocs Bitcoin est un sous-ensemble de systèmes distribués, mais il est des livres traditionnels et distribués il y a une différence, où ces différences est qu'il? Pourquoi disons-nous que Bitcoin est une innovation majeure? Preethi ingénieurs chaîne de bloc Kasireddy de l'ancienne Coinbase, A16Z, Goldman donnera sa réponse dans cet article.

(Photo de pexels.com)

Ce qui suit est la traduction:

Vous savez comment fonctionne un système distribué?

Cela peut être un sujet difficile à apprendre, surtout à cause de la connaissance autour d'elle est très fragmentée .....

Avant de distribuer l'auto-apprentissage informatique ce sujet, je l'ai à plusieurs reprises grimpé sur la table, mais après de nombreuses épreuves et tribulations, j'étais enfin prêt à expliquer les bases de systèmes distribués à vous.

Je voudrais discuter des implications importantes pour le domaine de la technologie de la chaîne de bloc. chaîne bloc forçant les ingénieurs et les scientifiques à réexaminer et remettre en question le paradigme de calcul profond distribué. Peut-être aucune autre technologie peut contribuer au progrès dans ce domaine de la recherche plus rapide que la chaîne de bloc.

chaîne Block est un nouveau système distribué. Elle commence par l'émergence de Bitcoin, et a depuis eu un impact durable dans le domaine de l'informatique distribuée. Donc, si vous voulez vraiment comprendre comment la chaîne de bloc, puis saisir le principe des systèmes distribués est essentiel.

Malheureusement, beaucoup de littérature sur l'informatique distribuée, soit incompréhensible, ou dispersés dans trop de papiers. Et que le problème se complique, il y a actuellement des centaines d'architecture, et toutes les architectures répondre aux différents besoins. Par conséquent, il se résume à un article compréhensible, assez pour être appelé un exploit.

Parce que ce domaine est très large, je devais choisir soigneusement le contenu à couvrir. Je dois aussi généraliser pour masquer une certaine complexité. S'il vous plaît noter que mon but est de ne pas vous faire un expert dans le domaine. Au lieu de cela, je veux juste que vous sachiez un peu, les systèmes ouverts distribués et les bases du voyage du consensus.

Après avoir lu cet article, vous comprendrez en profondeur le contenu suivant:

 
  • Quel système distribué?
  • Propriétés du système distribué;
  • Consensus dans les systèmes distribués Qu'est-ce que cela signifie?
  • Comprendre la base de l'algorithme de consensus (par exemple DLS et PBFT);
  • Pourquoi un consensus Nakamoto est une innovation majeure?
  • J'espère que vous êtes prêt pour cette étude!

    Qu'est-ce qu'un système distribué?

    Les systèmes distribués impliquent un ensemble de processus différents (par exemple, un ordinateur), le message est transféré entre eux et coordonné pour atteindre un objectif commun (c.-à résoudre des problèmes de calcul).

    En bref, un système distribué est un groupe d'ordinateurs ensemble pour atteindre l'objectif de la réunification. Bien que ces processus sont distincts, mais le système pour les utilisateurs finaux est juste un ordinateur.

    Comme je l'ai mentionné, il y a des centaines d'architecture de systèmes distribués. Par exemple, un seul ordinateur peut également être considéré comme un système réparti, une unité de commande centrale, une unité de mémoire et une entrée - canal de sortie, une cible est effectuée en collaboration processus séparé.

    Ainsi, les aéronefs, leurs efforts conjoints est de vous rendre du point A au point B:

    Source: https: //www.weetech.de/en/news-info/tester-abc/distributed-system-1/

    Dans cet article, nous allons nous concentrer sur les systèmes distribués, ce procédé se réfère à l'ordinateur séparés dans l'espace.

    Note: j'aurais « nuds », « pairs », « ordinateur » ou « composants » Ces termes sont utilisés avec le « processus » sont interchangeables. Aux fins du présent article, ils veulent dire la même chose. De même, je ne serais probablement utiliser ces deux termes de façon interchangeable « réseau » et « système ».

    Propriétés des systèmes distribués

    Chaque caractéristique particulière a un ensemble de systèmes distribués, ceux-ci comprennent:

    A) Les processus du système simultanées exécuté simultanément, ce qui signifie que plusieurs événements se produisent simultanément. En d'autres termes, chaque ordinateur du réseau et le réseau d'autres ordinateurs, seront également effectués événement de façon indépendante.

    Et cela exige une coordination.

    Lamport, L (1978): temps systèmes distribués, les événements d'horloge et tri

    B) l'absence d'une collection d'horloge mondiale pour les systèmes informatiques fonctionnant simultanément, nous avons besoin d'un moyen de déterminer l'ordre des événements. Toutefois, dans un système informatique distribué, il est parfois impossible de dégager deux incidents au cours desquels l'incident devait se produire, parce que l'ordinateur séparé dans l'espace. Autrement dit, il n'y a pas d'horloge mondiale pour déterminer une séquence d'événements qui se produisent pour tous les ordinateurs du réseau.

    Dans le « temps de l'événement systèmes distribués, l'horloge et l'ordre » parmi le papier, Leslie Lamport montre comment Inférer en se rappelant les facteurs suivants si un événement a eu lieu avant un autre événement:

    1) un message est envoyé avant qu'elles ne soient reçues; 2) Chaque ordinateur possède une séquence d'événements;

    En déterminant quel événement est survenu avant un autre événement, nous pouvons faire partie du système de classement en cas.

    Le document de Lamport décrit un algorithme qui exige que chaque ordinateur peut « entendre » chacun des autres ordinateurs.

    De cette façon, l'événement peut être triée complètement en fonction de cet ordre partiel.

    Cependant, si nous sommes entièrement triés en fonction de l'événement chaque ordinateur étant entendu, peut provoquer cet ordre en tant qu'utilisateur externe (en dehors du système) sera perçu différemment. Par conséquent, le document mentionné algorithme peut encore permettre à un comportement inhabituel.

    Enfin, Lamport explique comment éviter cette situation anormale en utilisant la synchronisation d'horloge physique correcte.

    Mais attendez, il y a un énorme avertissement: la coordination entre l'horloge indépendante, est un problème de science informatique très complexe. Même si vous définissez d'abord avec précision un tas d'horloge, l'horloge commencera à apparaître après une période de décalage horaire. Ceci est la « dérive de l'horloge » a causé le problème, ce qui est une horloge de temps de calcul à un phénomène de taux légèrement différent.

    En substance, cet article démontre, Le temps et la séquence des événements, est le principal obstacle séparé système informatique réparti dans l'espace .

    Fault C) indépendant comprend un élément clé d'un système distribué, système distribué reconnaît qu'il y aura défaillance d'un composant. Ceci est la raison pour laquelle il est appelé « tolérance de panne informatique distribuée ».

    Nous avons un système de défaut n'est impossible. Le système réel, il existe de nombreux défauts possibles ou des faiblesses, que ce soit un processus se bloque, le message est perdu, déformé ou répété, ou un retard de partition réseau ou un message défausse apparaît, il peut même être un processus complètement hors de contrôle, et transmis conformément à un certain nombre de programmes malveillants le cas du message.

    Ces échecs peuvent être largement divisés en trois catégories:

     
  • échec Collapse : Arrêts de composants travaillant sans avertissement (par exemple, les accidents informatique);
  • manquant : Component envoie le message, mais les autres noeuds et ne reçoit pas un message (par exemple, le message est perdu)
  • Byzance : La performance des composants est arbitraire. Dans un environnement contrôlé (comme Google ou Amazon centre de données) l'émergence de l'échec de telle est hors de propos, qui ne peut avoir un comportement malveillant. Au lieu de cela, ce type d'erreur se produit dans le soi-disant « environnement conflictuel ». En fait, quand un groupe d'acteurs indépendants répartis agir en tant que nuds du réseau, ces acteurs peuvent choisir d'agir dans une approche « byzantine ». Cela signifie qu'ils vont choisir un changement malveillant, arrêt ou non d'envoyer un message.
  • Compte tenu de ces problèmes, notre objectif est de concevoir un protocole qui permet au système ont des composants défectueux, peut encore atteindre des objectifs communs et fournir des services utiles.

    Compte tenu de chaque système est défectueux, les hypothèses de base que nous avons fait dans la construction d'un système distribué, même si ses composantes diffère du comportement normal, il peut continuer à survivre, que ce soit ou non en raison du comportement non malveillant (échec accident ou erreur d'omission) ou en raison de comportements malveillants (c.-à-faute byzantine).

    D'une manière générale, la production d'un système distribué, doivent tenir compte de deux types de modèles:

    1) la tolérance de panne simple,

    Dans un système simple à tolérance de panne, nous supposons que toutes les parties du système ne soient l'une des deux choses: soit ils satisfont à l'accord ou échouent. Ce type de système doit être capable de traiter défaillance d'un nud ou hors ligne. Mais il n'a pas à nud inquiétude montrent un comportement aléatoire ou malveillant.

    2) la tolérance aux pannes byzantines

    Simple système à tolérance de panne dans un environnement non contrôlé, pas très utile. Parmi un système décentralisé, les nuds sont contrôlés par les participants indépendants, parmi eux à l'air libre, sans licence communiquer sur Internet, nous devons aussi être conçus pour ceux qui choisissent un nud malveillant ou d'un comportement « byzantin » . Par conséquent, parmi les systèmes à haute disponibilité byzantine, on peut supposer que l'échec de noeud ou malveillant.

    2b) la tolérance de panne BAR

    Bien que la plupart des systèmes réels sont conçus pour résister à la faute byzantine, mais certains experts estiment qu'il est trop général et ne prend pas en compte la faute « rationnel » (où le nud peut être hors de l'intérêt et l'émergence de comportements déviants). En d'autres termes, selon l'excitation, le nud peut être honnête, peut être malhonnête. Si l'incitation est assez élevé, même les plus nuds peuvent aussi faire quelque chose de malhonnête .

    Plus formellement, cela est défini comme modèle BAR, qui considère à la fois l'échec byzantin et la rationalité. modèle BAR suppose qu'il existe trois types de membres:

     
  • Byzance : Les nuds byzantins sont malveillants, ils tentent de bousiller;
  • altruiste : Nud honnête toujours suivre le protocole.
  • noeud Rational : Nud rationnel seulement quand ils jugeront bon de suivre le protocole.
  • D) de messagerie tel que décrit ci-dessus, le système informatique distribué, de communiquer et de coordonner le « passage de messages » entre un ou plusieurs autres ordinateurs. Message en utilisant un protocole de messagerie pour la livraison, que ce soit HTTP, RPC est construit pour une mise en oeuvre particulière d'un protocole personnalisé.

    Il existe deux types d'environnement de messagerie:

    1) La synchronisation

    Dans les systèmes synchrones, le message est supposé être passé dans un certain temps connu fixe.

    concept de messagerie de synchronisation est pas si compliqué, parce qu'un utilisateur doit veiller à ce que: quand ils envoient un message, le composant récepteur recevra dans un certain délai. Cela permet à l'utilisateur de modéliser un temps limite fixe leur protocole, le délai d'arrivée des messages est nécessaire là-bas.

    Cependant, dans un vrai système distribué, ce type d'environnement est pas pratique, parce que l'ordinateur peut se bloquer ou hors ligne, et peut être perdu, copié, le retard ou le trouble de recevoir des messages. 2) Asynchronous

    Dans le système de messagerie asynchrone, le réseau peut prendre en charge un message de retard infini, copier un message, ou délivré des messages de commande. En d'autres termes, la durée pendant laquelle le message est reçu, il n'y a pas de limite.

    Consensus dans les systèmes distribués Qu'est-ce que cela signifie?

    , Nous avons appris jusqu'à présent les attributs suivants des systèmes distribués:

    Ensuite, nous allons nous concentrer sur la compréhension de parvenir à un « consensus » dans un système distribué ce que cela signifie. Mais d'abord, de réitérer ce que nous avons déjà mentionné, il serait très important: Il y a des centaines d'architecture matérielle et logicielle pour calcul distribué différents.

    La forme la plus commune est connue comme machine d'état répliqués.

    Copier pour copier la machine d'état de machine d'état est une machine d'état déterministe, de nombreux ordinateurs sont copiés, mais il est géré comme une seule machine d'état. Tous ces ordinateurs pourraient un échec, mais la machine d'état est toujours opérationnel.

    Dans la machine d'état de la copie, si la transaction est valide, un ensemble d'entrée provoque l'état du système à l'état suivant. La transaction est une opération atomique dans une base de données. Cela signifie que l'opération est soit totalement achevée ou pas du tout. Entretien de la transaction de réplication de la machine d'état ensemble est appelé « journal des transactions. »

    Une transition de l'état actif à un état actif, une suite logique, est appelée « logique de transition d'état ».

    Copie la machine d'état est un ensemble d'ordinateurs distribués, ils commencent tous par la même valeur initiale. Pour chaque transition d'état, chaque processus de déterminer la valeur suivante. Et pour « consensus » signifie que tous les ordinateurs en commun doivent se mettre d'accord sur la valeur de la production.

    À son tour, ce sur chaque ordinateur dans le système sont journal des transactions cohérente (qui est, « pour atteindre les objectifs communs »).

    Copier la machine de l'Etat doit continuer à recevoir le nouveau les journaux de transactions (c.-à « fournir un service utile »). Il doit le faire, malgré la présence des facteurs suivants:

     
  • Certains ordinateurs échouent;
  • Le réseau est peu fiable, le message peut apparaître incapable de livrer, retard ou défaut de fonctionnement en apparence;
  • Il n'y a pas d'horloge mondiale pour aider à déterminer l'ordre des événements;
  • Et ce sont l'objectif fondamental de tout algorithme de consensus à remplir.

    Si le problème algorithme de consensus identifié satisfait aux conditions suivantes, alors nous disons que l'algorithme a atteint un consensus:  
  • Protocole: Tous les noeuds non défectueux détermine la même valeur de sortie;
  • Résiliation: Tous les nuds non défectueux certaine valeur de sortie de décision finale;
  • (Remarque: différents algorithmes avec différentes variations des conditions ci-dessus, par exemple, certaines personnes sera divisé en cohérence accord sur la propriété et l'intégrité de l'efficacité de certaines personnes, il y a le concept d'intégrité ou de l'efficacité, mais ce n'est pas nécessaire. articles qui explorent ces nuances.)

    D'une manière générale, les algorithmes de consensus supposent généralement que le système Il existe trois types de participants:

     
  • Promoteur (proposants);
  • Les destinataires (accepteurs);
  • Les élèves (apprenants);
  • Les partisans aussi communément connu comme un chef de file ou le coordonnateur. Le destinataire est à l'écoute des demandes de l'auteur, et le processus de réponse à la valeur. Les apprenants sont d'autres processus dans le système, ils apprennent la valeur d'une décision finale.

    D'une manière générale, on peut définir un algorithme de consensus en trois étapes:

    Étape 1: Élection

     
  • Le processus de sélection d'un chef de file unique pour prendre des décisions.
  • Les dirigeants proposent la prochaine valeur de sortie valide.
  • Étape 2: sondage

    processus sans problème surveillera le chef de la valeur proposée, valider, et comme la prochaine valeur valide.

    Étape 3: Décider

     
  • processus sans problème doit parvenir à un consensus sur une seule valeur de sortie correcte. Si elle reçoit un vote pour rencontrer quelques-uns du même nombre de seuil standard, le processus déterminera la valeur.
  • Sinon, pas recommencer.
  • Il est important, chacun aura un algorithme de consensus différent:

     
  • Le terme (par exemple ronde, phase)
  • Comment faire face au processus de vote;
  • Comment déterminer la norme (par exemple, la condition de validité) de la valeur finale;
  • Néanmoins, si l'on peut utiliser ce processus générique pour construire un algorithme qui peut garantir les conditions générales définies ci-dessus, que nous avons un consensus pourrait être atteint dans un système distribué.

    Cela semble simple, non?

    FLP impossible

    ... pas de. Mais bientôt appris!

    Rappelons que la différence entre le système synchrone et asynchrone, nous décrivons comment le système:

     
  • Un environnement synchrone où les messages transmis dans un délai fixé;
  • environnement de passage de message asynchrone est sans garantie de place;
  • Cette distinction est importante.

    environnement de synchronisation de consensus est possible, parce que nous pouvons supposer que le temps maximum requis pour faire passer des messages. Par conséquent, dans ce type de système, nous pouvons permettre au système de différents noeuds raise tour nouveau sondage d'accord un vote à la majorité, si aucune proposition dans un délai maximum, passez un nud.

    Cependant, comme décrit ci-dessus, supposons que nous fonctionner dans un environnement synchrone, il est peu pratique d'effectuer dans un environnement contrôlé (qui peut être prédit messages de retard), l'exemple de synchronisation d'horloge atomique, un centre de données.

    En fait, la plupart supposer que l'environnement ne nous permet pas de synchroniser, donc nous devons concevoir un environnement asynchrone.

    Si nous ne pouvons pas supposer que le temps maximum dans un environnement de messagerie asynchrone, vous serez beaucoup plus difficile à atteindre la fin. Gardez à l'esprit que l'une des conditions, un consensus doit être convaincu que la « cessation d'emploi », ce qui signifie que chaque nud doit déterminer que certaines valeur de sortie non-faute.

    Ceci est appelé " FLP résultats impossibles . « Il est de savoir comment obtenir le nom de celui-ci? Eh bien, je suis heureux que vous ayez posé cette question!

    Les chercheurs Fischer, Lynch et Paterson mentionnées dans le « processus d'erreur dans un impossible distribué à parvenir à un consensus », écrit le journal en 1985, même si seulement un mauvais processus ne peut pas parvenir à un consensus dans le processus déterministe asynchrone.

    En fait, parce que le processus peut échouer au point imprévisible dans le temps, ils peuvent aussi ne pas arrêter au bon moment pour arriver à un consensus.

    Le résultat pour le calcul distribué est un énorme points de maux de tête. Néanmoins, les scientifiques continuent d'essayer de trouver des moyens de contourner FLP impossible.

    À un niveau élevé, il y a deux façons d'éviter FLP impossible:

    Maintenant, nous allons explorer les deux méthodes.

    Méthode 1: hypothèses synchrones

    Eh bien, je sais ce que vous pensez: Qu'est-ce que cela signifie en fin de compte?

    Laissez-nous réexaminons nos résultats impossible. Il considérant une autre façon: FLP résultats impossibles montrent essentiellement que, si nous ne pouvons pas faire des progrès dans le système, alors nous ne pouvons pas parvenir à un consensus. En d'autres termes, si la remise des messages asynchrones n'est pas garanti de mettre fin. Rappelons que la terminaison est une condition nécessaire, ce qui signifie que chaque noeud non défectueux doit finalement décider une partie de la valeur de sortie.

    Cependant, si nous ne savons pas quand il passera le message réseau asynchrone, comment pouvons-nous faire en sorte que chaque processus non défaut peut déterminer une valeur?

    Pour effacer que cette constatation n'indique qu'un consensus ne peut être atteint, au contraire, parce qu'ils ne se synchronisent pas, dans un délai fixe ne peut pas parvenir à un consensus. Il a dit un consensus était « impossible » signifie simplement un consensus « est pas toujours possible », ce qui est un des détails subtils mais cruciaux.

    Une méthode pour éviter cela est d'utiliser un délai d'attente. Si une valeur est en cours pour déterminer la prochaine, nous attendrons une période de temps, puis la procédure de redémarrage.

    Comme nous le verrons, comme Paxos et Radeau de ces algorithmes est un tel consensus.

    Paxos Paxos algorithme algorithme proposé dans les années 1990, c'est le premier vrai algorithme de consensus à tolérance de pannes disponibles. Il est le premier algorithme de consensus est largement utilisé et a été Google et Amazon et autre société Internet mondiale pour construire un service distribué.

    Paxos fonctionne comme suit:

    Etape 1: Préparation de la demande

     
  • Sélectionnez la nouvelle proposition des promoteurs de numéro de version (n) et envoie le destinataire « demande prêt. »
  • Si la demande de préparation du destinataire est reçu ( « préparer » n), n est supérieur à toutes celles qui ont eu leur réponse à la demande de préparation, le récepteur a donné ( « ack, » n, n «v ») ou ( « ack, » n, ^, ^).
  • Les bénéficiaires de réponse de promesse qui n'accepte pas toute proposition numérotée moins n.
  • Récepteur valeur recommandée, ils ont accepté le plus grand nombre de propositions (v) (le cas échéant), sinon, ils seront réponse ^;
  • Étape 2: accepter les demandes

     
  • Si le promoteur reçoit une réponse du destinataire de la plupart, il peut émettre une demande d'accepter ( « accepter » n, v), le nombre est n, la valeur v.
  • n est un nombre apparaissant sur demande de préparation.
  • v est le plus grand nombre de propositions de la valeur de réponse.
  • Si le destinataire reçoit une acceptation de la demande ( « accepter » n, v), il accepte la proposition que si elle était en réponse à un nombre supérieur à la demande n de préparation.
  • Phase 3: la phase d'apprentissage

     
  • Chaque fois que le destinataire accepte l'offre, il répondra à tous les apprenants ( « accepter » n, v)
  • La plupart des bénéficiaires ont reçu des apprenants (là-bas « accepter », n, v), v décide, et envoie tous les autres apprenants ( « décider » v);
  • l'acceptation d'apprentissage ( « décider », v) et a décidé de v;
  • Ma source d'inspiration: Cette fois-ci, une excellente occasion de venir!
    Précédent
    CCTD hebdomadaire | endroit tendance des prix du charbon ne se débarrasser de la situation « empêtré »
    Prochain
    marteau client Jingdong des choses qui sont vraiment Hacking ou exagération?
    quatre grandes inventions de la Chine nouvelle! Les étrangers ont également dit à la maison!
    Il y a des risques de sécurité importants que la chaîne d'origine Developers Conference noeud super Shu et DAPP
    CCTD | Comment l'approvisionnement du marché du charbon et des changements de la demande des prix du charbon en Juillet vont?
    Durex a une copie « à grande échelle », coupe au cur de ce temps!
    colonne Babbitt
    CCTD | 6 Juillet Coal City En bref
    Devon communauté de fans Empire: 500 millions de filles chur chantant, 6000 pour amadouer le bétail enchère billets frits
    Ma ne peut le faire, Amazon a fait!
    colonne Babbitt
    CCTD hebdomadaire | divergence en amont et en aval des prix du charbon pour stabiliser la principale
    24 ans, la valeur nette de 10 milliards de sa vie toujours suspendue invincible ouverte!