J’ai réalisé un prototype de GVA permettant de faire un paiement !
Prototype réalisé en Rust async avec async-graphql et warp (framework web utilisé également par le projet Deno).
Pour le moment ce prototype permet de :
- Consulter l’historique des transactions d’un compte
- Consulter les sources de monnaie d’un compte (UTXOs uniquement)
- Envoyer une transaction
- Souscrire à l’événement « réception d’une transaction par le serveur »
Attention peinture fraîche, c’est une version de dev (pre-alpha), accessible ici : https://g1.librelois.fr/gva
J’ai réalisé une petite présentation vidéo dans laquelle je fais un paiement « à la main » :
Réaliser ce prototype m’a permis d’explorer techniquement beaucoup de choses qui vont être un fondement pour la suite. Cela à nécessité notamment la migration de la DB SQLite des transactions (qui contenait à la fois les transactions en mempool et l’historique des transactions).
J’ai dû créer deux nouvelles DB :
- txs_mp_v2 : Une base de donnée contenant les transactions en mempool
- gva_v1 : une base de donnée dédiée à GVA contenant pour le moment l’historique des transactions ainsi qu’une indexation des UTXOs optimisée pour les clients (càd par compte plutôt que par identifier).
Le code source est disponible sur la branche gva-proto.
La prochaine étape est bien sûr l’indexation des dividendes universel, c’est plus compliqué car cela demande d’indexer au préalable la liste des comptes membres. J’ai déjà conçu les collections nécessaires dans la DB, reste à les remplir.
Concernant la pagination, je propose d’utiliser les spécifications officielles de graphql, c’est ce que j’ai mis en place pour la consultation des UTXOs.
Le schéma va bien évidemment être modifié selon les retours des dev des clients, c’est juste un 1ᵉʳ jet