Ce document a été motivé par notre travail sur le FOCIL consensus spec 23, où nous avons réalisé que le protocole nécessitait une réflexion plus approfondie sur les contraintes de ressources, car certains détails n'étaient pas explicitement spécifiés dans le FOCIL Ethereum recherche post 14.
Avant de commencer, nous supposons la configuration suivante pour établir une base propre pour nos considérations:
Avant de continuer, nous supposons que les acteurs suivants font partie du protocole et analysons leurs responsabilités:
Nous supposons la chronologie suivante dans laquelle le comité IL, le proposant et les validateurs effectuent des actions honnêtes :
Les membres du comité IL récupèrent une liste des transactions IL du client EL étant donné la tête (appel CL → EL), puis ils signent le IL local (transactions + résumés) et le publient sur le réseau de ragots.
Les nœuds suivant la chaîne téléchargeront le IL, le vérifieront pour anti-DOS (sans l'importer dans EL pour le moment), et le transmettront à d'autres pairs. Les nœuds importent également le IL dans le choix de la fourche et suivent les IL qui ont été vus en utilisant un cache aggreGate. Les validateurs et les nœuds suivant la chaîne devraient avoir la même vue de la chaîne.
Le proposant pour le prochain créneau surveille activement le réseau de messagerie IL, collecte et agrège les IL locaux, puis, à la coupure d'agrégation IL (intervalle #2), le proposant met à jour le processus de construction de bloc avec une liste de transactions IL à inclure pour son bloc. Cela nécessite un appel CL à EL.
Si le proposant du prochain créneau observe un nombre suffisant de listes d'inclusion basées sur un hachage parent qu'il n'a pas vu, le proposant devra demander manuellement le bloc beacon manquant, importer le bloc et construire dessus.
Basé sur ce qui précède, nous pouvons identifier les domaines potentiellement gourmands en ressources et les restreindre.
Le proposant met à jour le processus de construction de bloc avec une liste de transactions de la liste d'inclusion. Il s'agit d'un appel CL → EL.
Vue de la liste d'inclusion de verrouillage. Arrêtez d'accepter la liste d'inclusion locale à partir de ce point.
Le demandeur récupère la charge d'exécution du client EL (appel CL → EL) et la libère dans le réseau de diffusion de blocs de balisage. Tout le monde vérifie ensuite le bloc.
Les nœuds reçoivent le bloc phare et le vérifient. Les nouvelles étapes de vérification comprennent la vérification de la construction de la liste d'inclusion aggreGate et la confirmation que la liste d'inclusion satisfait la fonction d'évaluation, qui doit être terminée sur le CL. La vérification des conditions de l'IL (qu'elles peuvent être sautées en raison de conflits ou non) sera effectuée sur l'EL.
Les tâches supplémentaires pour le demandeur ne semblent pas être une préoccupation majeure. Les nouvelles étapes de vérification pour les nœuds - vérifier si la liste d'inclusion satisfait les conditions requises - peuvent entraîner une charge CPU supplémentaire, mais cela ne semble pas être un problème majeur.
L'attestant vote pour le bloc phare en utilisant la règle de choix de fourchette LMD GHOST. Les attestants ne voteront que pour un bloc phare qui satisfait la fonction d'évaluation de la liste d'inclusion, basée sur les observations de l'Interval 1.
Il n'y a aucune différence par rapport à aujourd'hui.
Comme on peut le voir ci-dessus, les principales préoccupations concernant les ressources tournent autour de l'importation et du téléchargement d'une liste d'inclusion, ainsi que du potentiel de spam depuis la perspective d'un nœud. Un autre point clé est la charge supplémentaire pour les nœuds lors de la vérification et de l'importation de la liste d'inclusion, ainsi que la nécessité pour le proposeur de mettre à jour son processus de construction de bloc pour satisfaire à la liste d'inclusion. Ces aspects nécessitent une réflexion et une conception minutieuses pour garantir efficacité et sécurité.
Sur la base de ce qui précède, nous soulignons plusieurs questions ouvertes qui influenceront la rédaction de la spécification :
Ce document a été motivé par notre travail sur le FOCIL consensus spec 23, où nous avons réalisé que le protocole nécessitait une réflexion plus approfondie sur les contraintes de ressources, car certains détails n'étaient pas explicitement spécifiés dans le FOCIL Ethereum recherche post 14.
Avant de commencer, nous supposons la configuration suivante pour établir une base propre pour nos considérations:
Avant de continuer, nous supposons que les acteurs suivants font partie du protocole et analysons leurs responsabilités:
Nous supposons la chronologie suivante dans laquelle le comité IL, le proposant et les validateurs effectuent des actions honnêtes :
Les membres du comité IL récupèrent une liste des transactions IL du client EL étant donné la tête (appel CL → EL), puis ils signent le IL local (transactions + résumés) et le publient sur le réseau de ragots.
Les nœuds suivant la chaîne téléchargeront le IL, le vérifieront pour anti-DOS (sans l'importer dans EL pour le moment), et le transmettront à d'autres pairs. Les nœuds importent également le IL dans le choix de la fourche et suivent les IL qui ont été vus en utilisant un cache aggreGate. Les validateurs et les nœuds suivant la chaîne devraient avoir la même vue de la chaîne.
Le proposant pour le prochain créneau surveille activement le réseau de messagerie IL, collecte et agrège les IL locaux, puis, à la coupure d'agrégation IL (intervalle #2), le proposant met à jour le processus de construction de bloc avec une liste de transactions IL à inclure pour son bloc. Cela nécessite un appel CL à EL.
Si le proposant du prochain créneau observe un nombre suffisant de listes d'inclusion basées sur un hachage parent qu'il n'a pas vu, le proposant devra demander manuellement le bloc beacon manquant, importer le bloc et construire dessus.
Basé sur ce qui précède, nous pouvons identifier les domaines potentiellement gourmands en ressources et les restreindre.
Le proposant met à jour le processus de construction de bloc avec une liste de transactions de la liste d'inclusion. Il s'agit d'un appel CL → EL.
Vue de la liste d'inclusion de verrouillage. Arrêtez d'accepter la liste d'inclusion locale à partir de ce point.
Le demandeur récupère la charge d'exécution du client EL (appel CL → EL) et la libère dans le réseau de diffusion de blocs de balisage. Tout le monde vérifie ensuite le bloc.
Les nœuds reçoivent le bloc phare et le vérifient. Les nouvelles étapes de vérification comprennent la vérification de la construction de la liste d'inclusion aggreGate et la confirmation que la liste d'inclusion satisfait la fonction d'évaluation, qui doit être terminée sur le CL. La vérification des conditions de l'IL (qu'elles peuvent être sautées en raison de conflits ou non) sera effectuée sur l'EL.
Les tâches supplémentaires pour le demandeur ne semblent pas être une préoccupation majeure. Les nouvelles étapes de vérification pour les nœuds - vérifier si la liste d'inclusion satisfait les conditions requises - peuvent entraîner une charge CPU supplémentaire, mais cela ne semble pas être un problème majeur.
L'attestant vote pour le bloc phare en utilisant la règle de choix de fourchette LMD GHOST. Les attestants ne voteront que pour un bloc phare qui satisfait la fonction d'évaluation de la liste d'inclusion, basée sur les observations de l'Interval 1.
Il n'y a aucune différence par rapport à aujourd'hui.
Comme on peut le voir ci-dessus, les principales préoccupations concernant les ressources tournent autour de l'importation et du téléchargement d'une liste d'inclusion, ainsi que du potentiel de spam depuis la perspective d'un nœud. Un autre point clé est la charge supplémentaire pour les nœuds lors de la vérification et de l'importation de la liste d'inclusion, ainsi que la nécessité pour le proposeur de mettre à jour son processus de construction de bloc pour satisfaire à la liste d'inclusion. Ces aspects nécessitent une réflexion et une conception minutieuses pour garantir efficacité et sécurité.
Sur la base de ce qui précède, nous soulignons plusieurs questions ouvertes qui influenceront la rédaction de la spécification :