Python script to generate Ğ1v2 genesis json

Si je comprends bien, tu veux obtenir le pseudo d’une identité en blockchain à partir de sa clé publique ?
La requête graphQL (POST) suivante envoyée au serveur WotWizard https://wwgql.coinduf.eu (quand il fonctionne) devrait te renvoyer ce que tu cherches au format JSON (remplacer <pubkey> par sa valeur) :

{"query":"query($pubkey:String!){idSearch(with:{hint:$pubkey}){ids{uid}}}","variables":{"pubkey":"<pubkey>"}}

Non, je veux le nom de chaque identité certifié par chaque identité, pour générer le genesis g1 v2s.

Avec les json fournis par tuxmain, je pense que ça le fait!

Ah, OK. WotWizard le fait aussi facilement, tu as le choix.

1 Like

@gerard94 du coup est-ce que tu pourrais me mettre ici une requête wot-wizard qui sorte ce genre de donnée :

"identities": {
    "elois": {
      "balance": 154623,
      "certs": [
        "poka",
        "cgeek",
        "vit",
        ...
      ],
      "pubkey": "D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx"
    },
    "truc": {
      "balance": 42531,
      "certs": [
        "machin",
        "machine",
        ...
      ],
      "pubkey": "Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P"
    }
    ...
  }

Pour chacune des 6435 identités ?
certs correspond ici aux noms d’identités certifiés (issuer)

Seconde question, est-ce que wotwizard peut aussi sortir la date d’émission de chaque certifications ? Tu as le nom du champ en question ?

Je me demande si la date de validation d’une certification ne serai pas plus pertinente que sa date d’émission.
Car c’est bien celle là qui indique si on est disponible pour certifier à nouveau.
Si j’ai bien compris les deux seront confondues dans Duniter V2…

1 Like

