L’un des principaux défis d’ingénierie dans l’industrie de la blockchain est la scalabilité. La scalabilité fait référence au développement de technologies ou de protocoles qui peuvent traiter un plus grand nombre de transactions dans un laps de temps déterminé. Alors que les réseaux de paiement traditionnels comme Visa peuvent traiter des milliers de transactions par seconde, la plupart des blockchains ne peuvent traiter qu’une poignée de transactions dans la même période de temps.

Nous travaillons sur deux solutions de mise à l’échelle : Les Sidechains et un protocole Block-DAG. Cet article se penchera sur ce dernier point, tandis que nous avons consacré un autre article à notre développement du système de sidechains.

Qu’est-ce qu’un DAG ?

Le terme DAG vient de l’anglais Directed Acyclic Graph (Graphique Acyclique dirigé). La structure à gauche de l’image ci-dessous est un graphique simple composé de noeuds reliés par les bords. Dans un graphique dirigé, chaque connexion a une direction, indiquée ici par des flèches. Un graphique acyclique dirigé - DAG - ne permet pas les les noeuds soient reliés de manière circulaire, comme ce que vous pouvez voir dans la partie inférieure du graphique dirigé.

DAG DAG

Il y a deux façons différentes de configurer un DAG afin qu’il puisse être utilisé pour une cryptomonnaie. Les nœuds peuvent être constitués de transactions individuelles ou de blocs contenant plusieurs transactions. Le premier protocole DAG notable a été Tangle de l’IOTA. Dans Tangle, chaque nœud est constitué d’une transaction. Chaque transaction fait référence à deux transactions antérieures et contient une petite preuve de travail.

Horizen envisage l’utilisation d’un protocole Block-DAG. Dans ce cas, chaque nœud du DAG est un bloc, similaire à un bloc de la blockchain. Il a également un en-tête de bloc contenant des informations importantes telles qu’un horodatage et des références aux blocs précédents, ainsi qu’un ensemble de transactions. La principale différence par rapport à un bloc d’une blockchain est qu’un bloc dans le Block-DAG peut contenir des références à plus d’un prédécesseur. Cela permet à la structure de données de devenir bidimensionnelle par rapport à la structure de données unidimensionnelle ou linéaire d’une blockchain. Nous ne modifions que la structure des données par rapport à une blockchain, mais nous conservons le même mécanisme de consensus, la preuve de travail, pour que le réseau s’entende sur un seul historique des transactions.

chain DAG chain DAG

Les mineurs d’un Block-DAG

Comme vous le savez peut-être, il y a des mineurs dans les blockchains traditionnelles de preuve de travail qui sécurisent le registre avec de grandes quantités de puissance informatique. Les mineurs sont encouragés à faire ce travail en étant récompensés par des coins nouvellement crées. Il y aura aussi des mineurs dans notre protocole Block-DAG. Ce que nous modifions fondamentalement, c’est la structure des données de l’enregistrement de transaction. Le mécanisme de consensus utilisé par le réseau pour parvenir à un accord sur l’ordre des transactions reste le même, à savoir la preuve de travail.

Une différence dans la structure de récompense de notre DAG par rapport à une blockchain est que non seulement le mineur qui résout un bloc obtient une récompense pour ce bloc particulier, mais aussi un certain nombre de mineurs qui confirment que ce bloc, plus tard, recevront une récompense sous la forme de coins nouvellement crées. Cela incite les mineurs à référencer tous les blocs non référencés. Les blocs nouvellement créés qui ne sont pas encore référencés par d’autres blocs sont appelés les “feuilles” du DAG.

Le minage dans le Block-DAG d’Horizen sera similaire au minage traditionnel, mais nous nous attendons à ce qu’un plus grand nombre de blocs soient minés au total avec une difficulté globale moindre, ce qui devrait conduire à une plus grande décentralisation du minage car moins de mineurs auront besoin de rejoindre les pools de minage.

leaves leaves

Horizen répond au besoin d’une autre adaptation qui doit être faite concernant la règle de la plus chaîne la plus longue utilisée dans les blockchains pour déterminer quelle branche, ou fork, est celle qui est valide en cas de dédoublement de la chaîne. Dans notre DAG, il existe un algorithme un peu plus complexe qui détermine la validité de deux blocs en conflit, en fonction du nombre de fois qu’ils ont été confirmés. Le principe de base de la règle de la chaîne la plus longue ou Consensus Nakamoto demeure. Plus un bloc de DAG est confirmé, plus il est probable qu’il soit le bon bloc des deux blocs en conflit.

Difficulté d’ajustement

Nous avons modifié l’algorithme d’ajustement de difficulté pour notre Block-DAG. La difficulté détermine à quel point il est difficile de créer un nouveau bloc et combien de blocs sont créés dans un laps de temps donné. Habituellement, la difficulté est ajustée en comparant le temps moyen qui devrait être nécessaire aux mineurs pour créer un nouveau bloc et le temps qu’il leur faut en réalité. Si des blocs sont créés trop souvent, la difficulté augmente. Si cela prend trop de temps aux mineurs, la difficulté diminue.

