# Ajout des changements de clé dans l'indexeur subsquid

**URL:** https://forum.duniter.org/t/ajout-des-changements-de-cle-dans-lindexeur-subsquid/11744
**Category:** Indexers
**Tags:** subsquid
**Created:** [26 November 2023 14:28 UTC](https://forum.duniter.org/t/ajout-des-changements-de-cle-dans-lindexeur-subsquid/11744 "2023-11-26T14:28:00Z")
**Posts on this page:** 2
**Page:** 1

<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: [26 November 2023 14:28 UTC](https://forum.duniter.org/t/ajout-des-changements-de-cle-dans-lindexeur-subsquid/11744/1 "2023-11-26T14:28:00Z")

</div>

Une des fonctionnalités importante de l’indexeur était de pouvoir accéder à l’historique des changements de clé des identités. Je l’ai donc ajoutée :

```auto
query MyQuery {
  identities(where: {name_eq: "cgeek"}) {
    index
    name
    account {
      id
    }
    ownerKeyChanges {
      id
      previous {
        id
      }
      next {
        id
      }
    }
  }
}

```

pour `cgeek`

```auto
  "data": {
    "identities": [
      {
        "index": 34,
        "name": "cgeek",
        "account": {
          "id": "5E6q47RRGZU15LjUiBTm2DZjpqFKAjRNafYS8YV8AzTQZtLG"
        },
        "ownerKeyChanges": [
          {
            "id": "genesis-34",
            "previous": {
              "id": "5CfdJjEgh3jDkg3bzmZ1ED1xVhXAARtNmZJWbcXh53rU8z5a"
            },
            "next": {
              "id": "5E6q47RRGZU15LjUiBTm2DZjpqFKAjRNafYS8YV8AzTQZtLG"
            }
          }
        ]
      }
    ]
  }
}

```

pour `HugoTrentesaux`

```auto
{
  "data": {
    "identities": [
      {
        "index": 344,
        "name": "HugoTrentesaux",
        "account": {
          "id": "5Dq8xjvkmbz7q4g2LbZgyExD26VSCutfEc6n4W4AfQeVHZqz"
        },
        "ownerKeyChanges": [
          {
            "id": "0000030504-d4b9e-000002",
            "previous": {
              "id": "5DSF5HxiQvy2xJdtdtMSPYZdSoLAsGDxzJaifiAfAByinrH4"
            },
            "next": {
              "id": "5Dq8xjvkmbz7q4g2LbZgyExD26VSCutfEc6n4W4AfQeVHZqz"
            }
          }
        ]
      }
    ]
  }
}

```

pour `vit`

```json
{
  "data": {
    "identities": [
      {
        "index": 58,
        "name": "vit",
        "account": {
          "id": "5FH48744BHgNoLBe8syGXbTEnSpGhp8ttdAKW4MWcR7TUKai"
        },
        "ownerKeyChanges": [
          {
            "id": "0000075504-bedb9-000003",
            "previous": {
              "id": "5EAL8tSa5TQsxuiveWCY6TbmmFQbxGYNHKb7QtPRwj34Mtzz"
            },
            "next": {
              "id": "5FH48744BHgNoLBe8syGXbTEnSpGhp8ttdAKW4MWcR7TUKai"
            }
          }
        ]
      }
    ]
  }
}

```

Et `poka` n’a pas changé d’identité vu qu’il n’était plus membre.

---

<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: [5 December 2023 21:50 UTC](https://forum.duniter.org/t/ajout-des-changements-de-cle-dans-lindexeur-subsquid/11744/2 "2023-12-05T21:50:52Z")

</div>

J’ai aussi ajouté la relation “was identity” sur les comptes pour voir s’ils ont été la cible d’un changement de clé :

```auto
query MyQuery {
  identities(where: {name_eq: "poka"}) {
    id
    index
    name
    ownerKeyChange {
      blockNumber
      previous {
        id
        identity {
          name
        }
        wasIdentity {
          identity {
            name
          }
        }
      }
      next {
        id
        identity {
          name
        }
        wasIdentity {
          identity {
            name
          }
        }
      }
    }
  }
}

```

```auto
{
  "data": {
    "identities": [
      {
        "id": "genesis-61",
        "index": 61,
        "name": "poka",
        "ownerKeyChange": [
          {
            "blockNumber": 7412,
            "previous": {
              "id": "5GMyvKsTNk9wDBy9jwKaX6mhSzmFFtpdK9KNnmrLoSTSuJHv",
              "identity": null,
              "wasIdentity": [
                {
                  "identity": {
                    "name": "poka"
                  }
                }
              ]
            },
            "next": {
              "id": "5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn",
              "identity": {
                "name": "poka"
              },
              "wasIdentity": []
            }
          }
        ]
      }
    ]
  }
}

```

On voit bien :

- que `5GMyvKsTNk9wDBy9jwKaX6mhSzmFFtpdK9KNnmrLoSTSuJHv`
  - n’est pas le compte d’une identité
  - a été le compte de l’identité poka

- que `5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn`
  - est le compte de l’identité poka
  - n’a jamais connu de migration d’identité (l’identité aurait pu faire un aller-retour entre deux clés)

Encore une fois, ce n’est vraiment pas évident de trouver le bon schéma qui correspond à notre métier, mais je pense m’en approcher. Je publie ça après relecture.
