Au cœur d'une blockchain à haut débit se trouve sa capacité à gérer de nombreuses transactions rapidement et en toute sécurité. Cependant, lorsque les transactions dans Sui impliquent l'écriture sur le même objet partagé, elles doivent être exécutées de manière séquentielle. Cela peut se traduire par des temps de point de contrôle plus longs, ce qui peut réduire l'efficacité de la synchronisation des états.

Le premier objectif du contrôle de congestion des objets partagés est d'améliorer l'efficacité de l'exécution des points de contrôle. En contrôlant le nombre de transactions touchant un objet partagé encombré ou chaud au sein de chaque point de contrôle, le système garantit que les temps de traitement restent cohérents, évitant ainsi les retards.

Ce mécanisme favorise également l'équité des transactions en garantissant que les transactions avec des frais de gaz plus élevés soient prioritaires lors de l'inclusion des points de contrôle. Les utilisateurs s'attendront à ce que les transactions plus coûteuses soient traitées plus rapidement.

Répondre aux limitations antérieures de Sui

Sui gérait auparavant la congestion des objets partagés via son gestionnaire de transactions. Ce système surveille le nombre total de transactions en attente d'exécution, en attendant que les objets requis soient disponibles. Si les transactions en attente dépassaient un seuil, le gestionnaire de transactions cessait d'accepter de nouvelles demandes de signature ou d'exécution de transaction.

Le mécanisme précédent, bien qu'efficace dans certains scénarios, présentait des lacunes dans plusieurs domaines. Par exemple, il entraînait souvent des rejets partiels de transactions et des blocages d'objets en raison d'incohérences entre les validateurs. Il n'estimait pas avec précision les temps d'exécution des séquences de transactions dépendantes, ce qui entraînait des inefficacités et une congestion potentielle du traitement. Enfin, lorsqu'un objet était congestionné, la solution précédente rejetait toutes les transactions entrantes jusqu'à ce que les transactions en cours soient exécutées, ce qui signifiait qu'il n'était pas possible de prioriser l'inclusion à l'aide de paiements de gaz.

Un regard plus approfondi sur le contrôle de la congestion

La nouvelle conception du gestionnaire de consensus introduit une approche plus nuancée de la gestion des dépendances d'exécution entre les objets partagés à chaud. Cela inclut deux nouvelles fonctions ajoutées à la logique du validateur :

  1. La possibilité de différer les transactions : le gestionnaire de consensus a désormais la capacité de différer les transactions vers de futurs commits de consensus, gérant ainsi plus efficacement les dépendances d'exécution dans les points de contrôle.

  2. Annulation active des transactions : les validateurs peuvent désormais annuler activement les transactions qui ont été différées de manière excessive. Lorsqu'une transaction est annulée, elle est toujours traitée mais avec une commande au moteur d'exécution pour s'arrêter immédiatement. Une fois qu'il reçoit cette instruction, le moteur d'exécution libère tous les objets qu'il a verrouillés et renvoie rapidement une erreur d'annulation au client sans terminer la transaction.

Le gestionnaire de consensus trie et gère les transactions. Ce diagramme utilise des cercles colorés pour représenter les transactions avec différentes quantités de gaz.

Lorsque le gestionnaire de consensus reçoit un commit de consensus, il fusionne d'abord les transactions du commit avec celles qui ont été précédemment différées, en les triant par prix du gaz. Il examine ensuite chaque transaction une par une, créant un graphique de dépendance d'exécution par objet qui décrit les étapes cruciales nécessaires à l'exécution du point de contrôle. Ce processus garantit que les transactions sont traitées efficacement et dans l'ordre de leur coût.

Pour ajouter une transaction au graphique de dépendances, le gestionnaire évalue tous les objets partagés impliqués dans la transaction. Il identifie l'objet avec la file d'attente la plus longue pour démarrer l'exécution de la transaction, en alignant les files d'attente de tous les objets impliqués sur cette longueur maximale. Le coût de la transaction est ensuite ajouté à la file d'attente de chaque objet, mettant à jour l'ordre d'exécution.

Le graphique de dépendance fournit une estimation de la latence d'exécution pour chaque objet en fonction de la file d'attente la plus longue, qui indique également la latence globale pour la validation de consensus. Il existe une limite maximale pour la longueur de la file d'attente dans chaque validation de consensus. Si une transaction dépasse cette limite, elle est reportée à une validation ultérieure. Si elle est reportée à plusieurs reprises au-delà d'un certain seuil, une transaction est annulée et retirée du traitement. Cela se produit généralement lorsqu'une transaction cible un objet très demandé mais propose un prix du gaz trop bas pour être compétitif.

La nouvelle conception améliore l'efficacité en surveillant les dépendances d'exécution et en limitant les transactions qui impliquent des objets partagés très demandés au sein de chaque validation de consensus, protégeant ainsi l'exécution du point de contrôle. Il est essentiel que les transactions qui n'impliquent pas ces objets très demandés ne soient pas affectées par ces limites.

Résoudre les défis précédents

Comme mentionné précédemment, le système précédent avait du mal à suivre les files d'attente de transactions pour chaque objet, ce qui entraînait des inefficacités. Le mécanisme de contrôle de la congestion des objets partagés non seulement relève ces défis, mais apporte également des améliorations significatives pour rationaliser le processus. La nouvelle approche garantit une prise de décision uniforme entre tous les validateurs quant à l'exécution, au report ou à l'annulation d'une transaction. Ce changement élimine efficacement les problèmes associés aux objets verrouillés et permet la libération rapide des objets détenus par des transactions de priorité inférieure.

Le mécanisme de contrôle de congestion améliore également la précision en suivant l'intégralité du graphique de dépendance des transactions au sein de chaque validation de consensus. Cela signifie qu'il note soigneusement la séquence et les dépendances des transactions, offrant une vue beaucoup plus claire du temps réel nécessaire à l'exécution des points de contrôle. Ce faisant, il s'attaque aux complexités et aux inefficacités qui étaient auparavant négligées.

De plus, en différant les transactions et en les incorporant à de nouvelles transactions dans les engagements de consensus ultérieurs, la nouvelle méthode prend en charge les marchés de frais locaux. Cette configuration profite aux transactions avec des prix de gaz plus élevés, garantissant qu'elles ont de meilleures chances d'être traitées pendant les périodes de pointe. Les utilisateurs ont la possibilité de payer pour l'inclusion, ce qui peut être particulièrement puissant pour les activités DeFi.

Enfin, la nouvelle approche tend à améliorer les performances de la charge de travail des objets partagés à chaud avant toute dégradation de l'exécution des points de contrôle. Cette amélioration découle de la prise de décision cohérente et collective des validateurs, ce qui conduit à un traitement des transactions plus efficace et à un débit global du réseau accru. Cette uniformité garantit que le système peut gérer davantage de transactions avant que des problèmes de performances ne surviennent.

Sui ouvre la voie

La mise en œuvre du contrôle de congestion des objets partagés est plus qu’une simple mise à niveau technique, c’est une amélioration stratégique qui améliore considérablement l’évolutivité et l’efficacité de Sui. Grâce à cette base, les utilisateurs et les applications sur Sui peuvent désormais bénéficier d’une efficacité et d’une fiabilité accrues des transactions. Le mécanisme de contrôle de congestion rationalisé fournit un tremplin pour le déploiement d’applications plus complexes et plus réactives, élargissant encore les capacités de l’écosystème.