Je viens de publier plusieurs merges au code de currency-monit.
Passage à Duniter 1.7
Currency-monit (CM) ne pouvais plus fonctionner sur la Ğ1 du fait de l’évolution du protocole Duniter. J’ai mis à jour la dépendance Duniter et ajouté du code permettant à CM de fonctionner à nouveau.
La principale incompatibilité de Duniter 1.7 avec CM est le stockage de la blockchain : dans Duniter 1.6, celle-ci était intégralement stockée dans SQLite tandis que seule la piscine utilise encore SQLite dans Duniter 1.7.
Nouvelle mécanique de stockage
Il m’a donc fallu trouver une parade. Le plus simple qui m’est venu à l’esprit : indexer localement dans CM la blockchain de Duniter avec SQLite. De cette façon, la plupart du code de CM reste inchangé (requêtes SQL).
La difficulté de la migration a donc résidé dans la création de cette BDD intermédiaire, locale à CM.
Désormais donc, CM indexe très régulièrement la blockchain de Duniter et crée sa propre BDD miroir aux fins d’affichage des statistiques de CM. L’indexation est incrémentale, et se fait à chaque fois que CM est sollicité par une requête HTTP si et seulement si un nouveau bloc est disponible.
A noter une nouvelle option en ligne de commande permettant de forcer CM à remettre à zéro sa base locale au démarrage : --reset-data
. Cette option est à utiliser en cas de fork insoluble (car la mécanique d’indexation prévoit la résolution de forks “classique” de Duniter).
Ajout de tests automatisés
C’est une grande nouveauté, sans laquelle je n’aurais pas pu mener cette migration aussi “vite”.
J’ai ajouté 2 tests intéressants :
- indexing : permet de tester la couche d’indexation Duniter → CM
- willMembers : permet de tester willMembers face à une blockchain Duniter éphémère (en mémoire)
Vous reconnaîtrez certainement la syntaxe des tests automatisés de Duniter.
Voilà de quoi permettre de pérenniser un peu plus Currency-Monit !
Filtrage par pseudo sur l’écran “Liste des membres”
Désormais il est possible de filtrer par pseudonyme sur cet écran :
Le but est d’atteindre rapidement un membre donné, mais aussi et surtout ne plus autoriser l’affiche de la liste intégrale des membres. Actuellement cet affichage coûte beaucoup trop cher en calcul CPU.
Déploiement de la nouvelle version
@Moul, saurais-tu la déployer ? Je n’ai pas particulièrement poussé de tags, tout est sur master. (edit cgeek : c’est bon je m’en suis occupé )
Il faudra de toute façon resynchroniser Currency-Monit sur la Ğ1 avant.