Currency-Monit : Monitoring d'une monnaie et de sa toile de confiance

Je viens de terminer de resynchroniser g1-monit (8 heures !). Le service est à nouveau disponible.

6 Likes

Merci cgeek.
A cette heure j’ai bien accès à “futurs membres” mais pas à “Membres”.
Je retente demain.

C’est un bug, j’essaierai de le corriger cette semaine.

edit : @Mententon03 en fait c’est un bug un peu aléatoire, il suffit de réessayer après qu’un nouveau bloc soit apparu en blockchain et alors ça peut marcher. Mais surtout ne pas s’exciter sur le bouton, sinon ça a de bonnes chances de planter :slight_smile:

1 Like

Nous atteignons de nouveaux records depuis les dernières versions stables, 1.7.17 notamment, avec 52 calculateurs différents dans la fenêtre courante !

On peut également observer que cette nouvelle hausse est précédée par un effondrement progressif depuis fin décembre dont les causes sont connues : renouvellement des certifications, bugs de synchro, bug sur la résolution de fork.

Mais également sur une semaine glissante, Remuniter voit même jusqu’à 67 calculateurs différents ! La tête de liste s’offre une rémunération sur un mois de 40 à 54 Ğ1 :slight_smile:

image

C’est là qu’on voit que le réseau technique reprend des couleurs, et ça fait plaisir à voir !

8 Likes

Ça fait un moment qu’on a pas eu ces statistiques.
Ce moment important en vaut bien un :
La chaîne Ğ1 vient d’être écrite par 200 identités différentes :partying_face: :fireworks: (par au moins un bloc).
Monit ne met plus à jour cette information, Césium quant à lui fournis cette information.

2 Likes

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. :wink:
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 :
image

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é :slight_smile: )

Il faudra de toute façon resynchroniser Currency-Monit sur la Ğ1 avant.

image

11 Likes

Félicitations, sacré boulot :clap:

1 Like

https://monit.g1.nordstrom.duniter.org de nouveau disponible, avec la nouvelle version.

7 Likes

Merci pour ce boulot !

Je vois deux bugs depuis cette migration :

2 Likes

Merci pour ce gros boulot, @cgeek !

Personne n’aurait un petit peu de temps pour nous mettre un bootstrap CSS la dessus, notamment pour les tableaux, c’est hyper simple et beaucoup (beaucoup) plus beau ?
Avec en prime :

  • un cache (de quelques minutes), pour éviter des temps de réponse trop long
  • une recherche de membre en JS pure, à partir de la page qui montre, par exemple, tous les membres. Il existe des lib JS toute simple pour faire cela. (Je suis en train de chercher celle que j’ai déjà utilisée…).
    EDIT : La lib JS est datatables (license MIT), avec qui on peut :
    • générer tout le HTML (toutes les lignes) (cad les balises classiques , ,
      ) comme avant, et la lib met en forme;
    • avoir une pagination - côté client;
    • avoir une recherche textuelle - côté client (ex: sur un pseudo);
    • déplacer les colonnes;
    • avoir un tri, etc.

je veux bien faire ça,
du coup j’ai cloné le dépot, mais pas moyen de trouver comment lancer le projet localement. j’ai essayé toutes les versions de node de la 8 à la 12, pas moyen de faire un npm install qui fonctionne.
il y a un readme.md et un README.md vide, mais ça ne dit pas comment initialiser le projet.
dans les premiers commits du dépot il y avait ce genre de doc, ce serait top que ça y soit de nouveau présent.
voici mes logs de l’install par exemple sur node v10.20.1 et npm v6.14.4

https://pastebin.com/Fa4XATWp

2 Likes

C’est un module Duniter que tu dois installer sur un nœud Duniter.
Tu peux l’installer depuis l’interface web de Duniter ou avec duniter plug

dac.
alors j’ai pris le dépot duniter typescript, suis passé sur la branche dev, mais plus moyen de faire un “yarn”.
j’ai fait un rustup update, mais rien n’y fait.

