Aleo est un projet blockchain axé sur la protection de la vie privée, atteignant une confidentialité et une évolutivité plus élevées grâce à la technologie de preuve sans connaissance (ZKP). L'idée principale d'Aleo est de permettre aux utilisateurs d'authentifier et de traiter des données sans révéler leurs données personnelles.

Cet article présente principalement les grandes lignes du projet Aleo et ses derniers progrès, et fournit une explication détaillée de la mise à jour de l'algorithme de puzzle qui préoccupe beaucoup le marché.

Un aperçu du dernier algorithme

Le réseau Aleo génère aléatoirement un circuit ZK toutes les heures ; les mineurs doivent essayer différentes occasions comme entrée du circuit pendant cette heure, calculer le témoin (c'est-à-dire toutes les variables du circuit, ce processus de calcul est également appelé synthèse) et trouvez la racine Merkle pour le témoin. Enfin, déterminez si elle répond aux exigences de difficulté d'extraction. En raison du caractère aléatoire du circuit, cet algorithme de minage n'est pas convivial pour les GPU et a de grandes difficultés à calculer l'accélération.

Contexte du financement

Aleo a réalisé une ronde de financement de série A de 28 millions de dollars en 2021, dirigée par a16z, et une ronde de financement de série B de 200 millions de dollars en 2024, avec des investisseurs dont Kora Management, SoftBank Vision Fund 2, Tiger Global, Sea Capital, Slow Ventures et Samsung. Ensuite, entre autres. Le tour de table valorise Aleo à 1,45 milliard de dollars.

Aperçu du projet

Confidentialité

Au cœur d'Aleo se trouve la technologie de preuve à connaissance nulle (ZKP), qui permet d'effectuer des transactions et l'exécution de contrats intelligents tout en préservant la confidentialité. Les détails de la transaction de l'utilisateur, tels que l'expéditeur et le montant de la transaction, sont masqués par défaut. Cette conception protège non seulement la vie privée des utilisateurs, mais permet également une divulgation sélective lorsque cela est nécessaire, ce qui est très approprié pour le développement d'applications DeFi. Ses principaux composants comprennent :

  • Langage compilé Leo : adapté du langage Rust et spécifiquement utilisé pour développer des applications sans connaissance (ZKApps), réduisant ainsi les exigences des développeurs en matière de connaissances en cryptographie.

  • snarkVM et snarkOS : snarkVM permet d'effectuer des calculs hors chaîne et seuls les résultats des calculs sont vérifiés en chaîne, améliorant ainsi l'efficacité. snarkOS garantit la sécurité des données et des calculs et permet l'exécution de fonctions sans autorisation.

  • zkCloud : fournit un environnement informatique hors chaîne sécurisé et privé, prenant en charge les interactions de programmation entre les utilisateurs, les organisations et les DAO.

Aleo fournit également un environnement de développement intégré (IDE) et un kit de développement logiciel (SDK) pour aider les développeurs à écrire et publier rapidement des applications. De plus, les développeurs peuvent déployer des applications dans le registre des programmes d'Aleo sans recourir à des tiers, ce qui est pratique. Risque réduit pour la plate-forme ; .

Évolutivité

Aleo adopte une méthode de traitement hors chaîne. La transaction est d'abord calculée sur l'appareil de l'utilisateur pour le prouver, puis seul le résultat de la vérification est téléchargé sur la blockchain. Cette méthode améliore considérablement la vitesse de traitement des transactions et l’évolutivité du système, et évite la congestion du réseau et les frais élevés similaires à ceux d’Ethereum.

mécanisme de consensus

Aleo présente AleoBFT, un mécanisme de consensus d'architecture hybride qui combine la finalité instantanée des validateurs avec la puissance de calcul des prouveurs. AleoBFT augmente non seulement la décentralisation du réseau, mais améliore également les performances et la sécurité.

  • Finalité rapide des blocs : AleoBFT garantit que chaque bloc est confirmé immédiatement après la génération, améliorant ainsi la stabilité des nœuds et l'expérience utilisateur.

  • Garantie de décentralisation : en séparant la production de blocs de la génération de coinbase, le vérificateur est responsable de la génération des blocs et le prouveur effectue des calculs de preuve pour empêcher quelques entités de monopoliser le réseau.

  • Mécanisme d'incitation : les vérificateurs et les certificateurs partagent des récompenses de bloc ; les certificateurs sont encouragés à devenir vérificateurs en promettant des jetons, améliorant ainsi la décentralisation et la puissance de calcul du réseau.

Aleo permet aux développeurs de créer des applications qui ne sont pas liées au gaz, ce qui le rend particulièrement adapté aux applications à long terme telles que l'apprentissage automatique.

Progrès en cours

Aleo lancera son testnet incitatif le 1er juillet. Voici quelques dernières informations importantes :

  • Vote ARC-100 réussi : Le vote pour l'ARC-100 ("Proposition de bonnes pratiques de conformité pour les développeurs et opérateurs Aleo", impliquant des aspects de conformité, de verrouillage et de paiement différé des fonds sur le réseau Aleo, etc.) est terminé et adopté. L’équipe procède aux derniers ajustements.

  • Programme d'incitation aux validateurs : ce programme sera lancé le 1er juillet pour valider de nouveaux mécanismes de puzzle. Le programme se déroulera jusqu'au 15 juillet, période pendant laquelle 1 million de points Aleo seront distribués en récompense. Le pourcentage de points générés par un nœud déterminera sa part de récompenses, chaque validateur devant gagner au moins 100 jetons pour recevoir des récompenses. Les détails spécifiques n’ont pas encore été finalisés.

  • Offre initiale et offre en circulation : L’offre initiale est de 1,5 milliard de jetons et l’offre initiale en circulation est d’environ 10 % (pas encore finalisée). Les jetons, principalement dérivés des missions Coinbase (75 millions), seront distribués au cours des six premiers mois et comprendront des récompenses pour le jalonnement, l'exécution de validateurs et la validation de nœuds.

  • Réinitialisation bêta de Testnet : il s'agit de la dernière réinitialisation du réseau, aucune nouvelle fonctionnalité ne sera ajoutée une fois terminée et le réseau sera similaire au réseau principal. Réinitialisez pour ajouter ARC-41 et une nouvelle fonctionnalité de puzzle.

  • Gel du code : le gel du code a été terminé il y a une semaine.

  • Plan d'expansion des nœuds de validation : le nombre initial de nœuds de validation est de 15, avec l'objectif de passer à 50 d'ici l'année et d'atteindre à terme 500. Il faut 10 000 tokens pour devenir délégant et 10 millions de tokens pour devenir validateur, et ces montants vont diminuer progressivement au fil du temps.

Interprétation des mises à jour de l'algorithme

Alors qu'Aleo a récemment annoncé les dernières nouvelles de testnet, il a également mis à jour la dernière version de l'algorithme de puzzle. Le nouvel algorithme ne se concentre plus sur la génération de résultats de preuve zk et a supprimé MSM et NTT (qui sont tous deux des calculs fortement utilisés dans zk). génération de preuves), les précédents participants du testnet ont optimisé l'efficacité de l'algorithme pour augmenter les revenus miniers), en se concentrant sur la génération de témoins de données intermédiaires avant de générer la preuve. Nous donnerons une brève introduction au dernier algorithme après avoir fait référence aux spécifications et au code officiels du puzzle.

