Présentation (et premières questions)

Bonjour à tous,

Je souhaite m’impliquer dans ce que je pourrais appeler les TL (Technologies Libres = open source + noeuds décentralisés + liberté à chacun d’instancier son noeud et contribuer au service)
J’ai récemment découvert la monnaie libre que je trouve extrêmement intéressante : en plus d’être en technologie libre, il y a la toile de confiance, et la reprise de la souveraineté monétaire.
Je pense que je développerai tout ça davantage quand je me présenterai sur le forum principal.

Ainsi je souhaiterais contribuer à la Ğ1.
J’ai des compétences en analyse de données, en langage Python (en particulier les librairies utilisées pour la data science), en administration Linux. Plus jeune, j’ai fait du langage C, un peu de programmation réseau, de PHP / MysQL. Je connais le SQL. A un moment j’ai codé une petite appli en react native avec un backend en Python (API Flask).
Je m’y connais en Machine Learning.
Je n’ai jamais utilisé GIT dans un projet à plusieurs pour l’instant, juste pour une utilisation basique seul. Je n’ai jamais contribué à un projet libre auparavant.
Je n’y connais rien techniquement en blockchain pour l’instant (à part quelques notions de base : le principe de cryptographie asymétrique, le principe de chaîne de blocs sur lesquels on ne peut pas revenir en arrière, …)
Je ne connais pas GraphQL
Je dirais que j’ai une bonne culture générale en informatique et data science, et une bonne capacité/volonté d’apprentissage sur les sujets qui me passionnent.
Et la Ğ1 est bien partie pour me passionner !

Voici comment je souhaiterais contribuer :

  1. Mettre à disposition un noeud Duniter, contribuer à la création monétaire => J’ai mis en place le noeud g1.analysons.com (pour l’instant sur la v1 de production, mais par la suite je serais aussi partant pour mettre à dispo un noeud de test pour Duniter v2s)

  2. Réalisation d’analyse de données / outils d’analyse de données sur la Ğ1 : par exemple, dans un premier temps, j’aimerais sortir les informations suivantes : valeur moyenne / écart type du montant d’une transaction, pourcentage de personnes qui font une première transaction avant d’être certifiées, nombre moyen de personnes avec qui les utilisateurs font des transactions, quantité moyenne de masse monétaire qui circule vs « épargne », etc… avec évolution graphique de ces données au cours du temps. Ce ne sont que des exemples. Pour cela, j’aimerais bien pouvoir accéder à (ou me construire) une source de données qui contienne toutes les transactions de tous les membres (DU compris), que je puisse ensuite explorer et consolider par dates.

  3. Une fois que les 2 premiers points m’auront permis de rentrer un peu dans la Ğ1 (et de m’initier un peu à la blockchain d’un point de vue utilisateur qui consulte les données), pourquoi pas me mettre sérieusement à la blockchain (ça m’intéresserait de rentrer dedans et d’apprendre) et contribuer à Duniter v2s à l’occasion du passage sur Substrate, en me mettant au Rust. Ce sera à voir en fonction de mon envie et du temps disponible…

Ensuite concernant mes questions, je vais les mettre ci-dessous mais dites moi s’il faut que je les déplace dans une autre partie du forum :

  • Mon noeud duniter v1 a déjà crashé plusieurs fois, est-ce que vous avez déjà constaté ça ou c’est juste moi ? J’ai mis en place un auto restart. Je peux vous tenir au courant si ça recommence. Pour l’instant je n’ai pas identifié de point commun entre les différents crash dans les logs duniter. Pour l’un des crash, j’ai : « info: Generating proof-of-work with 6 leading zeros followed by [0-1]… (CPU usage set to 50%) for block#542417 FCHCfC » juste avant le crash.

  • Concernant les analyses de données : est-ce que vous avez des conseils / liens / docs / API à utiliser pour commencer ? Globalement j’ai vu qu’il y a plusieurs possibilités pour accéder aux données :
    . Les noeuds data (par exemple g1.data.presles.fr), mais je ne sais pas si les données disponibles sont assez détaillées pour ce que je souhaite faire
    . L’API Python me semble assez pratique : elle me permet de charger toute la blockchain (from duniterpy.helpers.blockchain import load) : je pense que je vais commencer comme ça.
    . Les db sqlite sur le noeud duniter : en fait c’est surtout le fichier txs.db qui m’intéresse, mais par contre je n’ai pas les DU ni l’ensemble des blocs, j’ai juste les transactions. Est-il possible de faire en sorte que duniter stocke les blocs dans les db sqlite ? Sachant que la table block de duniter.db est vide.
    . L’API GVA, mais je ne connais pas graphql… Si je devais l’utiliser j’aurais besoin d’apprendre un minimum graphql et de visualiser facilement les champs que je peux récupérer (par exemple j’ai trouvé cet outil pour visualiser graphiquement un schema, mais ça ne me suffit pas pour comprendre comment construire mes requêtes graphql : GraphQL Voyager)
    . L’api HTTP : doc/HTTP_API.md · dev · nodes / typescript / duniter · GitLab
    . Le Duniter DB explorer mais je vais éviter car gros warning sur le changement de structure de la DB

  • Est-ce que vous auriez les règles que je dois suivre pour reconstituer les transactions de chaque utilisateur (DU compris), et le solde de chaque utilisateur arrêté par jour, en faisant un scan de la blockchain ? Sauf s’il y a plus simple bien sûr.
    Il me semble que pour les transactions hors DU, c’est relativement simple : il faut juste isoler les transactions de chaque utilisateur dans le cas de virements vers plusieurs personnes, et faire attention d’enlever le « reste » qui est envoyé à soi même. Y a-t-il d’autres règles ?
    Par contre comment faire pour reconstituer les DU nominativement par membre et par jour ? Peut-on les récupérer quelque part, ou bien faut-il scanner toutes les certifications (certs) ainsi que les leavers, revoked et excluded, de façon à ne comptabiliser que les DU des membres certifiés ?

