Preuves d'État et vérification des transactions - Censorship.wtf
Source : https://www.youtube.com/watch?v=_I7pNPgWo34
Contexte
L'expression "occupe-toi de tes affaires" avait historiquement des connotations différentes. Benjamin Franklin l'utilisait pour signifier s'occuper de ses responsabilités, et non traîner dans les affaires des autres.
Aujourd'hui, "occupe-toi de tes affaires" implique un désir d'intimité face à la surveillance envahissante du gouvernement ou des entreprises. Il y a des inquiétudes concernant la censure et le manque de vie privée.
La surveillance des entreprises pose une menace à l'expression "occupe-toi de tes affaires" plus importante que la surveillance gouvernementale, car les entreprises collectent une quantité massive de données personnelles pour de la publicité ciblée.
Il y a une scène de la série Inventing Anna où un personnage nommé Neff dit à Anna de "s'occuper de ses affaires", ce qui signifie qu'elle doit s'occuper de ses responsabilités et payer ses factures.
Dans le contexte de la résistance à la censure, "occupe-toi de tes affaires" signifie être capable de s'occuper de ses propres responsabilités et besoins sans interférence ni limitation. Il s'agit plus de capacité personnelle que de vie privée.
Le côté obscur de la scalabilité
Le problème de la scalabilité menace de saper l'objectif d'Ethereum de permettre la liberté financière et la résistance à la censure pour tous.
Le succès d'Ethereum et sa scalabilité entraînent des problèmes d'adoption et de résistance à la censure :
- Pour vérifier les paiements on-chain, exécuter des contrats ou valider des transactions, on doit exécuter des nœuds gourmands en puissance de calcul. Cela nécessite du matériel coûteux que le grand public ne peut pas se procurer.
- L'exécution de plus de transactions et de nœuds ralentit et rend le réseau moins efficace. Cela augmente les exigences matérielles pour tous.
- Limiter qui peut exécuter des nœuds conduit à la centralisation et va à l'encontre de l'éthique d'Ethereum
C'est une "censure par la richesse" : si vous n'êtes pas riche, vous ne pouvez pas participer. Cela pourrait être encore plus discriminant que la finance traditionnelle.
Preuves d'état et vérification des transactions
Les preuves d'état et la vérification des transactions nous permettent de vérifier nos propres transactions sans traiter l'ensemble de la blockchain, ce qui rend la résistance à la censure plus atteignable.
Les preuves d'état contiennent les données minimales nécessaires pour vérifier un bloc :
- En-têtes
- Comptes consultés
- Stockage de contrat
- Code
- etc...
Les arbres de Merkle Patricia actuels ont de grandes preuves de bloc (1-2 Mo), ce qui rend cette solution actuellement irréalisable à l'échelle mondiale.
Une solution à cela sont les "Arbres de Verkle"
Les arbres verticaux compriment les preuves à quelques dizaines d'octets au lieu de milliers d'octets en utilisant des engagements vectoriels, les rendant beaucoup plus efficaces.
Les arbres verticaux corrigent également les problèmes de largeur d'arbre, optimisant davantage l'efficacité. Ils regroupent toutes les données d'état de compte et de contrat nécessaires.
En incluant de petites preuves d'arbres verticaux dans chaque bloc, le protocole pourra devenir scalable tout en permettant la vérification décentralisée des transactions.
Cependant, des innovations supplémentaires autour du parallélisme seront probablement nécessaires à mesure que la chaîne se développe pour atteindre les capacités du réseau de paiement Visa.
Exécution parallèle et vérification des transactions
Il existe 3 principaux domaines où l'introduction du traitement parallèle pourrait aider à la scalabilité d'Ethereum:
- Parallélisme de préfixe : Ajouter des données supplémentaires aux transactions avant de les soumettre qui permettent un traitement parallèle ultérieur. Comme des indicateurs indiquant quelles données seront consultées.
- Parallélisme infixe : Faire en sorte que le processus d'exécution de la transaction lui-même se produise en parallèle. Permettre à plusieurs transactions de s'exécuter en même temps et de gérer les conflits.
- Parallélisme postfixe : Analyser les transactions après leur exécution pour déterminer comment elles pourraient s'exécuter en parallèle en toute sécurité.
Un type de parallélisme postfixe semble très prometteur mais n'est pas encore beaucoup exploré :
- Examiner des groupes de transactions après leur exécution
- Identifier celles qui ne sont pas en conflit entre elles ou qui ne causent pas d'effets secondaires
- Grouper les transactions compatibles.
Ces groupes pourraient alors tous s'exécuter en parallèle sur leurs propres flux sans perturber les résultats.
Donc le parallélisme infixe et de préfixe apporte des progrès, mais le parallélisme de postfixe qui implique l'analyse des lots de transactions sûres à postériori pourrait débloquer un énorme potentiel de scalabilité
Importance de l'isolation
Lorsque les bases de données effectuent un calcul en parallèle, elles suivent des règles appelées ACID : Atomicité, Cohérence, Isolement et Durabilité.
La règle "Isolement" est la plus importante pour les transactions parallèles, car elle isole chaque transaction des autres.
Si les transactions de blockchain pouvaient être isolées les unes des autres, on n'aurait besoin de traiter que les transactions qui nous concernent.
Dans un bloc, certaines transactions dépendent des autres. Mais certains groupes de transactions ne sont pas en conflit. Si notre transaction n'est pas en conflit avec les autres, il est facile de la traiter en parallèle car il suffit d'ignorer le reste.
C'est plus compliqué si notre transaction dépend d'autres avant elle. Il faut traiter celles-ci en priorité
L'idéal serait de toujours isoler notre transaction, même si d'autres ont un impact sur elle pour obtenir uniquement les informations dont vous avez besoin.
Si nous pouvions intégrer cela dans Ethereum, on aurait juste besoin d'exécuter ce qui a un impact sur la vérification de notre transaction, rendant le traitement parallèle possible.
EIP-7519 - Opérations de stockage atomiques
EIP-7519 propose des opérations de stockage atomiques. Cela permettrait des "écritures delta" : au lieu de remplacer les valeurs de compte, les transactions ajouteraient/soustrairaient des soldes.
Cela permet de prouver des propriétés plus avancées. Par exemple, si Alice a ≥100 pièces, n'importe quel ordre de 3 transactions envoyant chacune 100 pièces est valide.
On pourrait évaluer n'importe quel sous-ensemble de transactions compatibles dans n'importe quel ordre et obtenir les mêmes résultats.
Cela permet d'identifier des groupes de transactions parallélisables compatibles dans le protocole.
Les groupes de transactions compatibles ont la propriété que tout sous-ensemble et tout ordre ont des effets identiques.
Combiné à des preuves de validité de bloc (preuve ZK), on pourrait vérifier uniquement les transactions qui nous concernent, en ignorant le reste.
En conséquence, cela nous permettrait de "nous occuper de nos affaires" dans l'écosystème Ethereum sans traiter l'activité non liée, et réduirait drastiquement les calculs nécessaires.
Avec les écritures delta pour trouver des ensembles de transactions compatibles et les preuves ZK pour vérifier des sous-ensembles isolément, nous pourrions créer un système où la censure des utilisateurs basée sur les ressources de calcul serait irréalisable, permettant la participation avec n'importe quel appareil.