Je croyais comme toi @Maaltir jusqu’à ce que je comprenne que c’est la date d’émission et non de validation qui compte pour l’expiration de la certification (cf Plus de 100 certifications? - #9 par cgeek). @poka j’ai bien vu ce fil, je voulais ajouter des fonctionnalités dans Datajune pour répondre à ce besoin, mais j’ai pas trop eu le temps dans le train Paris → Toulouse :slight_smile:

2 Likes

Pour faire les choses proprement (en respectant jour pour jour les délais d’émission et d’expiration) on pourra même prendre les deux dates. Mais actuellement le programme de génération du bloc zéro de la gdev-v2 prend ces deux dates en paramètres globaux (c’est-à-dire qu’au début de la gdev, tous les membres deviennent disponibles pour certifier au même bloc, et leurs certifications initiales ont la même date d’expiration).

Il faudra évidemment changer ça pour la migration.

Oui, mais ce n’est pas parce qu’un truc n’est pas très bien fait dans Duniter V1 qu’il faut faire pareil dans V2. :innocent:
Me trompe-je quand je dit que les deux seront confondus dans V2 ?

D’ailleurs, je suppose que les certifs en attente en piscine, ne seront pas reprises dans Duniter V2 ?

Non

1 Like

Tu parles de avant ou après le commit 6f4789bd8c8ee9e81cefe0a2ce6a3a72e6f38b41 ?

1 Like

Ah chouette, j’avais seulement regardé gdev.json, pas le code.

Ou @Paidge peut être ?

Si ça serait mieux. Si je devais le faire moi je comptais utiliser dex: Dex (Duniter DBs Explorer)

Je pense que @tuxmain et @HugoTrentesaux sont tout à fait capable de recoder dex de façon à générer un json qui contient les données dont tu à besoin @poka :slight_smile:

Non il faut prendre en compte uniquement la date d’émission, et calculer et la date d’expiration qui en découle, puis déterminer le numéro de bloc d’expiration à inscrire dans le genesis (sur une base de 6s par bloc), c’est pourquoi le script de migration des données doit connaître le timestamp prévisionnel de lancement du nouveau réseau.

En effet j’avais déjà prévu et codé ce besoin. Il suffit de remplacer "issuer" par ["issuer", blockNumber].

Ce qui donnerait par exemple (avec des nombres factices):

    "poka": {
      "balance": 10000,
      "certs": [
        ["cgeek", 321456],
        ["tuxmain", 413782],
        ..
      ],
      "pubkey": "5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn"
    },
2 Likes

Voilà je viens de finir la génération et formatage du genesis: https://git.duniter.org/pokapow/py-g1-migration/-/raw/master/gtest.json

Tout y est, les paramètres wot (à adapter là j’ai juste repris les valeurs de la gdev), et toutes les 9787 identités (même non membre), sauf leurs certifications (j’attends la requêtes wot-wizard qui va bien).
Vous pouvez voir le code, il est très simple, il s’exécute en 1.1 seconds chez moi environ.
Mais le plus gros du parsing sera l’ajout des certifications.

Ok c’est compris, je transformerai les dates en numéro de bloc relatif par rapport à la date de lancement.


Si quelqu’un veut utiliser dex pour faire tout ça allez y, ce sera mieux, mais en attendant je continue mon script python, c’est presque fini.


Par contre @elois, pour le moment on ne peut pas ajouter de simples portefeuilles à solde non null sans identité attaché au genesis, si ?

Il faudrait rajouter une map genre wallets au json genesis et sa prise en charge c’est ça ?

1 Like

Qu’est ce que tu appelles "balance" ?
Et ce que tu appelles "identités", ce sont les membres ?

balance c’est le solde de Ğ1.

Oui les membres, plus ceux qui ne sont pas membres mais qui ont une identité, si possible.

Les exclus et les révoqués ? Est-ce que tu comptes les nouveaux encore dans la piscine ?

Pour l’instant, WW ne s’occupe pas encore des données monétaires, donc pas de balance.

WW peut aussi fournir les diverses dates relatives aux certifications. J’essaierai demain de t’écrire la requête. Je suis trop fatigué ce soir.

2 Likes

Oui si ils sont identifiés correctement comme tel.

OK ça c’est bon j’ai autrement.

Génial merci Gérard !
Moi aussi je vais pas tarder, bonne nuit!

Cette requête :

{
  identities(status_list: [REVOKED, MISSING, MEMBER]) {
    status
    uid
    certs: sent_certifications {
      pending
      to {
        uid
      }
      validation: block {
        blockNb: number
        time: bct
      }
      expires_on
    }
    pubkey
  }
}

donne une réponse très longue dont voici un extrait :

{
    "data": {
        "identities": [
            {
                "status": "REVOKED",
                "uid": "Duarte",
                "certs": [],
                "pubkey": "GRBPV3Y7PQnB9LaZhSGuS3BqBJbSHyibzYq65kTh1nQ4"
            },
            {
                "status": "MISSING",
                "uid": "Ducatitude",
                "certs": [],
                "pubkey": "4PRz1cerPeTxwVwkAnBmz1gYXdmuQraNf3vjzabrU9jh"
            },
            {
                "status": "MEMBER",
                "uid": "duchesse",
                "certs": [
                    {
                        "pending": false,
                        "to": {
                            "uid": "avenarius"
                        },
                        "validation": {
                            "blockNb": 421431,
                            "time": 1620304372
                        },
                        "expires_on": 1682984325
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "gregoriev"
                        },
                        "validation": {
                            "blockNb": 438299,
                            "time": 1625561157
                        },
                        "expires_on": 1687990812
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "s00999"
                        },
                        "validation": {
                            "blockNb": 420047,
                            "time": 1619872000
                        },
                        "expires_on": 1682984325
                    }
                ],
                "pubkey": "6r95oF1XY4KbNcJudZkEDnnxKztrEeVbarE2nTTqJvoL"
            },
            {
                "status": "MEMBER",
                "uid": "Dujardin",
                "certs": [
                    {
                        "pending": false,
                        "to": {
                            "uid": "Canardargent"
                        },
                        "validation": {
                            "blockNb": 375087,
                            "time": 1605888539
                        },
                        "expires_on": 1666410110
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Chouchou83"
                        },
                        "validation": {
                            "blockNb": 558255,
                            "time": 1662911856
                        },
                        "expires_on": 1726023240
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "chris"
                        },
                        "validation": {
                            "blockNb": 397286,
                            "time": 1612800923
                        },
                        "expires_on": 1674703752
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "EleonoreBJ"
                        },
                        "validation": {
                            "blockNb": 369453,
                            "time": 1604157547
                        },
                        "expires_on": 1666410110
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Elouane"
                        },
                        "validation": {
                            "blockNb": 561044,
                            "time": 1663777570
                        },
                        "expires_on": 1726024179
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Pascal74"
                        },
                        "validation": {
                            "blockNb": 368103,
                            "time": 1603725101
                        },
                        "expires_on": 1666410110
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "PatManu"
                        },
                        "validation": {
                            "blockNb": 377877,
                            "time": 1606753631
                        },
                        "expires_on": 1669776065
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Tanagra"
                        },
                        "validation": {
                            "blockNb": 370858,
                            "time": 1604590280
                        },
                        "expires_on": 1666410110
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "tomval83"
                        },
                        "validation": {
                            "blockNb": 559651,
                            "time": 1663345053
                        },
                        "expires_on": 1726024179
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "valeriesoufflier"
                        },
                        "validation": {
                            "blockNb": 366787,
                            "time": 1603292628
                        },
                        "expires_on": 1666406057
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "VeroVey"
                        },
                        "validation": {
                            "blockNb": 372275,
                            "time": 1605022666
                        },
                        "expires_on": 1666410110
                    }
                ],
                "pubkey": "D3z61zsCEakWpq1wsM3DXh1r8BTquNPYLpcHQhdg2aas"
            },
            {
                "status": "MEMBER",
                "uid": "Duke",
                "certs": [
                    {
                        "pending": false,
                        "to": {
                            "uid": "Calypso"
                        },
                        "validation": {
                            "blockNb": 499174,
                            "time": 1644447957
                        },
                        "expires_on": 1707560904
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Cdrix"
                        },
                        "validation": {
                            "blockNb": 489359,
                            "time": 1641416861
                        },
                        "expires_on": 1704530492
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Emeuh31"
                        },
                        "validation": {
                            "blockNb": 369360,
                            "time": 1604126719
                        },
                        "expires_on": 1666003701
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Pascaleg"
                        },
                        "validation": {
                            "blockNb": 500610,
                            "time": 1644880469
                        },
                        "expires_on": 1707796491
                    }
                ],
                "pubkey": "Cy49SCD2S9x6KFc8Jf9hypAXHn2SiSKF5B3xsdSgeXt2"
            },
            {
                "status": "MISSING",
                "uid": "DumaB",
                "certs": [
                    {
                        "pending": false,
                        "to": {
                            "uid": "AlexAndra2606"
                        },
                        "validation": {
                            "blockNb": 420053,
                            "time": 1619874865
                        },
                        "expires_on": 1682973872
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Chaoun"
                        },
                        "validation": {
                            "blockNb": 380587,
                            "time": 1607600373
                        },
                        "expires_on": 1665694296
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Coquelicot"
                        },
                        "validation": {
                            "blockNb": 424447,
                            "time": 1621240560
                        },
                        "expires_on": 1682995405
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "DidierLoquin"
                        },
                        "validation": {
                            "blockNb": 376435,
                            "time": 1606302329
                        },
                        "expires_on": 1666003701
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "DMS"
                        },
                        "validation": {
                            "blockNb": 381981,
                            "time": 1608032721
                        },
                        "expires_on": 1667414031
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Dorian2009"
                        },
                        "validation": {
                            "blockNb": 377821,
                            "time": 1606735066
                        },
                        "expires_on": 1667413673
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "FD84"
                        },
                        "validation": {
                            "blockNb": 379212,
                            "time": 1607167574
                        },
                        "expires_on": 1668570183
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "jacquesG"
                        },
                        "validation": {
                            "blockNb": 428643,
                            "time": 1622565188
                        },
                        "expires_on": 1685321150
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "mathieu"
                        },
                        "validation": {
                            "blockNb": 470888,
                            "time": 1635681273
                        },
                        "expires_on": 1698794529
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "RomGuilb"
                        },
                        "validation": {
                            "blockNb": 370841,
                            "time": 1604585067
                        },
                        "expires_on": 1667697476
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "stridou"
                        },
                        "validation": {
                            "blockNb": 373457,
                            "time": 1605387206
                        },
                        "expires_on": 1667697817
                    }
                ],
                "pubkey": "94MXzSvFPNjj6zicir91onwnm1EGC8VNZCSdZujnJzmD"
            },
            {
                "status": "MEMBER",
                "uid": "Dunefrederique",
                "certs": [],
                "pubkey": "3RGVo2J3bXZxRvtZM4Kh7cCz1n95tT4guwS2QwyuL1zZ"
            },
            {
                "status": "MISSING",
                "uid": "Duracel",
                "certs": [],
                "pubkey": "5x1Wc8hjBxvra62pBz9ccviAhfrnDW8rpERdRYGL1m7P"
            },
            {
                "status": "MEMBER",
                "uid": "DurandSylvie",
                "certs": [],
                "pubkey": "7PVY7QDDM8oTngfKgoajXqfS8nbtWpwoqWkfFc2zb881"
            },
            {
                "status": "REVOKED",
                "uid": "Duraton",
                "certs": [],
                "pubkey": "9ad856NFt5kNqUkUzAXeBhGVAoJoZ1ATWqQvgjCzJRUP"
            },
            {
                "status": "REVOKED",
                "uid": "DustyFellow",
                "certs": [],
                "pubkey": "8kXygUHh1vLjmcRzXVM86t38EL8dfFJgfBeHmkaWLamu"
            },
            {
                "status": "MISSING",
                "uid": "DuWeab",
                "certs": [
                    {
                        "pending": false,
                        "to": {
                            "uid": "BolidoC"
                        },
                        "validation": {
                            "blockNb": 414283,
                            "time": 1618082650
                        },
                        "expires_on": 1681004367
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Freco"
                        },
                        "validation": {
                            "blockNb": 370494,
                            "time": 1604482896
                        },
                        "expires_on": 1666771475
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "lanoire"
                        },
                        "validation": {
                            "blockNb": 391225,
                            "time": 1610892281
                        },
                        "expires_on": 1674004817
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "pataclop"
                        },
                        "validation": {
                            "blockNb": 362067,
                            "time": 1601808072
                        },
                        "expires_on": 1664920454
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "Paulart"
                        },
                        "validation": {
                            "blockNb": 392673,
                            "time": 1611358243
                        },
                        "expires_on": 1674469688
                    },
                    {
                        "pending": false,
                        "to": {
                            "uid": "theobaldi"
                        },
                        "validation": {
                            "blockNb": 373787,
                            "time": 1605494131
                        },
                        "expires_on": 1666214078
                    }
                ],
                "pubkey": "A69LS3NsLYGt7BhcAHS5nhNiBLbZeLwSH2fcjNFKAVeA"
            }
        ]
    }
}

status : REVOKED, MISSING (exclu), ou MEMBER
pending : true (la certification est en piscine) ou false (elle est en blockchain)
validation : bloc de la prise en compte effective
expires_on : date d’expiration ; en enlevant 2 ans (63115200 s), on obtient la date d’enregistrement.

Si tu as besoin d’autres valeurs, demande moi, j’essaierai de te satisfaire.

Lorsque jessai de l’executer sur https://ww2.coinduf.eu/, j’ai cette erreur au bout de 2 minutes:

{
  "errors": [
    {
      "message": "Response.text: Body has already been consumed.",
      "stack": "graphQLFetcher/</<@https://ww2.coinduf.eu/:70:29\n"
    }
  ]
}