Qu'est-ce que les preuves de stockage et comment peuvent-elles améliorer les Oracles ?

Initialement publié en anglais par StarkWare le 21 Avril, 2023

Accès à l'information inter-chaînes sans confiance sur Starknet.

Introduction

Les preuves de stockage sont une méthode cryptographique permettant de suivre les informations de la blockchain afin qu'elles puissent être partagées entre les chaînes. Similaires aux oracles, les preuves de stockage fournissent une preuve de la véracité de l'information. Cependant, contrairement aux oracles, elles ne nécessitent pas de faire confiance à une tierce partie pour cette preuve; avec les preuves de stockage, la confiance est intégrée dans le stockage lui-même.

Dans certains cas, les preuves de stockage peuvent remplacer les oracles. Dans d'autres cas, elles peuvent les améliorer et ouvrir de nouveaux cas d'utilisation de la blockchain qui n'étaient pas possibles auparavant.

Examinons donc en détail les preuves de stockage : ce qu'elles sont, comment elles fonctionnent, leurs cas d'utilisation, et comment elles peuvent améliorer (et parfois remplacer) les oracles.

Qu'est-ce que les preuves de stockage?

Les preuves de stockage permettent d'ouvrir des engagements cryptographiques d'état. Elles peuvent être optimisées en les associant avec des S[N/T]ARKS. Ces preuves de validité démontrent qu'un état particulier existait et était valide à un bloc particulier dans le passé.

Fondamentalement, les blockchains sont des bases de données contenant des données engagées de manière cryptographique à l'aide d'arbres Merkle, d'arbres Patricia Merkle, d'arbres Verkle, etc. Puisque toutes les données sont engagées, nous pouvons prouver que certaines informations sont encapsulées dans un état donné. Cependant, avec des schémas d'engagement simples, la taille de cette preuve devient plus importante à mesure que la taille des données qu'elle contient augmente. La vérification de telles preuves on-chain devient alors trop coûteuse pour être pratique.

D'un autre côté, les preuves de stockage, lorsqu'elles sont utilisées conjointement avec des STARKs ou des SNARKs, peuvent être relativement petites et permettent de vérifier un morceau spécifique d'état, à un moment précis, et sur n'importe quel domaine, sans avoir à faire confiance à une tierce partie. Au lieu d'utiliser des tierces parties, elles reposent sur la sécurité de la chaîne sous-jacente elle-même.

Pourquoi est-ce important? Aujourd'hui, Ethereum n'est plus la chaîne monolithique simple (L1) qu'elle était il y a plusieurs années. Avec l'avènement des solutions L2, les données sont désormais réparties sur plusieurs chaînes.

Il n'est plus possible de faire des hypothèses synchrones sur l'état de la chaîne. De nombreuses solutions de partage de données sont désormais opérationnelles, telles que les systèmes de messagerie L1->L2, les ponts entre chaînes et les oracles. Toutefois, le problème avec ces solutions actuelles est qu'elles incluent la confiance en une tierce partie telle que les relais, les signataires multisig et les comités. Les preuves de stockage nous permettent de valider l'état d'une blockchain à n'importe quel moment en utilisant des engagements cryptographiques, sans avoir à faire confiance à une tierce partie.

Les cas d'utilisation des preuves de stockage

Étant donné que les preuves de stockage nous permettent de "compresser" efficacement une blockchain et de transmettre les données ailleurs, elles ont de nombreuses applications. Le coût abordable de vérification, une propriété intégrale des preuves de stockage, permet à la preuve d'être validée sur la chaîne de destination, réduisant ainsi le besoin de développer des systèmes de messagerie entre chaînes.

Les cas d'utilisation potentiels comprennent :

  • L'accès général à l'information d'une chaîne à partir d'une autre sur l'état et les transactions sur la blockchain.

  • Les systèmes de vote inter-chaînes simplifiés.

  • Une alternative aux ponts entre chaînes.

  • Une UX améliorée pour les cas d'utilisation de l'abstraction de compte (AA)

Un exemple de preuve de stockage

