Ce sujet sert à faire le point sur l’avancement de l’implémentation de Duniter-v2s, une réécriture de Duniter basée sur le framework Substrate.
La majeure partie du spectre fonctionnel de la Ğ1 est déjà implémentée, mais le spectre fonctionnel ne représente qu’une petite partie du travail. De nombreuses autres taches techniques sont a réalisées, et demandent beaucoup de travail.
Le premier jalon sera le lancement d’une 1ère monnaie de test basée sur duniter-v2s, sans migration, et le test intensif de cette 1ère monnaie de tests pendant plusieurs mois. Cette permière monnaie sera nommée ĞDev
.
Dans un 2ème temps nous pourrons commencer à préparer la migration de la ğ1-test, mais on en est encore loin.
Spectre fonctionnel
Implémenté
- Création d’identité
- Création des certificatons
- Expiration des certifications
- Renouvellement d’identité
- Révocation implicite des identités non-renouvelées
- Création du DU
- Réévalutation du DU
- Transfert de monnaie (en Ğ1 et en DU)
- Virements automatiques (en Ğ1 et en DU)
- sous-toile forgeron
Prévu
- Révocation explicite d’une identité
- règle de distance
- Atomic swap
Tests end2end cucumber
Toute la logique métier du runtime doit être testée, nous utilisons cucumber pour exprimer les scénarios de test en langage humain (anglais).
Il faut couvrir toutes les fonctionnalités par de nombreux scénarios de tests, une bonne manière de contribuer est de rédiger des scénarios de test, si vous souhaiter aider à cette tache, lisez ce README:
Écrire des scénarios de test ne suffit pas, il faut également écrire le code qui va interpréter les actions et assertions écrites dans les scénarios, mais ça peut être réalisé par une personne différente de celle qui écrit le scénario, c’est même tout l’intérêt.
Fonctionnalités couvertes
- Transfert de monnaie (partiellement)
- Création du DU (partiellement)
Notez bien: il existe également de nombreux tests unitaires et tests d’intégration, personnellement je me concentre sur ces derniers pour le moment, donc il y a de la place pour contribuer aux tests end2end cucumber.
Intégration continue et déploiement continu
Mis en place
- Formatage du code (rustfmt) et linter (clippy)
- Exécution des tests automatisés cucumber sur un nœud build en mode debug
- Dockerisation du binaire buildé en debug à chaque commit sur master
En cours
- Dockerisation du binaire buildé en mode release à chaque nouvelle version (tag git) → il manque juste la CI des releases
Prévu
- Automatiser la livraison d’un nouveau binaire (avec release note)
- Automatiser la livraison d’un nouveau runtime (avec release note)
Étalonnage des poids
Tout les extrinsics substrate doivent être étalonnés pour connaître leur temps d’exécution en fonction des paramètres en entrée, cela est nécessaire pour savoir quelle portion du bloc est remplie par chaque extrinsic. Ce « poid » représente en temps d’exécution en nombre de nanosocondes, il sert aussi de base pour le calcul des frais (si on les active).
Il faut également étalonner les hooks, c’est à dire tous les évènements qui se produisent automatiquement sans action d’un utilisateur, par exemple l’expiration d’une certification.
Extrinsics couverts
Aucun
Hooks couverts
Aucun
Documentation
Documenté
- Fonctionnement des tests d’intégration cucumber
Prévu
Ça va dépendre des besoins
Autres taches
De nombreuses autres petites taches sont nécessaires, mais difficile à classer.
Réalisé
Prévu
Le board sur le gitlab est plus à jour que ce post (mais en anglais), chaque ticket y est notamment priorisé et éventuellement placé dans un jalon :
D’autres taches sont également indispensables à la migration du la Ğ1 sur Duniter-v2s, mais ne sont pas gérées dans le projet Duniter-v2s en lui-même:
L’historisation de la blockchain
Duniter-v2s expose une API RPc qui ne renseigne que sur l’état courant de la monnaie pas sur l’historique des états passés. Il est donc nécessaire de mettre en place des serveurs d’indexation et d’historisation.
L’une des pistes les plus sérieuses serait d’utiliser Hydra, si vous aimez le typescript et GraphQL vous pouvez fortement aider la dessus.
@slaivyn avait commencé à tester Hydra il y a quleques mois, voir ici: Utilisation d'Hydra pour extraire des données typées - #6 par matograine
La migration des clients
Plusieurs logiciels clients ont pour projet de s’interfacer avec duniter-v2s:
- Cesium-v2 en Typescript, référent @kimamila
- Ğecko en Dart, référent @poka
- Tikka en Python, référent @vit
- Silkaj en Python, référent @Moul
Si j’oublie des projets, je m’en excuse, signalez-vous et je vous ajouterai
Le développement d’outils de visualisation et de statistiques
(rédaction à venir)
Autre
Vous voyez d’autres taches techniques nécessaires à la migration sur substrate ? Alors créez un sujet dédié sur ce forum (s’il n’existe pas déjà) puis indiquez-moi le lien pour que je l’ajoute à la liste