Cardano-db-sync: Ajouter un slot_leader.pool_hash_id nullable

Créé le 19 juil. 2020  ·  4Commentaires  ·  Source: input-output-hk/cardano-db-sync

Pour activer un modèle de Block.forgedBy -> StakePool et StakePool.blocksForged -> [Block]
Voir https://github.com/input-output-hk/cardano-ledger-specs/pull/1637

enhancement

Commentaire le plus utile

Oui, vous pouvez accéder à l'identifiant du pool via la table slot_leaders. Cependant, ce serait très pratique si nous pouvions avoir l'identifiant du pool dans la table des leaders des emplacements plutôt qu'une partie de la vkey. Je convertis actuellement le vkey en un identifiant de pool comme suit et le stocke dans une nouvelle colonne de la table des leaders des emplacements :

vkey = "5820"+p['hash'][2:]
h = hashlib.blake2b(digest_size=28)
h.update(binascii.unhexlify(p['hash'][2:]))
poolid = h.hexdigest()

Cela me permet de faire une jointure et de créer assez facilement des blocs par pool.

Tous les 4 commentaires

Cela ne duplique-t-il pas la table slot_leader ?

Oui, vous pouvez accéder à l'identifiant du pool via la table slot_leaders. Cependant, ce serait très pratique si nous pouvions avoir l'identifiant du pool dans la table des leaders des emplacements plutôt qu'une partie de la vkey. Je convertis actuellement le vkey en un identifiant de pool comme suit et le stocke dans une nouvelle colonne de la table des leaders des emplacements :

vkey = "5820"+p['hash'][2:]
h = hashlib.blake2b(digest_size=28)
h.update(binascii.unhexlify(p['hash'][2:]))
poolid = h.hexdigest()

Cela me permet de faire une jointure et de créer assez facilement des blocs par pool.

@disassembleur Oui, ce serait le cas. J'ai mis à jour le titre pour étendre la table des leaders avec une clé pour rejoindre facilement

@papacarp merci d'avoir ajouté votre solution de contournement. J'espère que vous pourrez refactoriser loin de cela, car la modification du schéma des tables gérées par cardano-db-sync est déconseillée par @erikd

Cette page vous a été utile?
0 / 5 - 0 notes