Générer des preuves de stockage sur des chaînes compatibles EVM est simple. Par exemple, la bibliothèque Web3.js possède la fonction getProof qui peut générer une preuve de l'état d'un contrat sur Ethereum (et d'autres chaînes compatibles EVM comme Polygon ou BSC). Pour utiliser cette fonction, il est nécessaire de transmettre à la fonction l'adresse du contrat et l'emplacement de stockage pour le contrat.

Sur Ethereum, les contrats intelligents utilisent une key-value store pour stocker les données dans leur stockage. Chaque morceau de donnée est stocké dans un emplacement spécifique connu sous le nom de "slot de stockage". Ces slots de stockage sont des emplacements mémoire à l'intérieur du stockage du contrat et sont identifiés par un index unique. Pour mieux comprendre, examinons un exemple de contrat intelligent avec le code suivant, déployé sur le réseau principal Ethereum à l'adresse 0xcc…da8b.

La variable owner serait stockée dans l'emplacement 0. Pour prouver que le owner de ce contrat était l'adresse A, nous pouvons utiliser la fonction getProof de la manière suivante :

Le rendu du code ci-dessus ressemble à ceci :

La "storageProof" renvoyée contient la preuve de stockage pour la variable "owner". Étant donné qu'Ethereum utilise des arbres Merkle Patricia pour s'engager envers son état, l'état des comptes et leur stockage, la preuve de stockage générée peut être utilisée pour prouver un emplacement de stockage (ou un état de compte). Cependant, comme mentionné précédemment, ces preuves ne sont pas suffisamment évolutives pour discuter des transferts de messages entre chaînes. Utiliser des mathématiques ZK complexes peut réduire les calculs nécessaires pour vérifier la preuve.

Alors, comment les preuves de stockage se comparent-elles et se distinguent-elles des oracles?

Par conception, les blockchains ne peuvent pas récupérer des données off-chain. Cela rend une blockchain sans confiance mais introduit également des limites sur la capacité d'un contrat intelligent à prendre des décisions basées sur des événements réels.

Des entités spéciales appelées oracles ont été créées pour récupérer ces données off-chain (ou récupérer les résultats de certains calculs off-chain lourds). Les oracles sont également couramment employés pour obtenir des informations historiques sur la blockchain, car l'acquisition de ces données directement est très difficile et donc susceptible d'erreurs.

Actuellement, ces oracles nécessitent une tierce partie, telle qu'une institution ou un réseau décentralisé d'opérateurs de nœuds, pour soumettre des données sur la chaîne qui deviennent publiques pour les utilisateurs et les contrats intelligents. Cette hypothèse de confiance est actuellement inévitable, mais pas idéale (bien que plusieurs équipes travaillent à minimiser cette exigence de confiance, comme Pragma).

Chainlink est un exemple d'oracle de blockchain qui fournit une grande variété de données du monde réel (cours des actions, données météorologiques, etc.), des services de calcul off-chain pour minimiser le coût des calculs lourds on-chain, et des services inter-chaînes qui lisent et écrivent des informations entre différentes blockchains.

Étant donné que les contrats intelligents n'ont pas d'autre moyen de savoir ce qui se passe dans le monde réel à part utiliser des oracles, ces derniers sont devenus une partie indispensable de l'écosystème de la blockchain.

L'état des oracles sur Starknet

Sur le testnet Starknet, Chainlink fournit actuellement des flux de données de prix pour sept paires de cryptomonnaies et s'est associé à l'équipe Starkware pour "accélérer davantage le développement d'applications et la croissance générale de l'écosystème Starknet". Chainlink minimise l'hypothèse de confiance avec un réseau décentralisé de nœuds qui fournissent des données provenant de sources off-chain, mais l'agrégation des données se fait off-chain.

Pragma et Stork Network sont deux des plus grands fournisseurs d'oracle sur Starknet, opérant à la fois sur le mainnet et le testnet. En plus des tickers de prix pour plusieurs paires de cryptomonnaies, Pragma travaille à la mise en œuvre d'un flux de hasard vérifiable sur le mainnet qui permettrait aux protocoles de demander un hasard sécurisé on-chain. Les flux de prix sur Pragma sont basés sur des soumissions de prix par de grandes institutions et des teneurs de marché, et l'agrégation des prix se fait on-chain en tirant parti de la technologie ZK.

Les oracles peuvent-ils être remplacés ou améliorés par des preuves de stockage?

Dans certains cas, une preuve de stockage peut en effet remplacer un oracle.

Toutes les données fournies par les oracles ne nécessitent pas forcément l'intervention d'une tierce partie. Dans certains cas, ces données étaient déjà disponibles on-chain (sous forme de stockage on-chain ou d'une transaction) et peuvent être récupérées en examinant un état précédent de la blockchain. Dans de tels cas, une preuve de stockage suffit à remplacer l'oracle et la nécessité de faire confiance à une tierce partie, permettant ainsi aux contrats intelligents de s'appuyer entièrement sur la sécurité des engagements cryptographiques.

Dans d'autres cas, où les preuves de stockage ne peuvent pas complètement remplacer un oracle, elles peuvent souvent les améliorer avec des fonctionnalités supplémentaires, telles que :

  • Les oracles transmettent des informations des fournisseurs de données aux consommateurs de données. Cependant, tous les consommateurs de données ne sont pas sur la même chaîne. Avec l'aide des preuves de stockage, il est possible de réaliser certains calculs sur les données provenant de différentes sources et d'exporter le résultat vers d'autres chaînes.

  • La chaîne source préférée pour ces données est celle avec un calcul bon marché, et la validation de la preuve peut être effectuée de manière rentable sur d'autres chaînes de destination.

  • Herodotus est l'un des leaders de la recherche dans ce domaine, et ils offrent un accès aux données entre différents domaines sur différentes chaînes Ethereum à l'aide de preuves de stockage et de mathématiques ZK. Pragma s'associe également à Herodotus pour activer le support de l'oracle inter-chaînes dans un avenir proche.

  • Les preuves de stockage peuvent unifier l'état de plusieurs rollups et permettre des lectures synchrones entre les couches Ethereum.

  • Une autre amélioration est la récupération sans confiance des données historiques publiées on-chain. Les blockchains avec état, telles qu'Ethereum et Starknet, enregistrent et préservent cryptographiquement leur état grâce à des structures de données spécialisées, telles que les arbres Merkle/Verkle et les MPT. Cela rend possible la preuve de l'inclusion de n'importe quelle donnée stockée dans ces structures. Par conséquent, toute donnée passée publiée on-chain peut également être fiable, récupérée et utilisée dans d'autres applications (pas nécessairement sur la même chaîne). Ces preuves de stockage permettent aux contrats intelligents d'accéder à des informations remontant même au bloc de genèse.

  • Pragma étudie la viabilité de développer un oracle en tant que L3 sur Starknet à partir duquel les données peuvent être "tirées" sur d'autres chaînes et vérifiées à l'aide de preuves de stockage. Les avantages d'avoir l'oracle dans un domaine différent sur un réseau aussi économique que Starknet comprennent :

    • Étant donné que le L3 pourrait être une chaîne hautement personnalisable, divers paramètres peuvent être ajustés pour parvenir plus rapidement à un consensus sur les blocs, réduisant considérablement la latence des données pour l'oracle.

    • En combinaison avec les preuves de stockage, les données à faible latence peuvent être transférées de manière asynchrone vers d'autres chaînes, une fois le consensus atteint sur la chaîne source.

    • La possibilité d'accroître la confiance dans les données en développant un système intégré dans le L3 pour punir les fournisseurs de données malhonnêtes. Si les incitations appropriées sont données, les fournisseurs de données sur le L3 pourraient mettre en jeu leurs actifs comme garantie de la publication de données correctes. Étant donné que le consensus de l'ensemble du réseau sur le L3 est nécessaire avant que d'autres chaînes puissent utiliser les données, les données fournies par l'oracle peuvent être considérées comme sécurisées par la participation validateur sur le L3.

Conclusion

Au cours des derniers mois, l'utilisation croissante des L2 sur Ethereum nous a donné une vision plus claire de l'avenir de l'industrie. La narration autour des L2 gagne en traction avec des réseaux tels que Starknet, Optimism et Arbitrum. Cependant, l'un des principaux freins à sa croissance a été la mise en œuvre d'un système de messagerie inter-chaînes décentralisé. Bien qu'ils en soient encore à un stade naissant, les preuves de stockage promettent d'incroyables améliorations à ce problème.

Un grand merci à Marcello Bardus et Kacper Koziol pour avoir relu cet article.

Subscribe to Starknet France
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.