yarn install v1.22.4
warning npm-shrinkwrap.json found. This will not be updated or respected. See https://yarnpkg.com/en/docs/migrating-from-npm for more information.
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
[4/5] Linking dependencies...
warning "ddos > response > bl@0.7.0" has unmet peer dependency "stream-browserify@*".
warning " > eslint-plugin-mocha@4.8.0" has incorrect peer dependency "eslint@^2.0.0 || ^3.0.0".
warning " > typedoc-plugin-sourcefile-url@1.0.4" has incorrect peer dependency "typedoc@>=0.14.0".
[5/5] Building fresh packages...
[1/4] ⠐ duniteroxyde
[2/4] ⠐ leveldown
[3/4] ⠐ sqlite3
error /var/www/html/duniter/node_modules/sqlite3: Command failed.
Exit code: 1
Command: node-pre-gyp install --fallback-to-build
Arguments: 
Directory: /var/www/html/duniter/node_modules/sqlite3
Output:
node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using node-pre-gyp@0.11.0
node-pre-gyp info using node@12.11.0 | linux | x64
node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp info check checked for "/var/www/html/duniter/node_modules/sqlite3/lib/binding/node-v72-linux-x64/node_sqlite3.node" (not found)
node-pre-gyp http GET https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.6/node-v72-linux-x64.tar.gz
node-pre-gyp http 403 https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.6/node-v72-linux-x64.tar.gz
node-pre-gyp WARN Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.6/node-v72-linux-x64.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for sqlite3@4.0.6 and node@12.11.0 (node-v72 ABI, glibc) (falling back to source compile with node-gyp) 
node-pre-gyp http 403 status code downloading tarball https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.6/node-v72-linux-x64.tar.gz 
gyp info it worked if it ends with ok
gyp info using node-gyp@5.1.0
gyp info using node@12.11.0 | linux | x64
gyp info ok 
gyp info it worked if it ends with ok
gyp info using node-gyp@5.1.0
gyp info using node@12.11.0 | linux | x64
gyp info find Python using Python version 3.7.5 found at "/usr/bin/python3"
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args   '/home/tykayn/.nvm/versions/node/v12.11.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/var/www/html/duniter/node_modules/sqlite3/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/tykayn/.nvm/versions/node/v12.11.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/tykayn/.cache/node-gyp/12.11.0/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/tykayn/.cache/node-gyp/12.11.0',
gyp info spawn args   '-Dnode_gyp_dir=/home/tykayn/.nvm/versions/node/v12.11.0/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/tykayn/.cache/node-gyp/12.11.0/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/var/www/html/duniter/node_modules/sqlite3',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info ok 
gyp info it worked if it ends with ok
gyp info using node-gyp@5.1.0
gyp info using node@12.11.0 | linux | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make : on entre dans le répertoire « /var/www/html/duniter/node_modules/sqlite3/build »
  ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3260000/sqlite3.c
