Question sur les formats des transactions

Bonjour,

Je cherche de l’aide pour comprendre le format des données issues de requêtes BMA sur les transactions. J’utilise la doc duniter-bma/API.md at master · duniter/duniter-bma · GitHub

Avec

tx/sources/[pubkey]

A quoi correspond le type D ou T ?

Avec

tx/history/[pubkey]

J’arrive pas à comprendre le contenu de inputs et outputs.
Par exemple :

"inputs": [
          "D:000A8362AE0C1B8045569CE07735DE4C18E81586:125"
        ],
        "outputs": [
          "5:SIG(8Fi1VSTbjkXguwThF4v2ZxC5whK7pwG2vcGTkPUPjPGU)",
          "95:SIG(HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk)"
        ],

J’arrive à faire manuellement des requêtes sur g1.duniter.org mais malheureusement via l’interface de Cesium, qui m’aiderait pour interpréter les données, j’ai un chargement infini.

Si quelqu’un à des informations pour compléter la doc, je suis preneur :slight_smile:

C’est le type d’origine des sources, pour y faire référence :

  • D : dividende universel
  • T : transfert

Dans un transfert, il y a des sources en entrée et des sources en sortie.
Les sources en sortie ont des conditions de déblocages, ici SIG, signifie que la signature de la clé publique permet de débloquer cette source.

OK merci pour les infos.
Pour être plus précis je cherche à extraire plusieurs données à partir d’une clef publique : le timestamp (ou date) de la transaction, la nature du transfert (entrée ou sortie du portefeuille), la clef publique de l’entité qui interagit avec.
Est qu’il est possible d’extraire facilement ces données à partir de l’API ?

Il y a la bibliothèque Python DuniterPy qui peut te faciliter la tâche pour faire ce que tu souhaites faire. Il y a peut-être des bibliothèques dans d’autres langages.

Peux tu m’en dire plus sur ce “chargement infini” ? Avec quelle version de Cesium ?
As tu essayé avec la dernière version 1.7 (sans le mode expert) ?

En effet dans la version précédente on pouvait tomber en timeout sur g1.duniter.org, sur /tx/sources, sans avoir de message d’erreur. J’ai corrigé cela.

De plus Duniter ne devrait plus avoir de timeout du tout :slight_smile: (en 1.9) avec un nouvel index. C’est en cours de test.

1 Like

J’arrive à nouveau à charger les données de transaction avec Cesium 1.7.0 (et Firefox à jour).
Est ce que tu serais prêt à me partager les codes de Cesium impliqués dans l’annuaire et les transactions ? J’ai du mal à me retrouver dans l’ensemble des fichiers de l’application.

Les TX sont chargée parle fichier tx-service.js (fonction load() ) dans www/js/
Pour l’annuaire ca doit etre wot-service.js (je fais ca de tête)
ces deux services appellent bma-service.js qui est responsable de lancer les requetes vers un endpoint BMA.

que cherches tu as faire au juste ?

Ou la norme de codage AngularJS était un peu compliquée. C’est beaucoup plus simple Angular 2+ … :slight_smile:

1 Like

Je suis en train d’étudier le code tx.service, c’est pas évident avec mon niveau de compréhension :sweat_smile:. Je bloque sur le procédé pour déterminer la variable amount.
Déjà est ce qu’il s’agit ici bien du montant en June de la transaction ?
C’est une des données que j’aimerai récupérer et je comprends pas où et comment elle est stockée dans l’objet transaction.

J’aimerai extraire un tableau de données avec trois entrées expéditeur, récepteur et montant d’une transaction à partir d’une clef publique.
Ce serait pour créer un outil de type force-directed graph (Force-directed graph component / D3 | Observable) à partir des transactions.Je reconnais que c’est un petit projet pour m’entraîner à dev.

L’idée plus générale c’est de chercher à comprendre le comportement économique des utilisateur-trices, notamment observer s’il y a des cycles dans le graphes ou s’il on est plus sur un modèle de distribution classique de blockchain avec des “genesis” adresses très puissantes (normalement non avec le DU).

Quand j’étudie une blockchain, j’ai l’habitude d’aller explorer les données sur les explorers (ex : www.subscan.io). Je suis étonné qu’il y ai pas d’outil de ce type avec Duniter.

Le montant d’une transaction est un concept qui n’existe pas pour Duniter.

Une transaction consomme des sources, qui sont soit des DU, soit des sorties de transactions précédentes. Le montant entrant est la somme des sources.

La transaction crée des sorties, qui ont un “script” qui détermine comment elles peuvent être débloquées. En général on utilise SIG(pubkey_destinataire). Il y a souvent une sortie de “change” qu’on se renvoie à soi-même car les sources d’entrée ne faisaient pas exactement le montant voulu.

La somme des entrées doit être égale à la somme des sorties.

Le document transaction est décrit dans le protocole DUBP : rfc/0009_Duniter_Blockchain_Protocol_V11.md · master · nodes / common / doc · GitLab

Si ça t’intéresse il y a quelques projets utilisant des force-directed graph layouts, mais pour la toile de confiance et non les certifications : wotmap, forceatlas2-rs, anim-wotmap

1 Like