Nous avons l’intention de baser notre ajustement de la difficulté pour le Block-DAG non seulement sur le temps qu’il faut pour extraire de nouveaux blocs, mais aussi sur la taille des derniers blocs. Lorsque plusieurs blocs d’affilée atteignent la limite de taille d’un bloc, c’est un indicateur d’une activité élevée du réseau. Cela signifierait traditionnellement qu’il faut plus de temps pour que des transactions valides soient incluses dans un bloc. Dans notre DAG, la difficulté diminue en cas de forte activité du réseau, ce qui permet aux mineurs de produire plus de blocs pour la même période de temps. Il en résulte qu’un plus grand nombre de transactions peuvent être traitées dans le même laps de temps et que le débit global est augmenté. Ce mécanisme permet à notre DAG de gérer dynamiquement les différentes activités du réseau sans sacrifier la sécurité.

Le principal défi

Du point de vue de l’ingénierie, il y a un défi principal à résoudre avec un tel protocole Block-DAG : établir un ordre parmi tous les blocs. Alors que l’ordre des blocs d’une blockchain est toujours linéaire, il doit être établi dans un DAG par un ensemble de règles prédéfinies. La disposition des blocs dans notre DAG sera basée sur l’intersection des blocs. Une transaction valide peut être incluse dans deux blocs valides différents dans un DAG. En examinant le “chevauchement” des transactions d’un ensemble de blocs, on peut établir un ordre final de l’ensemble.

Résumé

Le débit atteint par un Block-DAG nous motive à faire de ce protocole une réalité dans l’écosystème Horizen. La plupart des registres basés sur DAG sont des DAGs de transaction alors que nous travaillons sur un Block-DAG.

Le minage dans notre Block-DAG sera similaire au minage traditionnel avec de légères adaptations de la structure de récompense. Nous avons légèrement adapté la règle de la chaîne la plus longue, de sorte qu’elle fonctionne dans un contexte de DAG et nous avons conçu un nouvel algorithme afin de déterminer la difficulté d’extraction basée non seulement sur le temps de production des blocs mais aussi sur le nombre de transactions par bloc. Si les blocs atteignent la limite de taille de bloc, cela indique une activité réseau élevée et la difficulté diminuera de sorte que plus de blocs seront minés durant une même période de temps. Le principal défi de la conception du protocole Block-DAG est d’arriver à établir un ordre linéaire parmi tous les blocs, basé sur le chevauchement des transactions qui sont incluses dans plus d’un bloc.

Contenu Débutant Ci-dessous - Block-DAG

L’un des principaux défis à relever pour rendre la technologie de la blockchain prête pour une adoption de masse est la scalabilité (ou mise à l’échelle). Aujourd’hui, la plupart des blockchains ne peuvent traiter qu’une poignée de transactions par seconde, tandis que les réseaux de paiement comme VISA prennent en charge plusieurs milliers de transactions par seconde.

Il existe un certain nombre de méthodes différentes pour faire des blockchains scalables et chez Horizen, nous étudions deux de ces solutions possibles. L’une d’elles est la construction d’un protocole Block-DAG, l’autre permet les sidechains, nous en saurons plus sur les sidechains dans un autre article.

Le terme DAG signifie “Graphique Acyclique Dirigé” (Directed Acyclic Graph). La structure à gauche est un graphique simple, composé de noeuds reliés par les bords. Dans le cas d’un graphique dirigé, chaque connexion a une direction, indiquée par les flèches. Enfin, un graphique acyclique dirigé - DAG - ne permet pas que les noeuds soient reliés de manière circulaire, comme ce que vous pouvez voir dans la partie inférieure du graphique dirigé.

DAG in FR DAG in FR

Un bloc dans le Block-DAG est presque le même qu’un bloc de blockchain. Un bloc dans un DAG possède également un en-tête de bloc et contient un certain nombre de transactions, tout comme un bloc dans la blockchain. Il est également miné par les mineurs, c’est-à-dire que ces derniers essaient de trouver la réponse à une tâche de calcul en devinant au hasard. Le mineur qui trouve la réponse crée le bloc. Cette méthode d’obtention d’un consensus sur l’ordre des transactions est la même que celle utilisée par la plupart des blockchains, à savoir la preuve de travail (PoW), que nous expliquons plus en détail dans notre section technologie.

La principale différence est que les blocs de la blockchain font toujours référence à un bloc (le précédent), alors qu’un bloc du Block-DAG peut faire référence à plusieurs blocs précédents. Un autre ajustement est nécessaire afin d’établir un ordre définitif des blocs d’un DAG. Nous expliquons également comment fonctionne l’établissement de cet ordre dans la section Avancé.

En supposant que les deux types de blocs, celui dans la blockchain et celui dans le Block-DAG contiennent le même nombre de transactions, il suffit de regarder le graphique ci-dessous pour comprendre que le DAG traitera plus de transactions dans une période de temps donnée que la blockchain. Il y a simplement plus de capacité de stockage dans le Block-DAG par rapport à la blockchain.

Le DAG introduit une sorte de “bidimensionnalité” dans la structure de données autrement strictement linéaire ou unidimensionnelle de la blockchain et est considéré comme une approche prometteuse pour faire évoluer les réseaux décentralisés.

Si vous voulez en savoir plus sur les graphiques acycliques dirigés, n’hésitez pas à consulter notre article à ce sujet au niveau supérieur.

DAG Blockchain in FR DAG Blockchain in FR

Résumé

Le Block-DAG utilise le même mécanisme de consensus qu’une blockchain afin de convenir de l’ordre des événements, mais utilise une structure différente pour relier les différents blocs. La promesse de DAG est d’augmenter le débit d’un grand registre décentralisé de quelques transactions par seconde à possiblement des milliers. Le temps nous dira si la technologie Block-DAG peut tenir cette promesse.