# Simplified Verification API

**URL:** https://forum.duniter.org/t/simplified-verification-api/3631
**Category:** Modules
**Created:** [16 November 2017 22:11 UTC](https://forum.duniter.org/t/simplified-verification-api/3631 "2017-11-16T22:11:57Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [22 January 2018 11:33 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/21 "2018-01-22T11:33:19Z")

</div>

Superbe ! C’est hyper clair 🙂

Je me pose une autre question : comment traiter le cas des recherches d’identités avec GraphQL ? (Recherche en piscine, hors-piscine, etc)

---

<div class="post-metadata">

### Author: ![nanocryk](https://forum.duniter.org/user_avatar/forum.duniter.org/nanocryk/32/4599_2.png) [@nanocryk](https://forum.duniter.org/u/nanocryk)
#### Post date: [22 January 2018 11:56 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/22 "2018-01-22T11:56:08Z")

</div>

Super ! Quand ta RFC sera assez avancée tu pourras créer une _Merge Request_ avec la mention “WIP:” pour que l’on puisse commenter facilement ton document.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [23 January 2018 10:50 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/23 "2018-01-23T10:50:19Z")

</div>

En adaptant la proposition de Inso en GraphQL, pleins de questions/solutions me chauffent le cerveau et je vais vous exposer ici ma vision d’une API client.

La **Blockchain** stocke des **Documents**.  
Cette suite de documents créent des événements qui sont en fait des **changement d’Etats**.  
Certains **états** sont déjà calculés et stockés dans la **Blockchain** (comme la **Masse Monétaire** dans un bloc avec DU).  
Certains **Etats** sont déjà calculés et stockés dans la **Base de données** (comme le solde des portefeuilles : **Balance** ).  
Certains **Etats** ne sont pas calculés et doivent l’être par le client à l’aide de l’ **Historique des Documents**.

Pour concevoir l’API, ils faut bien distinguer les **TYPES** de données dont le client a besoin.  
Ce sont surtout des **Etats**.

Donc la priorité est de lister les différents **Etats** des données.  
Si des **Etats** manquent dans la base de données de Duniter, le module Duniter de l’API peut s’occuper de les calculer dans une table dédiée de la **Base de Données**.

Le but est que le client ne doivent jamais recalculer lui même un **Etat** via l’historique des **Documents**.

La **Piscine** reçoit aussi des documents, et peut donc générer des **Etats** , mais souvent _incomplets_ ou _en attente_ et différents selon les noeuds. Pour moi les informations de la piscine sont à gérer à part. Avec des requêtes spécifiques.

Viendront ensuite les **Listes** de données (recherches, etc).

Dans le document RFC, pour commencer, je vais lister les **Etats** nécessaires au clients.  
Il y aura des **Etats** dédiés à l’affichage dans le client et non stockés dans Duniter, ne correspondant à aucun **Document** connu. On verra après comment les calculer côté serveur.

---

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [23 January 2018 10:59 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/24 "2018-01-23T10:59:09Z")

</div>

Tout à fait d’accord. C’est un peu ce que je décrivais dans mon post original, d’après moi il doit y avoir 2 BDD :

- La BDD en mode “flux” native à Duniter, de taille limitée (car nombre max d’utilisateur et donc de DU dans la monnaie). Elle contient les UTXO (sources de monnaie disponible) courantes, ainsi que l’état de la WoT, et la chaine de blocs (limitée en taille à l’avenir via un mécanisme de snapshot)
- La BDD en mode “archivage”, apportée par le module d’API client. Ce module étant optionnel, si la BDD d’archivage devient trop grosse, les installations sur raspberry pi pourraient éviter de l’installer par exemple. Cet archivage contient notamment les historiques de transactions, de DU créés, de destruction de monnaie, etc.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [23 January 2018 11:30 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/25 "2018-01-23T11:30:24Z")

</div>

Pour la seconde BDD, je vois plutôt un seul Etat par données à l’instant t, donc peu d’historiques, sauf si ceux de la BDD de flux sont trop long à extraire… Pour moi l’archive c’est déjà la Blockchain.

---

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [23 January 2018 13:45 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/26 "2018-01-23T13:45:20Z")

</div>

Justement, extraire ce flux de la BDD “flux” peut être long (c’est pour ça que plein de choses ont été retirées de BMA et que Sakia le fait maintenant manuellement… et que c’est super long) car il faut reparcourir toute la chaine à chaque requête :

- Les destructions de monnaie
- Les DU créés par une identité donnée
- etc.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [26 January 2018 19:12 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/27 "2018-01-26T19:12:17Z")

</div>

J’ai terminée la base de départ de la RFC, vous pouvez commentez l’améliorer, la modifier, etc.

J’ai ajouté un chapitre sur la seconde Base de données qui pour moi doit être en json (NoSQL).  
Sqlite permet de faire cela, comme PostgreSQL. On a un mini ElasticSearch à disposition dans un fichier Sqlite !

Je remets le lien, de plus il a changé :

> **[rfc/0003 RFC GraphQL API for Duniter Clients.md · graphql\_api\_rfc · nodes /...](https://git.duniter.org/nodes/common/doc/blob/graphql_api_rfc/rfc/0003%20RFC%20GraphQL%20API%20for%20Duniter%20Clients.md)**
>
> Documentation of the Duniter ecosystem. Provide protocol details, conventions and RFCs (Request For Comments). REPOSITORY MOVED HERE \>\>\> https://git.duniter.org/documents/rfcs

Pour le nom, j’hésite entre GVA (GraphQL Verification API) et GMA (GraphQL Merkle API)…

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [26 January 2018 19:16 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/28 "2018-01-26T19:16:40Z")

</div>

> [@vit](#):
>
> j’hésite entre GVA (GraphQL Verification API) et GMA (GraphQL Merkle API)…

Perso, j’avais déjà adopté GVA, et puis c’est mieux de faire rupture avec l’ancienne BMA, et je trouve que GMA c’est trop proche, certains vons croire que c’est la même chose, GVA fait rupture, on comprend clairement que c’est qqch de nouveau 🙂

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [26 January 2018 20:51 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/29 "2018-01-26T20:51:56Z")

</div>

Si je vous dit que par consonnance j’entends GPA, c’est gênant ?

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [26 January 2018 21:04 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/30 "2018-01-26T21:04:24Z")

</div>

> [@cgeek](#):
>
> par consonnance j’entends GPA, c’est gênant ?

😂 😂 haha non ça fait progressiste 😉

---

<div class="post-metadata">

### Author: ![kimamila](https://forum.duniter.org/user_avatar/forum.duniter.org/kimamila/32/185_2.png) [@kimamila](https://forum.duniter.org/u/kimamila)
#### Post date: [30 January 2018 17:52 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/31 "2018-01-30T17:52:28Z")

</div>

> [@elois](#):
>
> haha non ça fait progressiste

ben je comprends rien au sens du progrès, alors… ceux qui n’ont pas connu leur vrai mère comprendront… ☹

---

<div class="post-metadata">

### Author: ![kimamila](https://forum.duniter.org/user_avatar/forum.duniter.org/kimamila/32/185_2.png) [@kimamila](https://forum.duniter.org/u/kimamila)
#### Post date: [1 February 2018 18:02 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/32 "2018-02-01T18:02:25Z")

</div>

Pour info, il y a un application exemple GraphQL + sqlite : [https://github.com/mrblueblue/graphql-express-sqlite](https://github.com/mrblueblue/graphql-express-sqlite)  
J’ai testé et ca fonctionne plutot bien. Par contre il va falloir spécifier tous les types retourner, par chaque requete…

---

<div class="post-metadata">

### Author: ![stephane](https://forum.duniter.org/user_avatar/forum.duniter.org/stephane/32/2801_2.png) [@stephane](https://forum.duniter.org/u/stephane)
#### Post date: [4 March 2018 11:31 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/33 "2018-03-04T11:31:49Z")

</div>

A propos de la nouvelle API, y a t-il un moyen de savoir quand un nœud est offline?

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [4 March 2018 14:40 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/34 "2018-03-04T14:40:05Z")

</div>

> [@stephane](#):
>
> A propos de la nouvelle API, y a t-il un moyen de savoir quand un nœud est offline?

Oui je prévois un système de gestion avancés des status de chaque nœuds dans ws2p v2 ou 3, et dans l’idéal il faudra que la nouvelle api client relaye ces infos aux clients qui le souhaitent, mais cette nouvelle api client en est encore aux spec, et surtout je ne sais toujours pas qui va la coder, je pourrais aider pour l’interface avec ws2p mais je ne projette pas de dev cette nouvelle api client, j’ai déjà beaucoup trop d’engagements de dev compte tenu du temps dont je dispose !

Donc la vrai question est là, qui vas dev GVA ?

Pour info les spec se discutent ici : [WIP: RFC 3 : GraphQL API for Duniter Client (!3) · Merge requests · nodes / common / doc · GitLab](https://git.duniter.org/nodes/common/doc/merge_requests/3)

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [7 May 2018 08:02 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/35 "2018-05-07T08:02:48Z")

</div>

Un article très intéressant sur les différences entre une approche REST et GraphQL pour une API :

> **[GraphQL vs REST: Overview](https://philsturgeon.com/graphql-vs-rest-overview/)**
>
> A few months back I wrote a comparison between RPC and REST for Smashing Magazine, and now I want to talk about the differences between REST and GraphQL: the new kid on the block.
> 
> 
> GraphQL is incorrectly considered by some to be a "replacement" to...

---

<div class="post-metadata">

### Author: ![kimamila](https://forum.duniter.org/user_avatar/forum.duniter.org/kimamila/32/185_2.png) [@kimamila](https://forum.duniter.org/u/kimamila)
#### Post date: [9 May 2018 08:00 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/36 "2018-05-09T08:00:42Z")

</div>

Pourrait on en parler au RML11 ?  
Je pourrais vous faire un démo d’un projet sur lequel je travaille : application web avec des technos proche de celles de Cesium, mais en versions plus récentes (Ionic 4 + Angular JS 5), et avec du GraphQL (API JS cliente Apollo)

---

<div class="post-metadata">

### Author: ![Inso](https://forum.duniter.org/user_avatar/forum.duniter.org/inso/32/1229_2.png) [@Inso](https://forum.duniter.org/u/Inso)
#### Post date: [9 May 2018 08:32 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/37 "2018-05-09T08:32:46Z")

</div>

Oui ça serait bien qu’on se fasse une séance de discussion là dessus. Quitte à faire ça en parallèle d’un autre atelier technique.

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [9 May 2018 09:20 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/38 "2018-05-09T09:20:46Z")

</div>

> [@kimamila](#):
>
> Pourrait on en parler au RML11 ?
> 
> Je pourrais vous faire un démo d’un projet sur lequel je travaille : application web avec des technos proche de celles de Cesium, mais en versions plus récentes (Ionic 4 + Angular JS 5), et avec du GraphQL (API JS cliente Apollo)

> [@Inso](#):
>
> Oui ça serait bien qu’on se fasse une séance de discussion là dessus. Quitte à faire ça en parallèle d’un autre atelier technique.

Je vais en toucher mot vendredi matin car je ne vais pas recoder BMA dans duniter-rs et il me faudra bien une api client, donc je compte bien qu’on implémente directement une api GraphQL basée sur la RFC en cours de proposition, d’autant qu’il y a une crate rust mature pour GraphQL 🙂  
Par contre j’ai tellement d’autres priorités d’abord que je ne commencerai pas avant 2019, après si d’autres contributeurs me rejoignent ça pourra aller plus vite 😉

---

<div class="post-metadata">

### Author: ![Moul](https://forum.duniter.org/user_avatar/forum.duniter.org/moul/32/9145_2.png) [@Moul](https://forum.duniter.org/u/Moul)
#### Post date: [18 May 2018 18:32 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/39 "2018-05-18T18:32:26Z")

</div>

J’avais dû rater cet article. J’ai du être inspiré par un trou noir.

C’est super les réflexions que vous avez faites !

---

<div class="post-metadata">

### Author: ![Moul](https://forum.duniter.org/user_avatar/forum.duniter.org/moul/32/9145_2.png) [@Moul](https://forum.duniter.org/u/Moul)
#### Post date: [30 May 2018 13:38 UTC](https://forum.duniter.org/t/simplified-verification-api/3631/40 "2018-05-30T13:38:15Z")

</div>

Ça a donné quoi les discussions à la RML11 ?

[Previous page](https://forum.duniter.org/t/simplified-verification-api/3631.md?page=1)

[Next page](https://forum.duniter.org/t/simplified-verification-api/3631.md?page=3)
