Ajout des changements de clé dans l'indexeur subsquid

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 :

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

pour cgeek

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

pour HugoTrentesaux

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

pour vit

{
  "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.

3 Likes

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

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
          }
        }
      }
    }
  }
}
{
  "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.

3 Likes