Bug format SS58 de certaines adresses

En testant le futur panneau de recherche de Tikka sur les réseaux Ğ1 et la Ğtest, qui se base entièrement sur une requête auprès de l’indexer, celui-ci répond avec des comptes dont les adresses n’ont pas le bon format SS58 ! :scream:

Mais d’où viennent ces mystérieuses adresses ? :thinking:

2 Likes

étrange en effet. Pourrais-tu en copier quelques unes en version texte plutôt qu’image ?

3yANZ ça fait un sacré préfixe si s’en est bien un.

Bon j’ai recopié la première :
3yANZKiDg4wH3EPLJvrx6LbP4hLnU8wsxA8NpCxuU8EX1zMsyve

Voici la requête de travail sur Altair (plugin GraphQL pour Firefox) :

query {
  accounts(
    first: 100
    orderBy: ID_ASC
    filter: {
      or: [
        { id: { includesInsensitive: "a" } }
        { identity: { name: { includesInsensitive: "a" } } }
      ]
    }
  ) {
    nodes {
      id
      createdOn
    }
    totalCount
  }
}

Et la liste textuelle de la totalité des adresses erronées, visiblement générées pour le genesis (createdOn = 0 = compte de la blockchain V1)

{
  "data": {
    "accounts": {
      "nodes": [
        {
          "id": "3yANa1yKrkRb5bU7M7U58z9NPLHRAu9EfMg5qCRaJXLjc6WCeQC",
          "createdOn": 0
        },
        {
          "id": "3yANa2HWAeg3knw3vZzhgEAnyLaRbwWZ6BKZzF5k41r6F9bLEF2",
          "createdOn": 0
        },
        {
          "id": "3yANaCABfoZfUQxZZQybkyJZn7YFdQdkXvP6FQP3k6HCsYAabqs",
          "createdOn": 0
        },
        {
          "id": "3yANadb3UEa8DMXNELvtUj3JqTd99GSz7HFQM3cT6HvUsnLmN4k",
          "createdOn": 0
        },
        {
          "id": "3yANaDnKAqaDHwZtGg7Ed5qY95FCCmcXYyajPX68Vh1x4dA6fBe",
          "createdOn": 0
        },
        {
          "id": "3yANaE8MceuB9mJRQSgYazx8k3qcM7G8A9bJ6iwFLvXP5FU3Xkc",
          "createdOn": 0
        },
        {
          "id": "3yANaEAoKtVwyWmxSVYch2efdyWSizi4Lc8amWf4633rfsv3gYs",
          "createdOn": 0
        },
        {
          "id": "3yANagGBYYFnyeEoAnUH7THp7AzbPxfQ5H5dE1fD7pUWUBvjbmV",
          "createdOn": 0
        },
        {
          "id": "3yANas6NXZmCaDAz4r4Q2xRWWA8WaqhevWmFygj2Bo5G6d2Fv3u",
          "createdOn": 0
        },
        {
          "id": "3yANat35eym5ocYj2hBnCiAEmkkt4pGsyxnBnHv332XyP4spovC",
          "createdOn": 0
        },
        {
          "id": "3yANaXbNnyXQn67NWMJf2T74csLPD9JHEgXn1hBeDV1M9KZoLR4",
          "createdOn": 0
        },
        {
          "id": "3yANaYGUNVfHfbbXW3AKE4Tr7q9E2ghZp8XNnv5btTpYAqbtn5L",
          "createdOn": 0
        },
        {
          "id": "3yANaYyhpaaj9cNzRo4sNqpAA6oV1tjCDoLhhKbRWyw9F177gLK",
          "createdOn": 0
        },
        {
          "id": "3yANazPFp3Tq2vFFFr13yMfJn512Q7UYuyhRHdmM3sjnv5dxbJi",
          "createdOn": 0
        },
        {
          "id": "3yANbDGwVRtBhgNwLtbeZXnWUmySUS4rA2iScgYwZadn1tSYHUV",
          "createdOn": 0
        },
        {
          "id": "3yANbEFN8mC959m7YSRQck8VtB8ixhw4VEmnGC9SFLpbPd8pLwn",
          "createdOn": 0
        },
        {
          "id": "3yANbFX2t3m5DwmMgvCJKwSyMfjiD815bMrTiZ1GYdhvAisTvSC",
          "createdOn": 0
        },
        {
          "id": "3yANbKdKpKUFrY5VzAW3QzsRcKcMkkD2DJwigLXYRbobGb7bPWm",
          "createdOn": 0
        },
        {
          "id": "3yANbqMMjVitdsoyibuYv7GmEERfvgGWyeoewTBMtS6rCr29jSw",
          "createdOn": 0
        },
        {
          "id": "3yANc7EuPjvjVXb3YAc4kALuJD8oxurFJKFs6diBQ6oUqCzuZS8",
          "createdOn": 0
        },
        {
          "id": "3yANXWHorg4sgDgYdyffoyhvRPojnodqJqtjiW88dAvPAsi1FR1",
          "createdOn": 0
        },
        {
          "id": "3yANYf7EBdsAASZucQoH5TtvShDWoKPepsADwtgWAmnrHFR4PQX",
          "createdOn": 0
        },
        {
          "id": "3yANYsp6eiQehgBPX6imovKZinTN9cifXUe5htiTqQBsR4UKMpi",
          "createdOn": 0
        },
        {
          "id": "3yANYstacwVEwhgVFU86Bzrbc8GVg3SP72qGdFGEtzGnNMzWvix",
          "createdOn": 0
        },
        {
          "id": "3yANYwEjgL1WoUBB9fw143rcmZNs6TqVefNe9ycA535bRonLab5",
          "createdOn": 0
        },
        {
          "id": "3yANYzJLqTrg56SHQpCA8Z91efQEcc6VbpjocuVkdb4J2acmrrR",
          "createdOn": 0
        },
        {
          "id": "3yANZ2Y32Gjfx2zj96u2h8hpKsC9AAANrW8L2984AiodDMeM3YT",
          "createdOn": 0
        },
        {
          "id": "3yANZbmjB47K5UQf1NS58YbRTZMTmBEazBypUWrG1SZPLEHh1pZ",
          "createdOn": 0
        },
        {
          "id": "3yANZbtKMdX4vue6d9sFxU6EPtfVSVhWDjC1PvuhjRL97qY821y",
          "createdOn": 0
        },
        {
          "id": "3yANZduGrrPuupd9Z3vJJrs5A9EAEjchXXCbtZmyCJ6HxmE8faT",
          "createdOn": 0
        },
        {
          "id": "3yANZFgXRTMWEKGBBEhSERX8ftXnuStcfQY9ddGWCsW1hzvzGVw",
          "createdOn": 0
        },
        {
          "id": "3yANZfrkGzm48W9bS2hmUMzBXCo7CLXXV8qQNE5a8ryp3JqhGnS",
          "createdOn": 0
        },
        {
          "id": "3yANZhVFp6CkX5T5iwMSYXUqFoBGt5UtAy5AVWpsJz1w4PJ9CeM",
          "createdOn": 0
        },
        {
          "id": "3yANZKiDg4wH3EPLJvrx6LbP4hLnU8wsxA8NpCxuU8EX1zMsyve",
          "createdOn": 0
        },
        {
          "id": "3yANZNQXxVvM24V8Zj77tNdpQNt2HEdSuCM9FCvJ5y99G7a4UBU",
          "createdOn": 0
        },
        {
          "id": "3yANZsFt6yM1U1ydoTbesfV5GruUGaqsjRzdGi2MziH3DtkoWyk",
          "createdOn": 0
        },
        {
          "id": "3yANZshimQ3daU58zo1jU51zZSfN4WeVXo5HGqPMyoThfJyjGeV",
          "createdOn": 0
        },
        {
          "id": "3yANZtFKZU5oDTtq5AarRxrdWrSdYECGQ2Ka5paaV6aEdrYPuqA",
          "createdOn": 0
        },
        {
          "id": "3yANZXuZjwqBJ5YQtZ7LhrgKUCZpK1ZXUsMbswFB1S88sQpEiZE",
          "createdOn": 0
        },
        {
          "id": "3yANZXX8vMzuuweGrdUt37ikDyy2dbreCu6BJEcFSG92dptv7jk",
          "createdOn": 0
        },
        {
          "id": "3yANZXZqo5yt6dUfrcREUz8ywfPUqjSZgaCa7CnPLrtB8WZdJfQ",
          "createdOn": 0
        },
        {
          "id": "3yANZyc3XhWo6PqRMo7o4EWWep5mrgF8bp2ghaHfviHZjWHn2Vv",
          "createdOn": 0
        },
        {
          "id": "3yANZzPGDbMm6ZzGkfhMS5jpzaSdxWUZyvygkPqD2rvZF6LRTix",
          "createdOn": 0
        },
2 Likes

On avait remarqué ça déjà en gtest. On avait compris à quoi correspondait ces adresses, toutes vides, mais je ne m’en souvient plus sur le coup, je crois que ce sont des pubkey qui ne match pas correctement la courbe elliptique ed25519, qui n’ont pas bien été filtré par py-g1-migrator.

On en avait donc conclu que ce n’est pas un problème bloquant, mais il faudrait finir le diag et nettoyer ça oui.

2 Likes

Consigné dans la boîte à chocolats.

3 Likes

J’ai trouvé le problème de ces adresses, je peux enfin les filtrer dans Tikka !
J’ai complété le ticket :

The g1 and gtest blockchain store accounts with bad addresses in the genesis (wrong prefix, 3yAN instead of g1).

Strangely, le prefix number is good : 4450!

from scalecodec import ss58_decode
ss58_decode("3yANbqMMjVitdsoyibuYv7GmEERfvgGWyeoewTBMtS6rCr29jSw", 4450)
'02770ec8f78a23995f4ad45c20b7f363e58f6603c1f2c7c2dbf80af9c24a505a98'

But the length of the public address is wrong:

ss58_decode("3yANbqMMjVitdsoyibuYv7GmEERfvgGWyeoewTBMtS6rCr29jSw", 4450)
'02770ec8f78a23995f4ad45c20b7f363e58f6603c1f2c7c2dbf80af9c24a505a98'
len('02770ec8f78a23995f4ad45c20b7f363e58f6603c1f2c7c2dbf80af9c24a505a98')
66

A good address has a length of 64 bytes:

ss58_decode("g1Jz9MNpRPEP656r1mW3aMtnaiqTro65Cfq9FnQjsaCoViawH", 4450)
'00492ab849cfef6fee6a9ab4b83e6a985c8693576d67bafa4ad1709ae0d9d4df'
len('00492ab849cfef6fee6a9ab4b83e6a985c8693576d67bafa4ad1709ae0d9d4df')
64
4 Likes

il faudrait ajouter des check dans squid pour ignorer l’indexation de ces adresses aux prochain resync.

2 Likes

En fait, ce n’est pas aussi simple. Même si ces comptes ne devraient pas exister et ont été vidés dans le genesis de Duniter v2, ils ont bien un historique de transactions validés par Duniter v1 :

query Strange {
  accounts(condition: {id: "3yANa1yKrkRb5bU7M7U58z9NPLHRAu9EfMg5qCRaJXLjc6WCeQC"}) {
    nodes {
      transfersReceived {
        totalCount
        nodes {
          comment {
            remark
          }
          amount
          blockNumber
        }
      }
    }
  }
}

{
  "data": {
    "accounts": {
      "nodes": [
        {
          "transfersReceived": {
            "totalCount": 1,
            "nodes": [
              {
                "comment": {
                  "remark": "Apreci cadireta cotxe"
                },
                "amount": "20000",
                "blockNumber": -169813
              }
            ]
          }
        }
      ]
    }
  }
}

Donc si on supprime ces comptes, il faut aussi supprimer leur historique de transactions, et donc perdre en traçabilité sur le montant des comptes qui les ont alimenté.

J’ai une préférence pour conserver ces comptes qui sont une trace des bugs de Duniter v1.

4 Likes