graphprotocol / graphprotocol/graph-node
Make ChainStore agnostic to block serialization format
Personne n'a encore pris cette issue.
- Langage dominant
- Rust
- Étoiles
- 3.2k
- Forks
- 1.1k
- Merge moyen
- 4 j 1 h
- PR mergées (30 j)
- 1
Description
PR #2886 and #2998 still leave some assumptions about how blocks are serialized and deserialized in the ChainStore. In particular, they assume that the serialization follows the form of an EthereumBlock. That can cause issues for other chains if they store blocks with a different serialization format and try to read them, assuming they get their own serialization back.
A more robust fix would parametrize ChainStore.blocks and ChainStore,ancestor_block (the only methods that read the serialized data from the chain store and now return a json::Value) so that the caller passes in instructions on how to deserialize instead of leaving it up to the store. That is not entirely trivial because
- the current code does not read transaction receipts in
ChainStore.blockswhich helps reduce the data that needs to be deserialized. ChainStoreneeds to be object safe, soblocksandancestor_blockcan't be parametrized on some sort ofFromChainStoreDatatrait
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par examiner ChainStore.blocks et ChainStore.ancestor_block, ainsi que les hypothèses identifiées dans les PRs #2886 et #2998. Suivez la manière dont ces méthodes désérialisent les blocs sérialisés et dont la sécurité des objets contraint l'API. Le travail sera considéré comme terminé lorsque les appelants fourniront des instructions de désérialisation, que la gestion des reçus de transaction restera appropriée et que les formats de blocs non-Ethereum pourront être relus dans leur propre sérialisation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rust
- Domaine
- blockchain
- Type d'issue
- Refactorisation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100