processus de consensus

Au niveau du protocole de consensus, le prouveur et le validateur dans son processus sont respectivement responsables de la génération des résultats de calcul, de la génération de solutions et de blocs, de l'agrégation et de la solution de packaging. Le processus est le suivant :

  1. Prover calcule le puzzle pour construire des solutions et les diffuse sur le réseau

  2. Le validateur regroupe les transactions et les solutions dans le nouveau bloc suivant, garantissant que le nombre de solutions ne dépasse pas la limite consensuelle (MAX_SOLUTIONS)

  3. La légalité de la solution doit être vérifiée pour que son epoch_hash soit conforme au last_epoch_hash maintenu par le validateur et que sa proof_target calculée soit conforme au last_proof_target maintenu par le validateur dans le réseau. En même temps, le nombre de solutions contenues dans le bloc. est inférieur à la limite consensuelle.

  4. Les solutions efficaces peuvent recevoir des récompenses consensuelles

Casse-tête de synthèse

Le cœur de la dernière version de l'algorithme s'appelle Synthesis Puzzle. Son cœur est de générer un EpochProgram commun pour chaque époque en construisant un circuit de preuve R 1 CS pour l'entrée et EpochProgram, l'affectation R 1 CS correspondante (c'est-à-dire). le témoin que tout le monde a mentionné) est généré. Et en tant que nœud feuille de l'arbre Merkle, après avoir calculé tous les nœuds feuilles, la racine Merkle est générée et convertie en proof_target de la solution. Le processus détaillé et les spécifications pour la construction du puzzle de synthèse sont les suivants :

1. Chaque calcul de puzzle est appelé un nonce, qui est construit à partir de l'adresse qui reçoit la récompense minière, de epoch_hash et d'un compteur de nombres aléatoires. Chaque fois qu'une nouvelle solution doit être calculée, un nouveau nonce peut être obtenu en mettant à jour le compteur.

2. À chaque époque, l'EpochProgram que tous les prouveurs du réseau doivent calculer est le même. Il est échantillonné à partir du jeu d'instructions par le nombre aléatoire généré par l'epoch_hash actuel.

  • Le jeu d'instructions est fixe. Chaque instruction contient une ou plusieurs opérations de calcul. Chaque instruction a un poids et un nombre d'opérations prédéfinis.

  • Lors de l'échantillonnage, un nombre aléatoire est généré en fonction de l'epoch_hash actuel. Selon le nombre aléatoire, les instructions sont obtenues à partir du jeu d'instructions combinées avec le poids et disposées dans l'ordre. L'échantillonnage s'arrête une fois que le nombre d'opérations cumulées atteint 97.

  • Combinez toutes les instructions dans EpochProgram

3. Utilisez Nonce comme graine de nombre aléatoire pour générer l'entrée d'EpochProgram

4. Agréger R 1 CS et l'entrée correspondant à EpochProgram, et effectuer le calcul du témoin (affectation R 1 CS)

5. Une fois tous les témoins calculés, ces témoins seront convertis en séquences de nœuds feuilles de l'arbre merkle correspondant. L'arbre merkle est un arbre K-ary Merkle à 8 éléments avec une profondeur de 8.

6. Calculez la racine merkle et convertissez-la en proof_target de la solution, et déterminez si elle correspond au last_proof_target de l'époque actuelle. Si elle répond au calcul, le calcul est réussi. Soumettez l'adresse de récompense, l'epoch_hash et le compteur requis pour la construction. l'entrée ci-dessus comme solution et diffusez-la.

7. À la même époque, l'entrée d'EpochProgram peut être mise à jour en itérant un compteur pour effectuer plusieurs calculs de solutions.

Changements et impacts miniers

Après cette mise à jour, le puzzle est passé de la génération de preuves à la génération de témoins. La logique de calcul de toutes les solutions à chaque époque est la même, mais la logique de calcul des différentes époques est assez différente.

À partir du réseau de test précédent, nous pouvons constater que de nombreuses méthodes d'optimisation se concentrent sur l'utilisation du GPU pour optimiser les calculs MSM et NTT dans la phase de génération de preuves afin d'améliorer l'efficacité du minage. Cette mise à jour abandonne complètement cette partie du calcul en même temps ; le processus de génération de témoins En raison de l'exécution d'un programme qui change avec l'époque, les instructions qu'il contient auront certaines dépendances sur l'exécution en série, donc réaliser la parallélisation est un grand défi.