Champ expireOn

Dans l’interface GraphQL de l’indexeur, il y a le champ expireOn qui est un numéro de bloc.
Est-ce possible de générer la date d’expiration, en timestamp, d’une certification ou adhésion ?
Pour afficher l’expiration des certifications, les clients doivent effectuer un calcul pour chaque certification.

timestamp_expire_in = (block_expire_on - head_block) * 6s # constante  à récupérer des metadatas

Est-ce plus intéressant de laisser cette tâche à l’indexeur ou aux clients ?

2 Likes

Bien vu, c’est en quelque sorte un oubli du ticket #18. Il devrait y avoir à la fois expireOn (numéro de bloc) utilisé pour trier les réponses par exemple, et expireIn qui devrait être une référence à un bloc (donc avec timestamp et autres infos). Le souci est que quand ce bloc est dans le futur, on ne peut pas référencer le bloc car il n’existe pas encore. Donc on pourrait ajouter un champ expireTimestampEstimate qui serait une estimation du timestamp qu’aura le bloc une fois qu’il sera calculé. Conceptuellement je suis un peu gêné d’ajouter cette notion côté indexeur car ce n’est pas proprement dit un index blockchain, mais ce serait en effet très pratique d’avoir l’info ici plutôt que de devoir systématiquement recalculer l’approximation côté client comme je l’ai fait ici. Pour la peine, je crée #51 pour tracer ça.

4 Likes

Je travaille sur l’affichage des certifications.

Le champs ExpireOn semble donner une date qui correspond à Cesium V1.

Par contre les numéros de bloc en négatifs des champs CreatedOn et UpdatedOn correspondent à quoi ?

Si je les considèrent comme un offset dans le passé depuis le bloc zéro de la blockchain, j’ai des dates trop proches, et différentes de Cesium.

Exemple ici, je dois obtenir le 20/03/2024 19:48 (date de création ou renouvellement de Cesium) à partir de ceci -336978 ou -160683. Mais sans succès… Alors que ExpireOn=2217494 donne bien une date en mars

    {
      "id": "genesis-cert_58-5",
      "isActive": true,
      "createdOn": -336978,
      "updatedOn": -160683,
      "expireOn": 2217494,
      "issuer": {
        "index": 58,
        "name": "vit",
        "accountId": "g1M5PtxdtmkVnaL6GFT94h6FW7MfF2rTfBitVkDtKX2kBTkQL",
        "status": "Member"
      },
      "receiver": {
        "index": 5,
        "name": "BenoitLavenier",
        "accountId": "g1KhCeK2Zi9GBRtceHnj7EW5sX5sdNEK9jzTFD6V435agZp4c",
        "status": "Member"
      }
    },

[EDIT]
La solution est donné par @HugoTrentesaux plus haut, il faut utiliser CreatedIn et UpdatedIn comme ceci :

nodes {
      id
      isActive
      createdIn {
        block {
          timestamp
        }
      }
      updatedIn {
        block {
          timestamp
        }
      }
      expireOn
5 Likes

Les blocs négatifs sont les blocs v1 (un toutes les 5 min). Tu as le numéro du bloc v1 dans l’id. C’est pas très propre, mais toutes les infos sont là, ça permet de référencer précisément un bloc v1 et de conserver l’ordre.

1 Like