Et si vous perdiez la mémoire toutes les heures ? Et vous devez constamment demander à quelqu'un de vous dire ce que vous avez fait ? Tel est l'état actuel des contrats intelligents. Sur les blockchains comme Ethereum, les contrats intelligents ne peuvent pas accéder directement aux états au-delà de 256 blocs. Ce problème est encore exacerbé dans l'écosystème multichaîne, où la récupération et la vérification des données à travers les différentes couches d'exécution sont encore plus difficiles.
En 2020, Vitalik Buterin et Tomasz Stanczak ont proposé un moyen d'accéder aux données dans le temps. Alors que l'EIP est devenu stagnant, son besoin a refait surface dans le monde multichaîne centré sur les rouleaux. Aujourd'hui, les preuves de stockage ont émergé comme une frontière, pour donner de la conscience et de la mémoire aux contrats intelligents.
Les dapps peuvent accéder aux données et à l'état de plusieurs manières. Toutes ces approches exigent que l'application fasse confiance à des personnes/entités, à une sécurité économique cryptographique ou à un code, et présentent certains compromis :
Compte tenu des difficultés et des limites de ces solutions, il est manifestement nécessaire de stocker et de fournir des hachages de blocs sur la chaîne. C'est là qu'interviennent les preuves de stockage. Afin de mieux comprendre les preuves de stockage, examinons rapidement le stockage des données dans les blockchains.
Une blockchain est une base de données publique qui est mise à jour et partagée par de nombreux ordinateurs au sein d'un réseau. Les données et l'état sont stockés dans des groupes consécutifs appelés blocs et chaque bloc référence cryptographiquement son parent en stockant le hachage de l'en-tête du bloc précédent.
Prenons l'exemple du bloc Ethereum. Ethereum utilise un type particulier d'arbre de Merkle appelé "Merkle Patricia tree" (MPT). Les en-têtes de blocs Ethereum contiennent les racines de quatre tentatives Merkle-Patricia différentes, à savoir Trie d'état, Trie de stockage, Trie de recettes et Trie de transactions. Ces 4 essais codent les mappages qui comprennent toutes les données Ethereum. Les arbres de Merkle sont utilisés en raison de leur efficacité dans le stockage des données. En utilisant des hachages récursifs, seul le hachage de la racine doit être stocké, ce qui permet d'économiser beaucoup d'espace. Ils permettent à quiconque de prouver l'existence d'un élément dans l'arbre en prouvant que le hachage récursif des nœuds aboutit au même hachage de la racine. Les preuves de Merkle permettent aux clients légers sur Ethereum d'obtenir des réponses à des questions telles que :
Au lieu de télécharger chaque transaction et chaque bloc, un "client léger" peut seulement télécharger la chaîne des en-têtes de blocs et vérifier les informations à l'aide de preuves de Merkle. Cela rend le processus global très efficace. Consultez ce blog de Vitalik et l'article de recherche de Maven11 pour mieux comprendre la mise en œuvre, les avantages et les défis associés aux Merkle Trees.
Les preuves de stockage nous permettent de prouver que quelque chose est engagé dans la base de données et qu'il est également valide en utilisant des engagements cryptographiques. Si nous pouvons fournir une telle preuve, il s'agit d'une affirmation vérifiable que quelque chose s'est produit sur la blockchain.
Les preuves de stockage permettent deux fonctions principales :
Les preuves de stockage vérifient à un niveau très élevé si le bloc spécifique fait partie de l'histoire canonique de la blockchain et vérifient ensuite si les données spécifiques demandées font partie du bloc. Cet objectif pourrait être atteint par les moyens suivants
Parmi les projets qui adoptent cette approche, citons Herodotus, Lagrange, Axiom, Hyper Oracle, Brevis Network et nil foundation. Alors que des efforts considérables sont déployés pour rendre les applications conscientes de l'état de plusieurs blockchains, l'IBC (Inter Blockchain Communication) se distingue comme une norme d'interopérabilité qui permet des applications telles que ICQ (Interchain queries) et ICA (Interchain accounts). L'ICQ permet aux applications de la chaîne A d'interroger l'état de la chaîne B en incluant la requête dans un simple paquet IBC et l'ICA permet à une blockchain de contrôler en toute sécurité un compte sur une autre blockchain. En les combinant, il est possible d'obtenir des cas d'utilisation inter-chaînes intéressants. Les fournisseurs de RaaS comme Saga offrent ces fonctionnalités à toutes leurs chaînes d'applications par défaut en utilisant l'IBC.
Il existe de nombreuses façons d'optimiser les preuves de stockage afin de trouver le bon équilibre entre la consommation de mémoire, le temps de preuve, le temps de vérification, l'efficacité de calcul et l'expérience du développeur. Le processus global peut être divisé en trois sous-processus principaux.
Accès aux données : Dans ce sous-processus, le fournisseur de services accède aux en-têtes de blocs de la chaîne source de manière native sur la couche d'exécution ou en maintenant un cache sur la chaîne. Pour l'accès aux données entre les chaînes, il est nécessaire de vérifier le consensus de la chaîne source sur la chaîne de destination. Voici quelques-unes des approches et des optimisations adoptées :
Outre l'accès aux données, les contrats intelligents devraient également être en mesure d'effectuer des calculs arbitraires au-dessus des données. Si certains cas d'utilisation ne nécessitent pas de calcul, il s'agit d'un service à valeur ajoutée important pour de nombreux autres cas d'utilisation. De nombreux fournisseurs de services permettent d'effectuer des calculs sur les données, car une preuve zk du calcul peut être générée et fournie sur la chaîne pour en vérifier la validité. Comme les solutions AMP existantes telles que Axelar, LayerZero, Polyhedra Network pourraient potentiellement être utilisées pour l'accès aux données, le traitement des données pourrait devenir un facteur de différenciation pour les fournisseurs de services de preuve de stockage.
Hyper Oracle, par exemple, permet aux développeurs de définir des calculs personnalisés hors chaîne avec JavaScript. Brevis a conçu une place de marché ouverte de moteurs de requête ZK qui accepte les requêtes de données des dApp et les traite à l'aide des en-têtes de blocs attestés. Le contrat intelligent envoie une requête de données, qui est récupérée par un prouveur sur la place de marché. Le prouveur génère une preuve basée sur l'entrée de la requête, les en-têtes de blocs pertinents (provenant de la couche d'agrégation de Brevis) et les résultats. Lagrange a introduit ZK Big Data Stack pour prouver les modèles de programmation distribués comme SQL, MapReduce et Spark/RDD. Les preuves sont modulaires et peuvent être générées à partir de n'importe quel en-tête de bloc provenant de ponts inter-chaînes et de protocoles AMP existants. ZK MapReduce, le premier produit de la pile BigData de Lagrange ZK, est un moteur de calcul distribué (basé sur le modèle de programmation MapReduce bien connu) pour prouver les résultats de calculs impliquant des ensembles importants de données multi-chaînes. Par exemple, une seule preuve ZKMR peut être utilisée pour prouver les changements de liquidité d'un DEX déployé sur 4 à 5 chaînes sur une période donnée. Pour les requêtes relativement simples, le calcul peut également être effectué directement sur la chaîne, comme le fait actuellement Herodotus.
Les preuves d'état et de stockage peuvent débloquer de nombreux nouveaux cas d'utilisation pour les contrats intelligents au niveau de l'application, de l'intergiciel et de l'infrastructure. En voici quelques-unes :
La gouvernance :
Toutes les preuves ci-dessus peuvent être utilisées pour fournir une expérience personnalisée aux utilisateurs. Les dapps pourraient proposer des réductions ou des privilèges pour fidéliser les traders ou les utilisateurs expérimentés et offrir une expérience utilisateur simplifiée aux novices.
Les deux derniers cas d'utilisation nécessiteront la mise à jour de la preuve chaque fois qu'un nouveau bloc est ajouté à la chaîne source.
La sensibilisation permet aux entreprises technologiques de mieux servir leurs clients. De l'identité de l'utilisateur au comportement d'achat en passant par les graphes sociaux, les entreprises technologiques exploitent la connaissance pour débloquer des capacités telles que le ciblage de précision, la segmentation de la clientèle et le marketing viral. Les entreprises technologiques traditionnelles ont besoin de l'autorisation explicite de leurs utilisateurs et doivent faire preuve de prudence dans la gestion des données des utilisateurs. Cependant, toutes les données des utilisateurs sur les blockchains sans permission sont accessibles au public sans nécessairement révéler l'identité de l'utilisateur. Les contrats intelligents devraient pouvoir exploiter les données publiques disponibles pour mieux servir les utilisateurs. Le développement et l'adoption d'écosystèmes plus spécialisés feront de la connaissance des états à travers le temps et les blockchains un problème de plus en plus important à résoudre. Les preuves de stockage peuvent permettre à Ethereum de devenir une couche d'identité et de propriété d'actifs, ainsi qu'une couche de règlement. Les utilisateurs pourraient conserver leur identité et leurs actifs clés sur Ethereum, qui pourraient être utilisés sur plusieurs blockchains sans avoir à relier les actifs en permanence. Nous restons enthousiastes à l'idée des nouvelles possibilités et des nouveaux cas d'utilisation qui se présenteront à l'avenir.
Et si vous perdiez la mémoire toutes les heures ? Et vous devez constamment demander à quelqu'un de vous dire ce que vous avez fait ? Tel est l'état actuel des contrats intelligents. Sur les blockchains comme Ethereum, les contrats intelligents ne peuvent pas accéder directement aux états au-delà de 256 blocs. Ce problème est encore exacerbé dans l'écosystème multichaîne, où la récupération et la vérification des données à travers les différentes couches d'exécution sont encore plus difficiles.
En 2020, Vitalik Buterin et Tomasz Stanczak ont proposé un moyen d'accéder aux données dans le temps. Alors que l'EIP est devenu stagnant, son besoin a refait surface dans le monde multichaîne centré sur les rouleaux. Aujourd'hui, les preuves de stockage ont émergé comme une frontière, pour donner de la conscience et de la mémoire aux contrats intelligents.
Les dapps peuvent accéder aux données et à l'état de plusieurs manières. Toutes ces approches exigent que l'application fasse confiance à des personnes/entités, à une sécurité économique cryptographique ou à un code, et présentent certains compromis :
Compte tenu des difficultés et des limites de ces solutions, il est manifestement nécessaire de stocker et de fournir des hachages de blocs sur la chaîne. C'est là qu'interviennent les preuves de stockage. Afin de mieux comprendre les preuves de stockage, examinons rapidement le stockage des données dans les blockchains.
Une blockchain est une base de données publique qui est mise à jour et partagée par de nombreux ordinateurs au sein d'un réseau. Les données et l'état sont stockés dans des groupes consécutifs appelés blocs et chaque bloc référence cryptographiquement son parent en stockant le hachage de l'en-tête du bloc précédent.
Prenons l'exemple du bloc Ethereum. Ethereum utilise un type particulier d'arbre de Merkle appelé "Merkle Patricia tree" (MPT). Les en-têtes de blocs Ethereum contiennent les racines de quatre tentatives Merkle-Patricia différentes, à savoir Trie d'état, Trie de stockage, Trie de recettes et Trie de transactions. Ces 4 essais codent les mappages qui comprennent toutes les données Ethereum. Les arbres de Merkle sont utilisés en raison de leur efficacité dans le stockage des données. En utilisant des hachages récursifs, seul le hachage de la racine doit être stocké, ce qui permet d'économiser beaucoup d'espace. Ils permettent à quiconque de prouver l'existence d'un élément dans l'arbre en prouvant que le hachage récursif des nœuds aboutit au même hachage de la racine. Les preuves de Merkle permettent aux clients légers sur Ethereum d'obtenir des réponses à des questions telles que :
Au lieu de télécharger chaque transaction et chaque bloc, un "client léger" peut seulement télécharger la chaîne des en-têtes de blocs et vérifier les informations à l'aide de preuves de Merkle. Cela rend le processus global très efficace. Consultez ce blog de Vitalik et l'article de recherche de Maven11 pour mieux comprendre la mise en œuvre, les avantages et les défis associés aux Merkle Trees.
Les preuves de stockage nous permettent de prouver que quelque chose est engagé dans la base de données et qu'il est également valide en utilisant des engagements cryptographiques. Si nous pouvons fournir une telle preuve, il s'agit d'une affirmation vérifiable que quelque chose s'est produit sur la blockchain.
Les preuves de stockage permettent deux fonctions principales :
Les preuves de stockage vérifient à un niveau très élevé si le bloc spécifique fait partie de l'histoire canonique de la blockchain et vérifient ensuite si les données spécifiques demandées font partie du bloc. Cet objectif pourrait être atteint par les moyens suivants
Parmi les projets qui adoptent cette approche, citons Herodotus, Lagrange, Axiom, Hyper Oracle, Brevis Network et nil foundation. Alors que des efforts considérables sont déployés pour rendre les applications conscientes de l'état de plusieurs blockchains, l'IBC (Inter Blockchain Communication) se distingue comme une norme d'interopérabilité qui permet des applications telles que ICQ (Interchain queries) et ICA (Interchain accounts). L'ICQ permet aux applications de la chaîne A d'interroger l'état de la chaîne B en incluant la requête dans un simple paquet IBC et l'ICA permet à une blockchain de contrôler en toute sécurité un compte sur une autre blockchain. En les combinant, il est possible d'obtenir des cas d'utilisation inter-chaînes intéressants. Les fournisseurs de RaaS comme Saga offrent ces fonctionnalités à toutes leurs chaînes d'applications par défaut en utilisant l'IBC.
Il existe de nombreuses façons d'optimiser les preuves de stockage afin de trouver le bon équilibre entre la consommation de mémoire, le temps de preuve, le temps de vérification, l'efficacité de calcul et l'expérience du développeur. Le processus global peut être divisé en trois sous-processus principaux.
Accès aux données : Dans ce sous-processus, le fournisseur de services accède aux en-têtes de blocs de la chaîne source de manière native sur la couche d'exécution ou en maintenant un cache sur la chaîne. Pour l'accès aux données entre les chaînes, il est nécessaire de vérifier le consensus de la chaîne source sur la chaîne de destination. Voici quelques-unes des approches et des optimisations adoptées :
Outre l'accès aux données, les contrats intelligents devraient également être en mesure d'effectuer des calculs arbitraires au-dessus des données. Si certains cas d'utilisation ne nécessitent pas de calcul, il s'agit d'un service à valeur ajoutée important pour de nombreux autres cas d'utilisation. De nombreux fournisseurs de services permettent d'effectuer des calculs sur les données, car une preuve zk du calcul peut être générée et fournie sur la chaîne pour en vérifier la validité. Comme les solutions AMP existantes telles que Axelar, LayerZero, Polyhedra Network pourraient potentiellement être utilisées pour l'accès aux données, le traitement des données pourrait devenir un facteur de différenciation pour les fournisseurs de services de preuve de stockage.
Hyper Oracle, par exemple, permet aux développeurs de définir des calculs personnalisés hors chaîne avec JavaScript. Brevis a conçu une place de marché ouverte de moteurs de requête ZK qui accepte les requêtes de données des dApp et les traite à l'aide des en-têtes de blocs attestés. Le contrat intelligent envoie une requête de données, qui est récupérée par un prouveur sur la place de marché. Le prouveur génère une preuve basée sur l'entrée de la requête, les en-têtes de blocs pertinents (provenant de la couche d'agrégation de Brevis) et les résultats. Lagrange a introduit ZK Big Data Stack pour prouver les modèles de programmation distribués comme SQL, MapReduce et Spark/RDD. Les preuves sont modulaires et peuvent être générées à partir de n'importe quel en-tête de bloc provenant de ponts inter-chaînes et de protocoles AMP existants. ZK MapReduce, le premier produit de la pile BigData de Lagrange ZK, est un moteur de calcul distribué (basé sur le modèle de programmation MapReduce bien connu) pour prouver les résultats de calculs impliquant des ensembles importants de données multi-chaînes. Par exemple, une seule preuve ZKMR peut être utilisée pour prouver les changements de liquidité d'un DEX déployé sur 4 à 5 chaînes sur une période donnée. Pour les requêtes relativement simples, le calcul peut également être effectué directement sur la chaîne, comme le fait actuellement Herodotus.
Les preuves d'état et de stockage peuvent débloquer de nombreux nouveaux cas d'utilisation pour les contrats intelligents au niveau de l'application, de l'intergiciel et de l'infrastructure. En voici quelques-unes :
La gouvernance :
Toutes les preuves ci-dessus peuvent être utilisées pour fournir une expérience personnalisée aux utilisateurs. Les dapps pourraient proposer des réductions ou des privilèges pour fidéliser les traders ou les utilisateurs expérimentés et offrir une expérience utilisateur simplifiée aux novices.
Les deux derniers cas d'utilisation nécessiteront la mise à jour de la preuve chaque fois qu'un nouveau bloc est ajouté à la chaîne source.
La sensibilisation permet aux entreprises technologiques de mieux servir leurs clients. De l'identité de l'utilisateur au comportement d'achat en passant par les graphes sociaux, les entreprises technologiques exploitent la connaissance pour débloquer des capacités telles que le ciblage de précision, la segmentation de la clientèle et le marketing viral. Les entreprises technologiques traditionnelles ont besoin de l'autorisation explicite de leurs utilisateurs et doivent faire preuve de prudence dans la gestion des données des utilisateurs. Cependant, toutes les données des utilisateurs sur les blockchains sans permission sont accessibles au public sans nécessairement révéler l'identité de l'utilisateur. Les contrats intelligents devraient pouvoir exploiter les données publiques disponibles pour mieux servir les utilisateurs. Le développement et l'adoption d'écosystèmes plus spécialisés feront de la connaissance des états à travers le temps et les blockchains un problème de plus en plus important à résoudre. Les preuves de stockage peuvent permettre à Ethereum de devenir une couche d'identité et de propriété d'actifs, ainsi qu'une couche de règlement. Les utilisateurs pourraient conserver leur identité et leurs actifs clés sur Ethereum, qui pourraient être utilisés sur plusieurs blockchains sans avoir à relier les actifs en permanence. Nous restons enthousiastes à l'idée des nouvelles possibilités et des nouveaux cas d'utilisation qui se présenteront à l'avenir.