/bin/sh: 1: python: not found
make: *** [deps/action_before_build.target.mk:13: Release/obj/gen/sqlite-autoconf-3260000/sqlite3.c] Error 127
make : on quitte le répertoire « /var/www/html/duniter/node_modules/sqlite3/build »
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/tykayn/.nvm/versions/node/v12.11.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:210:5)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Linux 5.3.0-46-generic
gyp ERR! command "/home/tykayn/.nvm/versions/node/v12.11.0/bin/node" "/home/tykayn/.nvm/versions/node/v12.11.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/var/www/html/duniter/node_modules/sqlite3/lib/binding/node-v72-linux-x64/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/var/www/html/duniter/node_modules/sqlite3/lib/binding/node-v72-linux-x64" "--napi_version=5" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v72"
gyp ERR! cwd /var/www/html/duniter/node_modules/sqlite3
gyp ERR! node -v v12.11.0
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok 
node-pre-gyp ERR! build error 
node-pre-gyp ERR! stack Error: Failed to execute '/home/tykayn/.nvm/versions/node/v12.11.0/bin/node /home/tykayn/.nvm/versions/node/v12.11.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/var/www/html/duniter/node_modules/sqlite3/lib/binding/node-v72-linux-x64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/var/www/html/duniter/node_modules/sqlite3/lib/binding/node-v72-linux-x64 --napi_version=5 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/var/www/html/duniter/node_modules/sqlite3/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:210:5)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
node-pre-gyp ERR! System Linux 5.3.0-46-generic
node-pre-gyp ERR! command "/home/tykayn/.nvm/versions/node/v12.11.0/bin/node" "/var/www/html/duniter/node_modules/sqlite3/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /var/www/html/duniter/node_modules/sqlite3
node-pre-gyp ERR! node -v v12.11.0
node-pre-gyp ERR! node-pre-gyp -v v0.11.0
node-pre-gyp ERR! not ok 
Failed to execute '/home/tykayn/.nvm/versions/node/v12.11.0/bin/node /home/tykayn/.nvm/versions/node/v12.11.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/var/www/html/duniter/node_modules/sqlite3/lib/binding/node-v72-linux-x64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/var/www/html/duniter/node_modules/sqlite3/

y’a un canal de messagerie instantanée (celui sur matrix.org) pour du support histoire que je ne pollue pas le topic ?

@tykayn utilise toujours node v10 stp, c’est la version de node pour la branche dev de Duniter.

Ici tu a une erreur car sqlite a déjà été prébuildé pour une version de node différente, supprime ton dossier node_modules et rebuild tout avec la même version de node (en v10.x.y)

nickel, ça fonctionne avec une version 10.
et pour ajouter un plugin donc je lance
« node bin/duniter plug duniter-currency-monitor »
ça ne me renvoie rien :confused:

y’a pas possibilité de lancer un REPL comme pour duniter-ui ?

1 Like

Je viens de rajouter les instructions dans la documentation.

J’ai déjà pu échanger avec tykayn par MP et le débloquer, cette procédure est donc testée :slight_smile:

3 Likes

Super,
hop un peu de preview d’avancement:
Screenshot_2020-04-25 g1-monit à propos

Screenshot_2020-04-25 g1-monit listes des membres

5 Likes

C’est beau ! On dirait du veau ! :astonished:

C’est important une belle interface, ça attire du monde !

1 Like

Sur la page d’accueil, vu à quel point @cgeek a repris le projet, (et merci infiniment pour ça d’ailleurs) il me semblerais juste de le placer a minima en co-auteur :slight_smile:

2 Likes

oui, ya probablement d’autres gens cachés dans les commits aussi :slight_smile:

avancement :
lancement du currency monitor localement avec « npm start », syncro de blockchain avec « npm run sync » pour quelques derniers blocks, « et npm run sync-full » pour l’intégralité. et encore j’ai pas l’impression d’avoir les blocks les plus récents.
dépendance à une version de node en particulier spécifiée dans le package json.

integration de bulmacss, ajout des classes pour les inputs et selects, petite refactorisation des vues et des fichiers publics, non dépendance à un site tiers pour les assets, adaptation aux petits écrans, fixation de l’overflow sur les tables, couleurs plus pastel.
tableaux triables avec un clic sur leur en-tête, à adapter pour la page des membres.

j’avance pas très vite parce que Y’a pas de REPL et que j’ai encore du mal à saisir l’archi des fichiers.
ce que j’ai fait n’est donc pas super facile à maintenir.
si j’ai la foi ce sera pour une prochaine contrib.

il faut encore que j’organise bien en colonnes responsive les éléments qui peuvent se présenter mieux.

et sinon j’ai quelques grosses lenteurs sur la page des membres qui permet de naviguer dans les certifications.
faut dire que ça affiche énormément de donnés.

4 Likes