En résumé ;
Aujourd'hui, les solutions de couche 2 font un compromis entre la scalabilité et la fragmentation de l'état. Nous introduisons un design de couche 2 (L2), =nil;, qui repousse les limites de la scalabilité d'Ethereum sans compromettre les avantages d'un environnement d'exécution unifié. La solution combine un mécanisme de sharding dynamique avec un accès vérifiable aux données d'Ethereum, sécurisé par des technologies de connaissance nulle. Les éléments clés incluent:
À travers zkSharding =nil; bénéficie des avantages des conceptions monolithiques et modulaires, y compris :
Scalabilité
Environnement d'exécution unifié
Sécurité
Fonctionnalité
Au niveau inférieur, l'état de =nil; est partitionné en shard primaire et plusieurs shards secondaires. Le rôle du shard principal est de synchroniser et consolider les données des shards secondaires. Il utilise Ethereum à la fois comme couche de disponibilité des données et comme vérificateur des preuves de transition d'état, similaire aux opérations typiques de zkRollups.
Les shards secondaires fonctionnent comme des "ouvriers", exécutant les transactions des utilisateurs. Ces shards maintiennent une liquidité et des données unifiées grâce à un protocole de messagerie inter-shard, éliminant toute fragmentation entre eux.
Chaque fragment est supervisé par un comité de validateurs. Il y a une rotation périodique de ces validateurs à travers les fragments. De plus, les mises à jour de l'état d'un fragment sont vérifiées sur le fragment principal en utilisant zkEVM.
Pour illustrer le flux de transaction de l'initiation par un utilisateur à la confirmation sur Ethereum, considérez les étapes suivantes :
Cet outline suppose que la transaction de l'utilisateur n'active pas le protocole de messagerie inter-shard. Cependant, dans ce cas, le flux de la transaction reste le même avec la différence qu'une transaction d'utilisateur peut déclencher la création de nouvelles transactions sur d'autres shards.
Avec tous les comptes étant répartis entre les fragments, cela peut sembler similaire au problème de fragmentation des données rencontré dans l'approche des rollups spécifiques à l'application. Cependant, la différence clé réside dans la manière dont la communication entre les fragments est gérée : elle est intégrée directement dans le protocole global, plutôt que d'être gérée par des ponts externes séparés.
Pour garantir la sécurité de chaque shard secondaire, son comité de validateurs est tenu de prouver ses transitions d'état au shard primaire pour s'assurer qu'aucune fraude n'a eu lieu au sein d'un groupe de validateurs plus petit. Chaque comité de validateurs de shard a des tâches supplémentaires au-delà de la maintenance du shard. Les validateurs sont responsables du suivi de types spécifiques d'événements, à savoir les messages entre shards, au sein des "shards proches". Les shards proches sont déterminés en fonction de la distance de Hamming dans les identifiants de shard.
=nil;s zkEVM est un zkEVM de type 1 compilé avec zkLLVM. Pour comprendre les différences entre les zkEVM plus traditionnels et le zkEVM de =nil;, nous devons discuter des limitations associées au processus de définition de circuit qui sous-tend les zkEVM. Le circuit zkEVM est une partie critique, responsable de la preuve de transition d'état pour être considéré comme correct, étant généralement défini avec un zkDSL personnalisé ou simplement une bibliothèque. Cette méthode de définition de circuit soulève des problèmes liés à :
=nil; zkEVM adresse efficacement tous ces défis en étant :
zkEVM compilé via zkLLVM est sécurisé par conception, en tirant parti d'evmone pour garantir une cohérence totale avec l'EVM utilisé en production sur Ethereum. Le zkLLVM (C++ ou Rust) se compile automatiquement en circuit, ce qui signifie que les erreurs humaines sont éliminées du processus de définition du circuit.
De plus, parce que =nil; zkEVM est compilé via zkLLVM, il est naturellement plus flexible (et donc, à l'épreuve du futur) que les circuits définis manuellement car il est facilement ajustable et la génération de circuits est automatique. Il est également plus auditable, ce qui signifie que sa sécurité ne se fait pas au détriment de l'inclusion des derniers EIP ajoutés à Ethereum.
Comme le fragment principal et les fragments secondaires diffèrent en ce qui concerne leurs tâches dédiées - les fragments secondaires se concentrent sur le traitement des transactions tandis que le fragment principal se concentre sur la synchronisation des données - ils ont des approches différentes de la disponibilité des données (DA), ce qui aide à récupérer les données d'état dans des situations d'urgence. Cela signifie :
Cet arrangement est établi en lançant deux types de shards au début : ceux avec une solution DA externe distincte et ceux sans. Dans les phases suivantes, seuls les shards de la même catégorie DA peuvent être fusionnés. Cela signifie que lors de sa création, chaque compte doit être associé à une catégorie DA spécifique.
De plus, ce cadre peut être étendu pour inclure d'autres types de DA.
Un de nos objectifs principaux est d'optimiser la composabilité des applications et d'éviter la fragmentation de la liquidité, donc naturellement l'approche zkSharding serait incomplète sans un accès sans confiance à l'état d'Éthereum. Cela signifie =nil; offre une pleine composabilité et une intégration transparente avec Éthereum grâce au module Data Provider.
Le fournisseur de données fonctionne de manière indépendante du stockage des données du shard, synchronise ses informations avec une base de données externe et injecte l'empreinte digitale d'Éthereum de l'état de la dernière base de données surveillée (représentée par le hachage de bloc d'Éthereum) dans le bloc du shard. L'état le plus récent de cette base de données reçoit une validation du module de confirmation, qui utilise un zkBridge avec la preuve de consensus Casper FFG d'Éthereum.
=nil; et zkSharding sont le fruit des produits que la Fondation =nil; a développés au cours des 4 dernières années. Son objectif est d'être la première solution composable, évolutive et universelle de couche 2 zkRollup pour Ethereum. Nous sommes impatients de partager plus de détails sur la mise en œuvre au cours des prochains mois. Assurez-vous de suivre notre Twitter pour rester informé de nos progrès !
Pour les personnes techniquement inclinées, nous avons développé un manuel séparé et completqui explore en détail zkSharding. Ce manuel est votre passerelle pour comprendre les subtilités de cette approche, équipé de tous les détails techniques et préliminaires dont vous avez besoin.
Plongez maintenant dans notre introduction technique et participez à la conversation surDiscordetTelegram. Explorons ensemble les possibilités illimitées du zkSharding !
En résumé ;
Aujourd'hui, les solutions de couche 2 font un compromis entre la scalabilité et la fragmentation de l'état. Nous introduisons un design de couche 2 (L2), =nil;, qui repousse les limites de la scalabilité d'Ethereum sans compromettre les avantages d'un environnement d'exécution unifié. La solution combine un mécanisme de sharding dynamique avec un accès vérifiable aux données d'Ethereum, sécurisé par des technologies de connaissance nulle. Les éléments clés incluent:
À travers zkSharding =nil; bénéficie des avantages des conceptions monolithiques et modulaires, y compris :
Scalabilité
Environnement d'exécution unifié
Sécurité
Fonctionnalité
Au niveau inférieur, l'état de =nil; est partitionné en shard primaire et plusieurs shards secondaires. Le rôle du shard principal est de synchroniser et consolider les données des shards secondaires. Il utilise Ethereum à la fois comme couche de disponibilité des données et comme vérificateur des preuves de transition d'état, similaire aux opérations typiques de zkRollups.
Les shards secondaires fonctionnent comme des "ouvriers", exécutant les transactions des utilisateurs. Ces shards maintiennent une liquidité et des données unifiées grâce à un protocole de messagerie inter-shard, éliminant toute fragmentation entre eux.
Chaque fragment est supervisé par un comité de validateurs. Il y a une rotation périodique de ces validateurs à travers les fragments. De plus, les mises à jour de l'état d'un fragment sont vérifiées sur le fragment principal en utilisant zkEVM.
Pour illustrer le flux de transaction de l'initiation par un utilisateur à la confirmation sur Ethereum, considérez les étapes suivantes :
Cet outline suppose que la transaction de l'utilisateur n'active pas le protocole de messagerie inter-shard. Cependant, dans ce cas, le flux de la transaction reste le même avec la différence qu'une transaction d'utilisateur peut déclencher la création de nouvelles transactions sur d'autres shards.
Avec tous les comptes étant répartis entre les fragments, cela peut sembler similaire au problème de fragmentation des données rencontré dans l'approche des rollups spécifiques à l'application. Cependant, la différence clé réside dans la manière dont la communication entre les fragments est gérée : elle est intégrée directement dans le protocole global, plutôt que d'être gérée par des ponts externes séparés.
Pour garantir la sécurité de chaque shard secondaire, son comité de validateurs est tenu de prouver ses transitions d'état au shard primaire pour s'assurer qu'aucune fraude n'a eu lieu au sein d'un groupe de validateurs plus petit. Chaque comité de validateurs de shard a des tâches supplémentaires au-delà de la maintenance du shard. Les validateurs sont responsables du suivi de types spécifiques d'événements, à savoir les messages entre shards, au sein des "shards proches". Les shards proches sont déterminés en fonction de la distance de Hamming dans les identifiants de shard.
=nil;s zkEVM est un zkEVM de type 1 compilé avec zkLLVM. Pour comprendre les différences entre les zkEVM plus traditionnels et le zkEVM de =nil;, nous devons discuter des limitations associées au processus de définition de circuit qui sous-tend les zkEVM. Le circuit zkEVM est une partie critique, responsable de la preuve de transition d'état pour être considéré comme correct, étant généralement défini avec un zkDSL personnalisé ou simplement une bibliothèque. Cette méthode de définition de circuit soulève des problèmes liés à :
=nil; zkEVM adresse efficacement tous ces défis en étant :
zkEVM compilé via zkLLVM est sécurisé par conception, en tirant parti d'evmone pour garantir une cohérence totale avec l'EVM utilisé en production sur Ethereum. Le zkLLVM (C++ ou Rust) se compile automatiquement en circuit, ce qui signifie que les erreurs humaines sont éliminées du processus de définition du circuit.
De plus, parce que =nil; zkEVM est compilé via zkLLVM, il est naturellement plus flexible (et donc, à l'épreuve du futur) que les circuits définis manuellement car il est facilement ajustable et la génération de circuits est automatique. Il est également plus auditable, ce qui signifie que sa sécurité ne se fait pas au détriment de l'inclusion des derniers EIP ajoutés à Ethereum.
Comme le fragment principal et les fragments secondaires diffèrent en ce qui concerne leurs tâches dédiées - les fragments secondaires se concentrent sur le traitement des transactions tandis que le fragment principal se concentre sur la synchronisation des données - ils ont des approches différentes de la disponibilité des données (DA), ce qui aide à récupérer les données d'état dans des situations d'urgence. Cela signifie :
Cet arrangement est établi en lançant deux types de shards au début : ceux avec une solution DA externe distincte et ceux sans. Dans les phases suivantes, seuls les shards de la même catégorie DA peuvent être fusionnés. Cela signifie que lors de sa création, chaque compte doit être associé à une catégorie DA spécifique.
De plus, ce cadre peut être étendu pour inclure d'autres types de DA.
Un de nos objectifs principaux est d'optimiser la composabilité des applications et d'éviter la fragmentation de la liquidité, donc naturellement l'approche zkSharding serait incomplète sans un accès sans confiance à l'état d'Éthereum. Cela signifie =nil; offre une pleine composabilité et une intégration transparente avec Éthereum grâce au module Data Provider.
Le fournisseur de données fonctionne de manière indépendante du stockage des données du shard, synchronise ses informations avec une base de données externe et injecte l'empreinte digitale d'Éthereum de l'état de la dernière base de données surveillée (représentée par le hachage de bloc d'Éthereum) dans le bloc du shard. L'état le plus récent de cette base de données reçoit une validation du module de confirmation, qui utilise un zkBridge avec la preuve de consensus Casper FFG d'Éthereum.
=nil; et zkSharding sont le fruit des produits que la Fondation =nil; a développés au cours des 4 dernières années. Son objectif est d'être la première solution composable, évolutive et universelle de couche 2 zkRollup pour Ethereum. Nous sommes impatients de partager plus de détails sur la mise en œuvre au cours des prochains mois. Assurez-vous de suivre notre Twitter pour rester informé de nos progrès !
Pour les personnes techniquement inclinées, nous avons développé un manuel séparé et completqui explore en détail zkSharding. Ce manuel est votre passerelle pour comprendre les subtilités de cette approche, équipé de tous les détails techniques et préliminaires dont vous avez besoin.
Plongez maintenant dans notre introduction technique et participez à la conversation surDiscordetTelegram. Explorons ensemble les possibilités illimitées du zkSharding !