# Champ expireOn

**URL:** https://forum.duniter.org/t/champ-expireon/13085
**Category:** Indexers
**Created:** [30 April 2025 14:51 UTC](https://forum.duniter.org/t/champ-expireon/13085 "2025-04-30T14:51:29Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Moul](https://forum.duniter.org/user_avatar/forum.duniter.org/moul/32/9145_2.png) [@Moul](https://forum.duniter.org/u/Moul)
#### Post date: [30 April 2025 14:51 UTC](https://forum.duniter.org/t/champ-expireon/13085/1 "2025-04-30T14:51:29Z")

</div>

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.

```py
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 ?

---

<div class="post-metadata">

### Author: ![HugoTrentesaux](https://forum.duniter.org/user_avatar/forum.duniter.org/hugotrentesaux/32/6396_2.png) [@HugoTrentesaux](https://forum.duniter.org/u/HugoTrentesaux)
#### Post date: [30 April 2025 17:12 UTC](https://forum.duniter.org/t/champ-expireon/13085/2 "2025-04-30T17:12:47Z")

</div>

Bien vu, c’est en quelque sorte un oubli du ticket [#18](https://git.duniter.org/nodes/duniter-squid/-/issues/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](https://git.duniter.org/HugoTrentesaux/duniter-vue/-/blob/e3eba8ad5781724e8b8a71138454a62657a9d2e7/src/utils.ts#L49). Pour la peine, je crée [#51](https://git.duniter.org/nodes/duniter-squid/-/issues/51) pour tracer ça.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [27 November 2025 16:05 UTC](https://forum.duniter.org/t/champ-expireon/13085/3 "2025-11-27T16:05:59Z")

</div>

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 :

```auto
nodes {
      id
      isActive
      createdIn {
        block {
          timestamp
        }
      }
      updatedIn {
        block {
          timestamp
        }
      }
      expireOn

```

---

<div class="post-metadata">

### Author: ![HugoTrentesaux](https://forum.duniter.org/user_avatar/forum.duniter.org/hugotrentesaux/32/6396_2.png) [@HugoTrentesaux](https://forum.duniter.org/u/HugoTrentesaux)
#### Post date: [14 December 2025 10:27 UTC](https://forum.duniter.org/t/champ-expireon/13085/4 "2025-12-14T10:27:59Z")

</div>

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.
