Le "temps" est un sujet éternel dans les temps qui changent. Des discussions autour du temps ont eu lieu dans les blockchains et autres systèmes distribués. Le temps relie les processus et les nœuds, et nous utilisons également la "granularité" du temps pour mesurer le réseau décentralisé qui relie les blocs en chaînes.
La difficulté du temps dans un système distribué est qu'il est difficile pour les "horloges physiques" des différents participants de s'accorder complètement. Le maître de système distribué Lamport propose une méthode décentralisée, transformant le problème en relation entre le temps et l'ordre, et met en avant le concept d'horloge logique, tout comme l'introduction d'une "horloge biologique" pour les systèmes distribués, y compris la blockchain.
stakefish compile un article de l'analyste Vac et développeur ENS Dean Eigenmann, présentant la discussion de Lamport sur le temps, les horloges et l'ordre, et rappelant à chacun de comprendre la blockchain et le temps système distribué sous un autre angle.
Quel sujet est le plus approprié pour commencer une série d'articles sur les systèmes distribués ? Le protocole de transaction de confidentialité d'Ethereum, AZTEC ? L'algorithme Paxos, notoirement difficile à maîtriser ? Ces sujets sont laissés à écrire plus tard. Aujourd'hui, j'ai choisi un sujet de base comme point de départ : le sujet du temps dans les systèmes distribués.
Real brésilien stablecoin BRZ émis sur la blockchain Algorand : Le 12 février, la société suisse de gestion de portefeuille d'actifs numériques TransferoSwiss a annoncé que le real brésilien stablecoin BRZ lancé par elle a été étendu à la blockchain Algorand. La BRZ est une monnaie stable indexée sur le réal brésilien dans un rapport de 1: 1. Elle a été lancée en 2019 et la circulation actuelle a atteint 204 millions. [2021/2/12 19:36:13]
Cet article interprète l'article bien connu "Time, clocks, and the ordering of events in a distributed system" du lauréat du prix Turing et gourou de l'informatique Leslie Lamport. C'est amusant de relire ce billet longtemps après et d'en distiller les concepts clés.
Les amis qui ne connaissent pas Leslie Lamport peuvent se faire une idée générale. Il est célèbre pour avoir créé LaTeX, TLA+, Paxos, et discute également du problème général byzantin. Et bien sûr l'horloge de Lamport (la première horloge logique), dont nous allons également introduire les concepts de base dans cet article.
Sam’s Club utilise la plateforme de traçabilité blockchain de Sam dans les produits : le magasin réservé aux membres de Walmart, Sam’s Club, a lancé la campagne « 2020 Taste of Sam », sur le thème « Alimentation différente, vie différente » pour faire connaître aux familles des membres un mode de vie de haute qualité. Dans le même temps, c'est la première fois que l'on crée un parcours plus sécurisé, sain et de haute qualité pour les membres via la plateforme de traçabilité de Sam blockchain. Basé sur l'architecture technique flexible de la plateforme VeChain ToolChain, en fonction des besoins de sécurité alimentaire et de gestion de la chaîne d'approvisionnement, SAM a rapidement construit sa propre plateforme de traçabilité SAM blockchain, et a construit une boucle fermée de consommation crédible qui profite à plusieurs parties. À l'heure actuelle, plus de 20 catégories de produits ont été incluses dans la plate-forme de traçabilité de la chaîne de blocs de Sam - y compris la propre marque de Sam, Member's Mark, une variété de porc frais, de poulet, de légumes, de produits secs et d'autres produits. [2020/6/2]
Voyons d'abord la définition d'un système distribué. La définition donnée par Lamport est la suivante :
"Un système est appelé système distribué si le délai de livraison des informations au sein du système n'est pas négligeable par rapport au temps entre les événements d'un même processus."
J'aime cette définition car elle se concentre sur le délai entre l'envoi et la réception d'un message.
Avec la définition clairement définie, nous commençons l'introduction formelle.
Trier les événements localement ne pourrait pas être plus facile. Vous attribuez simplement à chaque événement un horodatage lorsqu'il s'est produit. Nous pouvons obtenir l'ordre global de tous les événements, ce qui signifie que tous les événements peuvent être organisés dans un ordre spécifique.
Voix | Vice-président du BYD Research Institute : la blockchain et d'autres technologies vont changer la vie des voitures Applications automobiles : Jiao Haitao, vice-président du BYD Auto Smart Ecological Research Institute, a déclaré lors du récent "2018 Global Intelligent Driving Summit" que les mégadonnées , l'intelligence artificielle L'intelligence et la blockchain sont également des technologies essentielles dans la vie automobile et les applications automobiles. Grâce à l'utilisation de la technologie blockchain et de l'interface ouverte de BYD pour obtenir des données de conduite de véhicules, en particulier des données de conduite de véhicules à énergie nouvelle, convertir ces données en données de réduction des émissions de carbone, former des points carbone et créer des points carbone avec des partenaires Une écologie qui récompense les propriétaires de nouveaux véhicules énergétiques. [2018/10/28]
Mais ce problème est beaucoup plus délicat dans le cadre des systèmes distribués. Pourquoi?
Tout cela à cause de la nature très simple d'un système distribué : après qu'un message est envoyé entre les nœuds, il peut arriver 0, 1 ou plusieurs fois à n'importe quel moment dans le futur. Dans ce cas, les différents nœuds du système distribué ne peuvent pas s'accorder sur l'heure. par exemple:
Un nœud peut envoyer un message à un autre nœud pour marquer l'heure actuelle comme 12:00:00, mais le destinataire ne sait pas combien de temps le message a mis à livrer, il n'y a donc aucun moyen de confirmer s'il est encore 12:00 : 00 quand il arrive. Si c'est le cas, il n'y a aucun moyen de déterminer si les informations sont synchronisées même si les messages sont échangés pendant une journée entière entre les nœuds. Si nous ne pouvons pas nous mettre d'accord sur le moment, nous ne pouvons pas nous mettre d'accord sur la séquence des événements.
Alors comment résoudre ce problème ?
Actualités | ING Bank lance la technologie blockchain à connaissance zéro : Selon coindesk, ING Bank a annoncé lors de la conférence Sibos Bank cette semaine qu'elle publiera sa solution ZKSM (zero-knowledge set member), qui intègre la technologie à connaissance zéro appliquée à la blockchain intimité. ZKSM permet la vérification des données alphanumériques dans un ensemble spécifié. En pratique, cela signifie passer des nombres à d'autres types de données, comme prouver les dimensions et la géographie. [2018/10/22]
Dans un système distribué, plusieurs nœuds communiquent en s'envoyant des messages. Lorsque le nœud reçoit les informations, il confirme d'abord les informations, puis exécute son événement suivant. Une telle commande montre à l'origine un « lien de causalité » : l'information doit être envoyée avant de pouvoir être reçue.
Annotation : Cette relation causale est une relation séquentielle, et non une relation logique entre la cause et l'effet.
Ensuite, l'ordre peut être établi en fonction de la relation causale : le message doit être envoyé avant d'être reçu par lui. En regardant simplement les deux événements A et B, nous pouvons décrire l'ordre en donnant la relation de "se passe avant".
Or, cette relation peut être identifiée sans notion systématique de temps physique : l'événement A doit avoir eu lieu avant l'événement B si A a eu un effet causal sur B. La causalité nous permet de déterminer l'ordre des événements liés dans un système, un ordre partiel.
L'ordre partiel a également une limitation : sans pouvoir déterminer les dépendances, nous ne pouvons pas connaître l'ordre exact de chaque événement dans le système. Étant donné qu'il peut y avoir de nombreux événements simultanément dans tout le système, tous les nœuds ne sont pas conscients de l'occurrence de ces événements.
La Bourse d'assurance de Shanghai a signé un accord de coopération avec l'Académie chinoise des technologies de l'information et de la communication. Les deux parties mèneront une coopération approfondie dans le domaine de la blockchain : Récemment, la Bourse d'assurance de Shanghai et l'Académie chinoise des technologies de l'information et de la communication ont signé un accord de coopération à Pékin. Il est entendu que les deux parties concentreront des ressources supérieures et s'appuieront sur le projet Trusted Blockchain pour mener une coopération approfondie dans la technologie blockchain et la recherche standard, les applications blockchain d'entreprise et la promotion de l'industrie, et promouvoir conjointement la blockchain, le big data et le cloud. Intégration profonde de la technologie et de l'industrie de l'assurance. [2018/4/11]
Horloge
Mais maintenant que nous avons un ordre partiel, nous pouvons ajouter une horloge au système pour obtenir l'ordre total de tous les événements du système.
Tout à l'heure, nous savons qu'il n'est pas possible d'utiliser des horloges physiques dans des systèmes distribués, alors nous devons utiliser des horloges logiques. Une horloge logique est essentiellement une fonction capable d'attribuer un numéro à un événement. Ce nombre représente le moment où l'événement s'est produit (à partir de maintenant, nous appellerons ce nombre le temps) et n'a aucun rapport avec le temps physique.
Nous supposons que chaque nœud de ce système distribué possède une horloge. Cette horloge fait tic-tac au fur et à mesure que les événements sont exécutés, mais la progression de l'horloge n'est pas considérée comme un événement dans le système. Pour chaque événement qui se produit sur un nœud du système, l'horloge logique attribue un numéro à l'événement. Sur la base de cette hypothèse, nous pouvons satisfaire les conditions d'horloge suivantes :
∀a,b une → b ⟹ C(a) < C(b)
Que signifie l'expression ci-dessus ?
La flèche "→" signifie "s'est passé avant (s'est passé avant)", et C représente la fonction d'horloge, qui peut être simplement comprise comme le temps. Donc, pour exprimer le sens, c'est : pour chaque événement a, b, si a se produit avant b, alors le temps de a est inférieur au temps de b.
Mais la déduction inverse n'est pas vraie, juste parce que le temps d'un événement est plus petit que le temps d'un autre événement, on ne peut pas dire que cet événement s'est produit avant, ils peuvent être simultanés.
Dans l'image ci-dessus, nous pouvons voir que sur le nœud α, un événement s'est produit respectivement au temps 1 et au temps 2 ; le nœud β a un événement qui s'est produit à son propre temps 1. Les événements au temps 1 et au temps 2 au nœud α sont simultanés avec les événements au temps 1 au nœud β, et n'ont aucun lien causal.
Si a et b sont deux événements sur un seul nœud, et que a se produit avant b, alors le temps de a doit être inférieur au temps de b.
Si a est un nœud envoyant un message et b est un autre nœud recevant un message, alors le temps de a doit toujours être inférieur au temps de b.
Les nœuds doivent laisser l'horloge tourner entre les événements. Si ce n'est pas le cas, l'horloge doit être avancée à une heure ultérieure à celle contenue dans tous les messages reçus des autres nœuds. b peut se produire après un réglage rapide de l'horloge.
Et bien maintenant, on peut utiliser des horloges qui remplissent ces conditions pour établir une séquence générale de l'ensemble du système distribué, ici on trie simplement selon l'heure donnée par les horloges de chaque événement.
Cas d'utilisation
Enfin, nous avons mis en place une machine d'état pour voir l'utilisation de l'horloge logique. Par exemple, nous avons un système distribué dans lequel plusieurs nœuds veulent accéder à des ressources partagées, et un seul nœud est accessible à la fois. La machine d'état doit remplir les conditions suivantes :
Condition 1 : un nœud qui peut accéder à une ressource doit d'abord libérer la ressource avant que d'autres nœuds puissent y accéder.
Condition 2 : Les demandes de ressources doivent être autorisées à accéder dans l'ordre dans lequel les demandes sont faites.
Condition 3 : si chaque nœud auquel l'accès a été accordé libère finalement la ressource, chaque demande sera finalement accordée.
Pourquoi ne pas introduire un coordinateur intermédiaire ? Car dans ce cas, si une requête antérieure survient mais arrive plus tard, la condition 2 ne peut pas être satisfaite ; une autre raison est que nous souhaitons adopter une solution décentralisée.
Nous devons donc encore créer des conditions pour respecter cette horloge logique. Comment remplir les conditions ?
Lamport nous fournit une solution décentralisée. Tout d'abord, nous voulons que tous les nœuds stockent une file d'attente de requêtes. Deuxièmement, quelques hypothèses simples doivent être satisfaites :
Hypothèse 1 : Tous les messages sont reçus dans l'ordre dans lequel ils ont été envoyés.
Hypothèse 2 : Tous les messages sont finalement reçus.
Hypothèse 3 : Chaque nœud peut envoyer des messages directement à tous les autres nœuds du système.
S'il existe des algorithmes et des protocoles plus complexes, les hypothèses ci-dessus peuvent être ignorées.
Nous pouvons maintenant définir un algorithme qui satisfait ces 3 conditions et montrer la fonctionnalité de l'horloge en pratique :
1. Si un nœud souhaite demander une ressource, il crée une demande avec l'heure actuelle, l'ajoute à sa file d'attente et l'envoie à tous les autres nœuds.
2. Tous les autres nœuds placent cette demande dans leur file d'attente et renvoient un message de réponse.
3. Le nœud libérant la ressource envoie un message de libération avec l'heure actuelle et supprime la demande d'origine de sa file d'attente.
4. Lorsque le nœud reçoit le message de libération, il efface la demande associée de sa propre file d'attente.
5. Lorsqu'un nœud a sa propre demande dans sa file d'attente avant toute autre demande (dans l'ordre chronologique total), il peut accéder librement à cette ressource et il reçoit des messages de tous les autres nœuds après cette heure.
L'algorithme ci-dessus est un algorithme décentralisé exécuté de manière complètement indépendante par chaque nœud, il utilise l'horloge pour trier les requêtes selon l'ordre général, de manière à réaliser l'accès aux ressources et la coordination entre les nœuds.
Eh bien, nous avons à peu près appris à utiliser ces horloges logiques pour trier les événements dans un système distribué à travers l'article, et analysé l'application pratique de la détermination de l'ordre lorsqu'un système distribué accède aux ressources. Vos commentaires sont les bienvenus et je continuerai à mettre à jour d'autres articles sur les systèmes distribués.
Titre original : Time, clocks, and order
Par Dean Eigenmann
compiler : pieu
Tags:
Source : Ant Financial Le premier jour du voyage de la Fête du printemps 2020, à ce jour.
Alors que le pays considère la blockchain comme une percée importante pour l'innovation indépendante des technologies de base, de plus en plus d'industries physiques ont accéléré leur entrée.
Ces dernières années, le Fujian a accéléré le développement de la technologie blockchain et de l'innovation industrielle.
Le "temps" est un sujet éternel dans les temps qui changent. Des discussions autour du temps ont eu lieu dans les blockchains et autres systèmes distribués. Le temps relie les processus et les nœuds.
Le 31 janvier, l'Hyperledger Alliance a officiellement publié la version 2.0 de sa plate-forme de registre distribué d'entreprise (DLT) Hyperledger Fabric. Il est rapporté que cette version a ajouté plusieurs fonction.
Les données de Huobi Global hier soir ont montré que le XRP a brièvement franchi 0,27 $, un nouveau sommet depuis le 13 novembre de l'année dernière, avec une augmentation intrajournalière de 8,87 %. Cet après-midi.
En regardant le dernier chargement de billets brûler en cendres dans des flammes rouges.