Bon voila, ça fait beaucoup de questions, je n’attends pas forcément de réponse sur tout, d’autant que certaines de mes questions nécessitent peut-être de longues explications ou que je clarifie certains de mes besoins… je peux aussi me débrouiller pour trouver certaines infos ou potasser des docs.

Merci de votre aide et bonne fin de week-end !

4 « J'aime »

Bienvenue à toi,

Le développement de cette API cliente pour Duniter v1 est abandonnée.

1 « J'aime »

Bonjour @francoislibre , et bienvenue parmi nous :smiley:

Voici quelques réponses:

Moi aussi j’ai ce problème, j’ai mis en place un auto restart toutes les 24H. Je ne sais pas quels sont la ou les causes et ne compte pas y passer du temps, car ce n’est pas bloquant et que Duniter v1 va être abandonné.

L’api BMA : doc/HTTP_API.md · dev · nodes / typescript / duniter · GitLab

L’api python utilise BMA sous le capot :wink:

Pour les autres questions je laisse d’autre donner plus de détails, mais tu es déjà sur la bonne piste :slight_smile:

1 « J'aime »

Super, j’ai plein de projets pour ce genre de profils, surtout que tu as l’air de t’intéresser aux transactions alors que pour l’instant nous avons surtout étudié la toile de confiance :smiley_cat:

D’abord quelques points d’entrée :

Ensuite, il y a déjà eu une étude qui compare le graphe induit par les transactions incluant au moins un membre et la toile de confiance, mais elle date de 2019 (https://arxiv.org/abs/1911.10792 [1911.10792] Do you trade with your friends or become friends with your trading partners? A case study in the G1 cryptocurrency). Depuis, la toile de confiance a beaucoup grandi et l’économie en Ğ1 encore plus. Je pense que ce serait intéressant de regarder plus en détail quel est le lien entre la densité de la toile et l’activité économique. Voilà une application qui pourrait faire bon usage du machine learning :

  1. utiliser les données de géolocalisation des datapods Cesium+ concernant les comptes membres et les comptes simple portefeuilles (données mises en cache sur Ğ1 stats pour les besoins de la https://carte.monnaie-libre.fr/)
  2. utiliser les certifications entre comptes membres et les transactions entre tous les comptes
  3. apprendre à reconstruire la geoloc de chaque compte en minimisant la distance (géodésique ou travel distance par ex) entre position prédite et position déclarée (on pourrait faire du reinforcment learning en contactant directement les utilisateurs pour améliorer le dataset) en se basant sur le graphe dynamique (je pense que le critère dynamique est important ici, par exemple, j’ai déménagé de Paris à Toulouse, la geoloc prédite doit plutôt se baser sur les certifications / transactions récentes) (on ne dispose pas d’historique de géolocalisation mais ça ne me semble pas problématique)
  4. afficher la densité de transaction en fonction de la densité de comptes au km²

Voilà. Si tu veux on peut se prévoir un appel en visio pour discuter de ça et du reste de l’écosystème logiciel (utilité de GraphQL et écosystème v2).

2 « J'aime »

Merci @elois et @HugoTrentesaux pour vos réponses et merci @HugoTrentesaux pour ces premiers éléments très intéressants !

Oui je serais bien preneur d’une visio dans laquelle dans un premier temps tu pourrais m’en dire plus sur les data déjà disponibles, comment reconstituer les transactions, … histoire que j’essaye de faire un peu d’exploration de données.

Si tu as des dispos cette semaine, je suis dispo en soirée. Sauf ce week-end où je ne suis pas dispo.

A bientôt

1 « J'aime »