Le projet
Dunitrust est une implémentation du protocole DUBP, le protocole technique actuellement implémenté dans le logiciel Duniter qui fait fonctionner la monnaie Ğ1 et sa monnaie de test associée ğ1-test.
L’objectif, à minima, est que le logiciel Dunitrust assure toutes les fonctionnalités permettant de faire fonctionner la Ğ1, ce qui veut dire qu’il pourrait remplacer totalement Duniter à terme (les 2 logiciels pourront également continuer a faire co-fonctionner la Ğ1 ensemble tant que des développeurs maintiendrons Duniter).
Comme son nom l’indique, Dunitrust est écrit en Rust, un langage moderne, safe by design et aussi performant que le C/C++ tout en étant plus expressifs que ces derniers.
la route est encore très longue avant la sortie d’une v1 de Dunitrust, notamment car nous faisons le choix de prendre le temps de faire les choses biens afin d’avoir un logiciel le plus fiable et optimisé possible.
Si les contributeurs qui ont rejoins le projet ces derniers mois y restent et montent en compétences, alors on peut raisonnablement espérer une v1 pour l’automne 2020 (rml16). Cette estimation n’a rien de contractuelle et pourra être repoussée autant que nécessaire, le temps d’atteindre une version stable incluant toutes les fonctionnalités nécessaires et suffisantes pour faire fonctionner la Ğ1.
L’équipe
Contributeurs actifs les 3 derniers mois :
@elois lead dev & archi technique
@HugoTrentesaux Développeur actif de WS2Pv2
@jsprenger Développeur actif non-spécialisé (en voie de spécialisation sur GVA)
@Lucas Récent contributeur non-spécialisé (vérification des blocs)
@ji_emme Développeur de GVA et de la commande blocks
D’autres contributeurs ont été actifs par le passé et reviendrons peut-être sur le projet quand il le pourront/souhaiteront, notamment @Inso, @tuxmain et d’autres.
L’implication de chaque contributeur est très variable selon ses possibilités et ses envies, ça peut aller de 15h/semaine dans mon cas a quelques heures tout les 3 mois, chacun fait ce qu’il peut et ce qu’il veut, nous sommes avant tout bénévoles
Envie de contribuer au développement de Dunitrust ?
prérequis
- Savoir déjà programmer dans un moins un langage (développeurs front acceptés).
- Avoir lu le rust book ou visionné la présentation du langage Rust par @nanocryk disponible sur mon instance peertube (ainsi que sur la chaine YT du rustkathon).
- Savoir utiliser git, je vous recommande notamment l’excellente formation vidéo de grafikart.
Une fois ses prérequis remplis, je vous propose une formation individuelle sur le projet Dunitrust (en vocal via mumble) au prix de 5DUĞ1 de l’heure, contactez moi en MP si intéressé
Une autre manière de rentrer dans le projet est de venir est de venir a un Rustkathon (hacakthon dédié à Dunitrust), il y en a 2 par an, le prochain sera les 5 et 6 octobre à Toulouse.
Vous pouvez également faire les deux (c’est même recommandé), dans tout les cas vous ne pouvez pas déroger aux prérequis cités au-dessus.
Envie de contribuer en tant que testeur ?
Pas besoin d’être développeur pour contribuer au projet, nous avons également besoin de testeurs. C’est encore un peu tôt, mais d’ici quelques mois nous publierons un guide pour le testeurs et feront un large appel a testeurs (notamment pour le jalon 0.3 pévu en novembre 2019).
La roadmap
- Jalon 0.3 [fin novembre 2019]
- Requetage pour combler trous de l’arbre des fork
- Migration de rust-crypto vers ring (pour remplacer openssl par rustls)
- Migration de la base de donnée de Rustbreak vers LMDB
- Sync WS2Pv2 + requetes blocks WS2pv2 (en cours par hugo)
- Résolution des regressions induites par migration LMDB (#170, #171, #172) (en cours par elois)
- Jalon 0.4 [juin 2020]
- Archivage des blocs qui sortent de la fenêtre de fork #174
- Tests d’indexation de la blockchain pour garantir la compatibilité avec Duniter
- Coverage CI + tests pour mieux couvrir l’existant
- Vérif. globale protocole DUBP + sync cautious
- module Client Indexer
- module GVA (API CLient)
- WS2Pv1 + WS2Pv2: rebond des user documents
- Vérif. globale protocole DUBP + sync cautious
- Jalon 1.0 [novembre 2020]
- module Mempool (+WS2Pv2: sync des mempool)
- module BlockGenerator
- module PoW
- Gestion de l’initialisation d’une monnaie (block genesis)
- interface graphique d’administration (variante dunitrust-desktop)
Plateformes cibles
L’objectif actuel est que Dunitrust soit livré a minima pour 3 plateformes :
- linux (64 bit)
- windows (64bit)
- armv7 (32bit)
Fiabilité et stratégies de test
Une des exigences du projet est d’assurer à 100% qu’il n’y aura aucune régression pour les utilisateurs de la Ğ1. Cela nécessite toute une stratégie de test qui sera présentée au Rustkathon d’octobre.
Le projet comporte déjà plus d’une centaine de tests automatisés et je compte et écrire encore plusieurs centaines afin de couvrir le plus de comportements possibles.
Désormais, tout nouveau développement s’accompagne nécessairement de tests associés. De plus, je favorise désormais l’approche TDD, que j’ai d’ailleurs appliqué pour le développement de l’algo de résolutiondes forks
je compte également automatiser le redéploiement de noeuds de test sur la g1-test a chaque modification de la branche dev, pour l’instant je fais cela manuellement.
J’ai notamment un nœud Dunitrust sur la g1-test qui est synchronisé depuis 164h non-stop (c’est actuellement un record car avant il manquais la résolution des fork donc le nœud se désynchronisait au 1er fork réseau, ce qui m’a permis de constater qu’il y en a plusieurs par jour mais on ne les voient pas car ils sont très court).
Licence et propriété
Le projet Dunitrust garanti a ses utilisateurs les 4 libertés logicielles via la licence libre AGPLv3.
Le projet Dunitrust appartient désormais officiellement a l’association Axiom Team co-fondée par @PiNguyen, @poka et d’autres membres de la Ğ1, il s’agit donc d’un projet collectif dont les objectifs sont fixés par les membres de l’association (dont je fais parti).
J’ai décidé de transférer la propriété du projet afin d’être cohérent avec ma volonté d’en faire un projet collectif qui appartiennent a la communauté Ğ1. Comme la communauté Ğ1 n’a pas d’existence juridique, j’ai choisi l’association fondée par Pi dans laquelle tout les membres de la Ğ1 sont les bienvenus